TOKEN:独家 | 灵踪安全:代币合约不匹配 Cream Finance遭二次攻击

CreamFinance是DeFi领域的知名去中心化借贷协议。项目方在业内首先推出了白名单机制的IonBank借贷机制。这一创新一方面为DeFi借贷提供了更为便捷的工具,另一方面也为黑客攻击创造了条件。

在今年2月13日,CreamFinance就因为其IonBank被黑客利用并辅以闪电贷工具遭到攻击。时隔半年,在8月30日,CreamFinance再次遭到闪电贷攻击。

本次攻击是因为项目中的APM代币合约与借贷合约的cToken合约不适配造成重入漏洞,被黑客利用。

在本次攻击中,攻击者的地址为:0xce1f4b4f17224ec6df16eeb1e3e5321c54ff6ede。

攻击合约的地址为:0x38c40427efbAAe566407e4CdE2A91947dF0bD22B。

独家 | Bakkt期货合约数据一览:金色财经报道,BakktVolumeBot数据显示,本周比特币月度期货总交易额为1.11亿美元,较上周增加20%;未平仓合约量高点为1310万美元,较上周增长34%。[2020/5/10]

被攻击的合约有两个,合约及地址分别为:

APMtoken合约:0xff20817765cb7f73d4bde2e66e067e58d11095c2

cToken合约:0xd06527d5e56a3495252a528c4987003b712860ee

我们先看cToken合约中出现漏洞的代码片段:

独家 | 玛雅矿机创始人张嘉亮:比特币触及6000美元均有反弹 但行情复苏仍需耐心:针对“挖矿与市场行情”问题,金色财经独家采访到玛雅矿机创始人张嘉亮,他表示:“今年以来币价总体低迷的态势,对挖矿产业的确有不小的冲击,当然我们也可以看到,比特币在多次触及6000美元附近的成本线时,都出现了力度比较大的反弹。这样的行情也使得对算力的要求提高,对高性能矿机的需求量提升,目前我们也需要有足够的耐心来等待市场的复苏。”[2018/9/4]

上面的代码所实现的逻辑是在转账完成之后,才修改借贷额度状态accountBorrows。

这是一个典型的竞态问题。

代码中的doTransferOut函数最终会调用标的代币合约的transfer函数,在此之后再对与标的代币关联的cToken合约的状态进行修改。

独家 | 梓岑:并没有所谓的BM多次修改EOS宪法事件:金色财经在独家专访HelloEOS创始人梓岑,就BM多次修改EOS宪法的事件,梓岑表示: 其实没有所谓的“BM多次修改宪法”,他做的是把自己关于宪法的观念和思路提出来,在社区讨论。决定权始终在社区,在持币人投票,只不过BM号召力足够强,看起来像BM直接修改宪法。DPOS,没有所谓的中心治理,决定权永远在持币人手里。

另外,EOS将主网上线交给社区的行为,梓岑也认为:将主网上线交给社区,只是Block.one为合规审查不得不做的,实际上,EOS做了一个堪称范本的、滴水不漏合规审查方案。理论上讲,会导致无数个分叉,但实际上,因为DPOS体系的治理特性,持币人会用投票做出选择,支持唯一主链是持币人认可的方向,那么分叉就不可能发生。相较而言,POW由矿工决定分叉方案,即使持币人不认可,也根本无力阻止分叉行为。

在关于ECAF冻结27个EOS地址的行为,梓岑表示:首先需要明确,EOS的治理的最基本原则,是“私有财产神圣不可侵犯”。没有“随意冻结”,冻结的地址均是存在欺诈盗币行为的地址,在这件事情上,存在某些大V和媒体刻意曲解的情况。[2018/6/30]

通常cToken对应的标的代币合约都是标准的ERC-20代币合约,这类标准的ERC-20代币合约中的transfer函数中没有回调函数。但如果标的代币不是标准的ERC-20代币合约,其transfer函数带有回调函数,则会引发重入漏洞。

独家 | 数字货币分析师肖磊:断崖式下跌后暴力反弹“施压”多空双方:昨天大盘开启“强势下杀与暴力拉升”模式,对此行情金色财经独家采访到数字货币分析师肖磊,他指出:“目前看来,比特币市场已经聚集了诸多的专业投资者,这些投资者很多可能都来自华尔街的专业操盘手,甚至是对冲基金团队,这种操作手法类似于外汇,断崖式下跌后暴力反弹,本身就是一种洗盘的方式,对多空双方都造成很强的压力,会导致后期很多投资者望而却步,但也有好处,就是促使更多的投资者,不得不选择长线投资,不得不降低杠杆,很多投机需求会被洗出。

