DigiCurrency 板


LINE

图文拆解:DeFi 平台 Balancer 遭骇客攻击的全过程 (BAL) 6月29日凌晨02时03分起,最近因「借贷即挖矿 Yield Farming」模式而备受关注 DeFi平 台Balancer上的STA和STONK两个ERC20通缩代币池遭到了骇客攻击,共计损失了超50万美 元。 (背景补充:Defi突发警示|骇客重现闪电贷手法,耗尽 Balancer 资金池超过 50 万美 元资产 (Bal)) PeckShield安全人员介入分析後,迅速定位到问题的本质在於,Balancer上的通缩型代币 和其智能合约在某些特定场景不兼容,使得攻击者可以创建价格偏差的STA/STONK流通池 并从中获利。 此次骇客实施攻击共计分了四个步骤,具体而言: 1)攻击者通过闪电贷从dYdX 平台借出了104,331 个WETH; 2)攻击者反复执行swapexactMountin() 调用,直至Balancer 拥有的大部分STA 代币被 消耗殆尽,进而开始下一步攻击。最终Balancer 仅仅剩余0.000000000000000001 个STA 。 3)攻击者利用STA 代币和Balancer 智能合约存在的不兼容性即记帐和余额的不匹配性实 施攻击,将资金池中的其他资产耗尽,最终共计获利价值523,616.52 美元的数字资产。 4)攻击者 偿还从dYdX 借出的闪电贷,并卷走了攻击所得的数字资产。 接下来的篇幅中,我们将逐步解析骇客在该笔闪电贷交易 (http://oko.palkeo.com/0x013be97768b702fe8eccef1a40544d5ecb3c1961ad5f87fee4d16 fdc08c78106/) 中实施的攻击行为。 Balancer 遭骇客攻击全过程技术拆解 图解黑客攻击全流程 图解骇客攻击全流程 第一步:闪电贷 FlashLoan 从dYdX 闪电贷104,331 WETH,这部分熟悉DeFi 借贷模式的读者应该都比较清楚,此处不 再赘述。 第二步:清空Balancer 的STA 资产 攻击者通过多次swapExactAmountIn() 调用清空了Balancer 的STA 资产,为下一步实施 攻击做准备。值得一提的是,我们发现合约代码中每次能够兑换的资产数额其实有上限, 然而狡猾的攻击者预先计算了可兑换的WETH 最大数额,并巧妙的让Balancer 只剩了 0.000000000000000001 STA。 由於Balancer 资金池(BPool)各资产间存在“动态平衡”原理,仅剩接近於0 的STA 会 拉高STA 的价值,使得任何人都可以用1 STA 换到大量的其他数字资产。 第三步:攻击获利 经过前两个准备步骤之後,攻击者是时候展现真正技术了! 第三步 :攻击获利图示上 第三步 :攻击获利图示上 承上所述,攻击者通过swapExactAmountIn() 函数将 0.000000000000000001 STA 发送到 BPool,以极高的价值差,立即兑换出了30,347 个WETH,实现了获利。 而此时,BPool 的内部记帐机制 _records[STA] 在BPool 真正收到 0.000000000000000001 STA 之前先加了1(注:此後攻击者会用gulp()对该数值进行重置 )。 第三步:攻击获利图示下 第三步:攻击获利图示下 另外我们发现,在swapExactAmountIn() 的底部,_pullUnderlying() 尝试从攻击者端收 集相应消耗的STA。然而,由於STA 转帐时还会烧掉1% 的手续费,实际BPool 是收不到任 何STA 的。 这样就使得BPool 的实际STA 余额和内部记帐产生不匹配。 接下来是最有趣的一部分,攻击者调用gulp()不断重置_records[STA],使得BPool中始终 保持0.000000000000000001个STA。 因此攻击者可以用极高价的0.000000000000000001个STA将流通池中的WETH、SNX、LINK等 其他资产消耗光。 第四步:偿还闪电贷 最终,如上图所示,攻击者偿还了从闪电贷借出的104,331个WETH。 建议 此次攻击事件再次暴露了DeFi 可组合性存在的兼容性风险。此前不久,Uniswap 和 Lendf.Me 两个平台就因和ERC777 标准的兼容性问题,产生了非常严重的骇客攻击事 件 。 需要警醒的是,在未来DeFi 行业类似的骇客攻击行为或许会屡见不鲜。 如果问该怎样才能规避这类攻击事件的发生呢?或许有两个优化调整思路: 1)STA/STONK在执行transfer()或transferFrom()时,当转帐数额不足以支付手续费时, 应该直接回滚或者返回False 2) Balancer应该在每一次transferFrom ()函数调用後检查BPool的余额。 当然,任何安全事件事後采取措施补救都无法弥补已经产生的损失,我们相信最好的解决 方案还是事前防备。 DeFi 项目开发者应尽可能利用好的代码规范,并可寻求第三方安全公司协助其在上线前 进行全面的攻防测试,尽可能找出一切潜在的漏洞。 最後,尽可能对ERC20、ERC777 和其它DeFi 项目的任何组合行为都做好周密排查。 後续 毫无疑问,Balancer 事件的发生势必也会对DeFi 社区带来影响,而且这类事情接下来发 生的可能性还会很大,在此提醒广大DeFi 项目开发者应务必重视合约的安全问题。 经我们统计发现,Balancer 在此次攻击事件共计损失了523,616.52 美元的数字资产,详 情列表如下: https://reurl.cc/8GaoVM Balancer被骇客攻击 去中心专家怎麽看 --



※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 111.246.91.57 (台湾)
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/DigiCurrency/M.1593593200.A.100.html
1F:推 QMO220: 看来跟我想的一样 07/01 17:32
2F:推 darkdixen: 这是LG粪币的锅 07/01 18:30
3F:推 DarkerDuck: LG表示躺着也中枪XDD 07/02 02:11
4F:推 sdtty: 代码都审计两次了还会被破解啊 07/02 09:06
5F:推 leftc: 两次不够,这不就来了第三次吗~ 审查费 523,616.52 美元 07/02 23:03







like.gif 您可能会有兴趣的文章
icon.png[问题/行为] 猫晚上进房间会不会有憋尿问题
icon.pngRe: [闲聊] 选了错误的女孩成为魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一张
icon.png[心得] EMS高领长版毛衣.墨小楼MC1002
icon.png[分享] 丹龙隔热纸GE55+33+22
icon.png[问题] 清洗洗衣机
icon.png[寻物] 窗台下的空间
icon.png[闲聊] 双极の女神1 木魔爵
icon.png[售车] 新竹 1997 march 1297cc 白色 四门
icon.png[讨论] 能从照片感受到摄影者心情吗
icon.png[狂贺] 贺贺贺贺 贺!岛村卯月!总选举NO.1
icon.png[难过] 羡慕白皮肤的女生
icon.png阅读文章
icon.png[黑特]
icon.png[问题] SBK S1安装於安全帽位置
icon.png[分享] 旧woo100绝版开箱!!
icon.pngRe: [无言] 关於小包卫生纸
icon.png[开箱] E5-2683V3 RX480Strix 快睿C1 简单测试
icon.png[心得] 苍の海贼龙 地狱 执行者16PT
icon.png[售车] 1999年Virage iO 1.8EXi
icon.png[心得] 挑战33 LV10 狮子座pt solo
icon.png[闲聊] 手把手教你不被桶之新手主购教学
icon.png[分享] Civic Type R 量产版官方照无预警流出
icon.png[售车] Golf 4 2.0 银色 自排
icon.png[出售] Graco提篮汽座(有底座)2000元诚可议
icon.png[问题] 请问补牙材质掉了还能再补吗?(台中半年内
icon.png[问题] 44th 单曲 生写竟然都给重复的啊啊!
icon.png[心得] 华南红卡/icash 核卡
icon.png[问题] 拔牙矫正这样正常吗
icon.png[赠送] 老莫高业 初业 102年版
icon.png[情报] 三大行动支付 本季掀战火
icon.png[宝宝] 博客来Amos水蜡笔5/1特价五折
icon.pngRe: [心得] 新鲜人一些面试分享
icon.png[心得] 苍の海贼龙 地狱 麒麟25PT
icon.pngRe: [闲聊] (君の名は。雷慎入) 君名二创漫画翻译
icon.pngRe: [闲聊] OGN中场影片:失踪人口局 (英文字幕)
icon.png[问题] 台湾大哥大4G讯号差
icon.png[出售] [全国]全新千寻侘草LED灯, 水草

请输入看板名称,例如:Tech_Job站内搜寻

TOP