免责声明:金色财经所有资讯仅代表作者个人观点,不构成任何投资理财建议。 举报

    创宇区块链|小缺陷大损失 GYM Network 何至于此

    前言

    北京时间 2022 年 6 月 8 日,知道创宇区块链安全实验室 自动数据监测工具监测到 BSC 链上 NFT 项目 GYM Network 因 "Public depositFromOtherContract" 权限控制问题被攻击,损失包括 7475 枚 BNB,共计约 216W 美元,目前已将兑通过 DEX 换 70W 美元的 ETH 通过 Celer 跨链到以太坊,2000 枚BNB 利用 BSC-Tornado 进行混币,余下 3000 枚 BNB 在攻击者地址。

    知道创宇区块链安全实验室 第一时间跟踪本次事件并分析。

    v2-53a786dd7aef75cf521e93cac6c2bd63_720w.jpg

    基础信息

    被攻击合约 :0x0288fba0bf19072d30490a0f3c81cd9b0634258a

    攻击者地址:0xB2C035eee03b821cBe78644E5dA8B8eaA711D2e5

    攻击合约:0xcD337b920678cF35143322Ab31ab8977C3463a45、0x68b5f1635522ec0e3402b7e2446e985958777c22

    tx:0xfffd3aca0f53715f4c76c4ff1417ec8e8d00928fe0dbc20c89d875a893c29d89

    GymSinglePool 代理合约: 0xa8987285e100a8b557f06a7889f79e0064b359f2

    漏洞分析

    项目方在 GymSinglePool 合约中实现过程中对于 0x0288fba0bf19072d30490a0f3c81cd9b0634258a#depositFromOtherContract 函数缺少了权限控制,导致攻击者能够通过该函数调用内部 _autoDeposit 函数实现零消耗质押:

    v2-1dc3fead4e982d15e7615caaabcf98f2_720w.jpg

    对于应该开放给用户的质押内部函数是 _deposit 函数,该函数实现了对于token 的审批传入,如下图所示:

    v2-e42eb0989c553501f21b44128c37813a_720w.jpg

    对应的 _autoDeposit 函数则实现了"特权"质押,即不需要转入 Token 进行质押。同时该函数直接暴露给了用户,函数对比如下:

    v2-bab482eb0e32c6a14dd59b642f10520e_720w.jpg

    攻击流程

    攻击者为了防止链上 MEV 和抢跑机器人,将合约进行了分步部署执行,同时部署/调用了多次以完成对 GymNetwork 合约 (0x3a0d9d7764FAE860A659eb96A500F1323b411e68) 中的 GYMNET Token 完全抽离,以其中一笔部署调用为例:

    1. 部署合约后调用 depositFromOtherContract 实"特权"质押,对应0xfd4a2266 方法:

    v2-0459081369840abca1189f56a8684d15_720w.jpg

    内部调用细节如下:

    v2-05d4aa4c5a4e49aabfb0e89ae1ee8fd5_720w.jpg

    2. 调用 0x30649e15 实现对上一步特权质押的 Token 回撤:

    v2-644a2e26847e95a5cf6b8c5c1a266f15_720w.jpg

    3. 利用 0x1d111d13 函数售出获取到的的 GYM-Token:

    v2-fc7fcf67a7a0b6858d2831119c4ed27f_720w.jpg

    重复多次"特权"质押--回撤--售出步骤,攻击者最终获取到 7475 枚 BNB :

    v2-5ead3a57ca97983c730ebada94b09580_720w.jpg

    为了抑制抢跑,攻击者将添加质押和回撤进行了步骤分离,两个步骤均为核心操作,同时刻意提高添加部分步骤的 Gas Price 为 15/20gwei, 可见攻击者是有意为之。

    溯源处置

    本次攻击原因是项目方实现的特权函数权限控制不当,在攻击发现的 1 小时后项目方将 GymSinglePool 代理合约的逻辑合约进行了多次修改,为其添加了权限控制:

    v2-d99ca5bae2ef797b8d5bbaafa4994967_720w.jpg

    并在 20 分钟后对逻辑合约添加了紧急账户处置函数:

    v2-4d0867b6d3d526ad1ee4e9e91d3f8efc_720w.jpg

    而对于项目方 Deployer 地址分析,其部署的多个 GymSinglePool 合约根据追踪仅在两天前部署的 GymSinglePool 合约中存在漏洞,4 天前的合约则不存在此函数:

    v2-aa39ba686e1fee921f541d5cb685d67a_720w.jpg

    同时代理合约对应的逻辑合约被升级为漏洞合约的事件发生在在 2 days 13 hrs ago:

    v2-567e8a91084e7cce3dff3989f57f58fc_720w.jpg

    攻击者的资金准备 (From Tornado) 则在约 6 小时以前,攻击者的身份也值得令人深思。

    总结

    虽然只是一处小的控制缺陷,却导致了数百万美元的损失。项目方的处置虽较为及时,漏洞导致的损失却难以挽回。该类型漏洞在审计过程中很容易被发现并将归纳到逻辑缺陷/不安全的外部调用,各项目方在开发和审计流程上切莫大意。

    jinse.com
    好文章,需要你的鼓励
    jinse.com
    好文章,需要你的鼓励
    参与评论
    0/140
    提交评论
    文章作者: / 责任编辑: 我要纠错

    声明:本文由入驻金色财经的作者撰写,观点仅代表作者本人,绝不代表金色财经赞同其观点或证实其描述。

    提示:投资有风险,入市须谨慎。本资讯不作为投资理财建议。

    金色财经 > 知道创宇区块链安全实验室 > 创宇区块链|小缺陷大损失 GYM Network 何至于此
    • 寻求报道
    • 金色财经中国版App下载
      金色财经APP
      iOS & Android
    • 加入社群
      Telegram
    • 意见反馈
    • 返回顶部
    • 返回底部