在行情大幅波动的时候,持币地址多少等数据的研究意义不是很大,因为投资者都在用情绪在做交易。目前看来,除了比特币、以太币有一定的基础性现实需求之外,其他的币种可能缺乏现实支撑,因此场内资金更多的还是指交易需求比较强烈的资金,这部分资金目前撤离的迹象还是比较明显的,但这类资金如果遇到下一波行情,也随时可能回来。目前熊市已经很明显了,只是投资者往往会关注一些小币种的走势,对大趋势不太敏感。

关于未来行情回暖,肖磊进一步指出:“主要看政策面,大趋势下看待此次下跌,是投资者回归现实的开始。如果政策面没有太大变化,规模性用户还是难以出现,则并不乐观。当然熊市中也会出现很多小反弹,对于投资者而言,做波段是有意义的。[2018/6/25]

本次攻击恰恰就是因为cToken对应的标的代币不是标准的ERC-20代币。APM代币合约是个基于ERC-777标准的合约。这个合约中的transfer函数最后会调用_callPostTransferHooks()函数,在这个函数的最后会有一个回调函数IAmpTokensRecipient.tokensReceived。

金色独家 EOS Asia联合创始人郭达峰:交易所内锁住的大票仓是影响排名的最大未知数:EOS Asia联合创始人郭达峰对金色财经表示,EOS节点排名不断变化是EOS设计的巧妙之处,持币者每分钟都可以换选票结合权重半衰期,促使着节点必须能够持续为社区做贡献。目前交易所内锁住的大票仓是影响排名的最大未知数,随着交易所慢慢开放投票和提取功能,排名会更能体现出节点对社区的贡献。[2018/6/20]

下面是与此相关的代码片段:

在回调函数中,攻击者可以再次发起交易,而此时cToken还未修改用户借款的相关状态,攻击者却已经收到借款,可以利用这些借款进行后续的动作。

合约中与cToken修改借款状态的相关接口已经定义了防重入的锁?borrowInternal,使用户无法再次直接从初始的借款合约中借入资金。

borrowInternal的代码片段如下:

攻击者也注意到了这一点,于是选择从一个借贷池借来的cToken,去另一个借贷池借款,以绕开上述防重入锁的限制。

由于cToken被再次用于借款,因此超过了借款额度。如果攻击者直接还款则会因为超额借贷而导致第一次借贷交易失败。因此攻击者选择不还款,而是使用另一个地址清算了这个满足清算条件的cToken,从而完成全部攻击。

纵观整个攻击过程,导致本次攻击成功的原因有两个:

1为AMP代币添加借贷池时,没有考虑到AMP代币与借贷合约的适配性

2借贷生成的cToken存在竞态条件问题,代码的实现逻辑没有严格遵循状态修改要放在外部调用之前的默认规范。

在此,灵踪安全提醒所有的项目方:编写Solidity合约代码时一定要遵循Solidity合约编写的安全规范,不能心存侥幸。

在此例中Cream.Finance的代码分叉复制于Compound,尽管后者已经经过考验,但依然不能认为其代码是万无一失的。

根据我们的经验,即便是利用一些成熟的、历经考验的项目代码,也不能认为它们是绝对安全的,依然要进行充分的审计。尤其是要弄清楚,这些代码适用的前提条件和安全假设,以及具体到自己的应用场景中,这些代码是否还满足这些前提和假设。

在灵踪安全审计代码的过程中,对适用前提和安全假设都有严格的检验标准和审查流程,并不会因为项目代码分叉自知名项目而忽略对这些安全事项的检查。

关于灵踪安全:

灵踪安全科技有限公司是一家专注区块链生态安全的公司。灵踪安全科技主要通过“代码风险检测+逻辑风险检测“的一体化综合方案服务了诸多新兴知名项目。公司成立于2021年01月,团队由一支拥有丰富智能合约编程经验及网络安全经验的团队创建。

团队成员参与发起并提交了以太坊领域的多项标准草案,包括ERC-1646、ERC-2569、ERC-2794,其中ERC-2569被以太坊团队正式收入。

团队参与了多项以太坊项目的发起及构建,包括区块链平台、DAO组织、链上数据存储、去中心化交易所等项目,并参与了多个项目的安全审计工作,在此基础上基于团队丰富的经验构建了完善的漏洞追踪及安全防范系统。

作者:

灵踪安全CEO谭粤飞

美国弗吉尼亚理工大学(VirginiaTech,Blacksburg,VA,USA)工业工程硕士(Master)。曾任美国硅谷半导体公司AIBTInc软件工程师,负责底层控制系统的开发、设备制程的程序实现、算法的设计,并负责与台积电的全面技术对接和交流。自2011至今,从事嵌入式,互联网及区块链技术的研究,深圳大学创业学院《区块链概论》课程教师,中山大学区块链与智能中心客座研究员,广东省金融创新研究会常务理事?。个人拥有4项区块链相关专利、3本出版著作。

郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。

地球链

[0:31ms0-1:81ms