织梦CMS - 轻松建站从此开始!

我的网站

当前位置: 主页 > 竞争币 > 以太坊

DeFi 明星项目 Balancer 再遭攻击,简析 Compound 金融模型漏洞

时间:2020-07-02 11:37来源:未知 作者:admin 点击:
与 29 日单纯利用合约漏洞的 攻击 不同,这次黑客巧妙利用了 Compund 金融模型,无中生有了大量 COMP 代币。 原文标题:《DeFi 还有未来吗?Balancer 再遭攻击》 撰文:CertiK 继 6 月 29 日凌

  与 29 日单纯利用合约漏洞的 攻击 不同,这次黑客巧妙利用了 Compund 金融模型,无中生有了大量 COMP 代币。

  原文标题:《DeFi 还有未来吗?Balancer 再遭攻击》

  撰文:CertiK

  继 6 月 29 日凌晨 2 点 CertiK 捕获 Balancer 攻击事件后《空手套以太:Balancer 攻击解析》, 北京时间 6 月 29 日下午 8 点整与 11 点 23 分,CertiK 天网系统(Skynet) 再次检查到两起类似原理的 Balancer DeFi 合约异常,两起异常分别发生在区块数 10360609 与区块数 10361515。与 29 日单纯利用合约漏洞的攻击不同,这次黑客巧妙利用了 Compund 金融模型,无中生有了大量 COMP 代币。明星 DeFi 项目,一日内连遭三次攻击,让支持者不禁担忧起整个 DeFi 市场的未来。

  事件概述

  6 月 29 日,攻击者从 dYdX 闪电贷中借到代币并铸币后,通过 uniswap 闪贷获得 cWBTC 和 cBAT 代币,然后将借得的代币在 Balancer 代币池中大量交易,从而触发 Compound 协议的空投机制,获得空投的 COMP 代币,再使用 Balancer 有漏洞的 gulp() 函数更新代币池数量后,取走所有代币并归还闪电贷。攻击者相当于利用了 Compound 协议的金融模型、闪电贷和 Balancer 代码漏洞,无中生有了 COMP,总获利约为 11.5ETH。

  CertiK 分析:攻击者心理画像

  6 月 29 日下午 8 点与 11 点的两起攻击使用了相同的手法并且使用了同一个收款地址,确认为一个团队。虽然这两次攻击与 29 日凌晨 2 点的攻击均利用了 Balancer 合约的 gulp(),但是攻击手段不同,后两次攻击利用了 Compound 的金融模型的漏洞而不是单纯的代码漏洞。另外,后两次攻击的获利远小于首次攻击获利,实施首次攻击的黑客没有合理动机。

  CertiK 判断后两次攻击是在首次攻击 14 小时后,利用类似原理实施的模仿攻击

  DeFi 安全新挑战

  这次的攻击事件主要利用了金融模型设计上的漏洞,而不是代码层面的漏洞。这种由 DeFi 市场孕育出的新型攻击模式,让大部分区块链安全公司仅有的「代码审计」服务变得毫无用处。

  只针对代码层面而不能对抽象模型进行分析的、传统的安全技术完全应对不了 DeFi 带来的新挑战。而没有模型层面保护的 DeFi,只能沦为熟知 DeFi 金融模型黑客的提款机。

  DeFi 安全预警是弊大于利吗?

  这次的模仿攻击,让很多人对区块链安全公司产生了质疑:安全公司的分析文章会不会教会更多人攻击的方法?为什么各种安全预警没有改善安全环境?我们真的还需要安全预警吗?

  CertiK 的观点是,不仅需要安全预警,还要做到更快更深入!

  不同于传统软件系统,区块链所有的交易、所有的合约调用都是公开透明的。攻击事件发生后,区块链上的交易记录对于黑客而言就是最直白的教科书,区块链安全公司要抢在模仿攻击之前发布预警,保护相关公司。但是最近频繁的攻击事件,再一次证明安全预警是远远不够的,并不能根本性改变当前 DeFi 乃至整个区块链的安全现状。

  DeFi 安全还有机会吗?

  为了根本性改变 DeFi 的安全现状,我们必须针对新型智能合约(比如 DeFi、IoT) 引入全新的安全机制。

  这种安全机制必须要能进行模型层的分析,必须能够适应新型合约的发展,尽量做到在攻击时拦截,而非在攻击后预警。CertiK 团队在夜以继日研发基于 CertiK Chain 的新型安全 DeFi 机制 ——CeDeFi (Certified DeFi)—— 即可信 DeFi,相信可以在未来彻底改变当前被动的安全现状。

  攻击还原

  以下午 11 点对 Balancer 的攻击为例:

  步骤 1:从 dYdX 处通过闪电贷形式借得 WETH、DAI 和 USDC 三种代币,数额分别是 103067.20640667767、5410318.972365872 和 5737595.813492。

  步骤 2:使用步骤 1 中得到的代币,对三种代币 (cETH、cDAI 和 cUSDC) 进行铸币操作 (mint)。

  步骤 3:使用 uniswap 通过闪电贷形式,借得 (borrow) 并铸造 (mint) cWBTC,cBAT 代币。

  步骤 4:携带获得的 cWBTC 与 cBAT 加入代币池,此时攻击者拥有的 cWBTC 和 cBAT 的数目分别为 4955.85562685 和 55144155.96523628。

  步骤 5:分别用 cWBTC 和 cBAT 在该代币池中进行大量的交易,从而触发 Airdrop 操作,将无归属的 COMP 分发到该代币池中。

  步骤 6:调用 gulp() 函数将当前的 COMP 数目同步到 Balancer 智能合约中,并将 cWBTC、cBAT 以及额外被加入代币池中的 COMP 取出。退出代币池时,攻击者拥有的 cWBTC 和 cBAT 的数目同样为 4955.85562685 和 55144155.96523628。但是由于在代币池中通过大量交易产生的额外 COMP,攻击者获得了额外的 COMP 代币。此处攻击者还可以选择直接进入其他代币池中,复用步骤 1 到步骤 6 的攻击方法,获得额外 COMP 代币。

  步骤 7:偿还 uniswap 和 dYdX 的闪电贷,离场。

  步骤 8:攻击者仍旧可以采用同样的方法(步骤 1 到步骤 7),对其他代币池发动攻击。攻击的机制类似,但是通过闪电贷借得和用来进行攻击的代币种类略有不同。

(责任编辑:admin1)
织梦二维码生成器
顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 验证码:点击我更换图片
栏目列表
推荐内容