本文由“Fairyproof Tech”原创,授权“金色财经”独家发布。
8月19日,BSC上的收益聚合项目Pinecone Finance的保险库受到黑客攻击,损失约350万没PCT代币(市值约合20万美元)。
截至写稿时为止,项目方已经针对此次攻击中受损的用户发布了补偿计划:项目团队及投资人共持有491万枚代币,将用所有代币补偿用户。
尽管此次攻击受损的金额相对近期动辄千万、上亿美元的金额不算太大,但这起攻击事件还是给我们留下了值得吸取的经验和教训。
这次攻击出现漏洞的地方在于转账过程使用的代币有损耗,而合约对这个损耗没有处理好于是就导致漏洞出现从而被黑客攻击。
在正常状况下,用户之间转账(ERC-20等)代币的时候,如果代币在转账过程中没有损耗,处理起来是比较简单的。但如果某些代币在转账过程中会出现损耗,则处理这类代币的转账就要非常小心了。
独家 | 比特币年化期现价差约为7.09%,较前一日上涨0.52%:金色财经报道,据同伴客数据显示,9月18日(格林威治标准0时)比特币年化期现价差约为7.09%,较前一日上涨0.52%,市场情绪指数为“乐观”。
指数参考:>20% 极度牛市;10%~20% 牛市;5%~10% 乐观;2%~5% 谨慎乐观;0~2% 谨慎;-5%~0 谨慎悲观;-10%~-5% 悲观;-20%~-10%熊市;<-20%:极度熊市[2020/9/18]
在Pinecone项目中,其代币PCT是作为资金池的质押代币,在其合约设计的代币转账过程中会有手续费的损耗。而项目将这个损耗计入了用户的份额中,于是用户份额和质押的PCT总额就会出现偏差。这个偏差就能被攻击者用来领取多余的奖励。
具体而言,本次攻击存在漏洞的合约有:
PineconeFarm合约,其地址为:
独家 | Bakkt期货合约数据一览:金色财经报道,Bakkt Volume Bot数据显示,7月20日,Bakkt比特币月度期货合约日交易额为1561万美元,同比上升55%,未平仓合约量为667万美元,同比上升17%。[2020/7/21]
0x4099f27fb72788b7bb5cb64e3d2b865eb82d0f8f
farm合约使用的策略合约IPineconeStrategy,其地址为:
0x1e542DB46eb87cc8E5fA8e1856eC53F89dc4bC89
PCT代币合约,其地址为:
0x6019384a802310117a6E889e7021d2d0A144fE50
漏洞涉及的相关代码片段为:
PineconeToke的_transfer()函数:
独家 | 杭州嘉楠耘智:目前公司经营正常:金色财经报道,据此前消息,杭州嘉楠耘智信息科技有限公司发生工商变更,原董事孔剑平、孙奇峰、李佳轩,监事屠松华从主要人员中退出,新增孟璐为监事。对此,金色财经记者采访杭州嘉楠耘智官方人员表示,“杭州嘉楠耘智是国内经营主体的母公司,目前经营都正常”。详情请关注金色财经后续报道。[2020/7/9]
在这里,PineconeToken的transferFrom的调用了_transfer()函数,在_transfer()中用户转账会收取手续费,因而实际到账的金额比transferFrom传入的 amount 值要小。
PineconeFarm合约的deposit()函数:
独家 | BTC 24h链上交易量上升37.42%:据欧科云链OKLink数据显示,BTC24h链上活跃地址数总计885038,较前日上升11.51%;链上交易量总计735889.58BTC,较前日上升37.42%;链上交易笔数总计309592,较前日上升19.8%;BTC链上活跃度上升。
截至上午10时,全网算力约为102.8EH/s,较前日上升2.52EH/s,全网算力呈上升趋势。[2020/6/2]
在上述代码中,PineconeFarm将存入的PCT质押到IPineconeStrategy合约中获取收益。通过使用BSC的vm trace工具,可以发现这个IPineconeStrategy是一个VaultRabbitCake合约。PineconeFarm对用户份额share的计算会用到_wantAmt。而这个_wantAmt和下面的函数片段又有关联。
策略合约的deposit()函数
独家 | Bakkt期货合约数据一览:金色财经报道,Bakkt Volume Bot数据显示,5月5日,Bakkt比特币月度期货合约单日交易额为1959万美元,同比下跌5%,未平仓合约量为1148万美元,同比上升5%。[2020/5/6]
从上述代码可以看出,在计算sharesAdded时,其分母是wantTotal,而wantTotal 依赖balance()。balance是关联的总锁仓PCT余额。由于实际的PCT余额小于 deposit传入的金额_wantAmt,这就会造成用户份额在计算时增加了。
最后,当攻击者调用withdraw函数时,只要输入比deposit值大的参数就可以赎回超过质押数的PCT代币。
按照这个机制,黑客在攻击时,可以重复重复调用deposit和withdraw功能,从而导致合约质押的PCT损耗不断增加、资金池持有的PCT余额不断变小。然后在计算奖励时,由于使用资金池中的余额作为分母,而分母越小,则可额外领取的奖励就越多。
了解了代码的漏洞及相关机制后,我们再来看黑客诸多攻击中的一次攻击:
这次攻击中,黑客的地址为:0xfc6682db7e9f57882e8b18ebc9adc7a19f770494,其交易流程如下:
可以看出第一笔交易0xe446f质押了8.1万PCT,然后在0x76d33 提取奖励时却提取了16万PCT。
我们继续查看withdraw交易的参数,可以看出传入amount值为 22603495a2af5d0ccc34,将其转换为10进制数就是16万,远超质押金额8.1万。详细细节如下图所示:
从这次攻击的漏洞原因看,在转账时有损耗的代币在参与收益类项目时,存在较多的问题。因此Fairyproof Tech提醒项目方要充分考虑损耗对收益计算的影响。
对此类问题,Fairyproof Tech一直以来都会在审计时特别和项目方强调。另外我们也再次强调审计在项目中的重要性,希望项目方在项目上线前充分做好审计工作。
关于Fairyproof Tech:
Fairyproof Tech科技有限公司是一家专注区块链生态安全的公司。Fairyproof Tech科技主要通过“代码风险检测+逻辑风险检测“的一体化综合方案服务了诸多新兴知名项目。公司成立于2021年01月,团队由一支拥有丰富智能合约编程经验及网络安全经验的团队创建。
团队成员参与发起并提交了以太坊领域的多项标准草案,包括ERC-1646、ERC-2569、ERC-2794,其中ERC-2569 被以太坊团队正式收入。
团队参与了多项以太坊项目的发起及构建,包括区块链平台、DAO组织、链上数据存储、去中心化交易所等项目, 并参与了多个项目的安全审计工作,在此基础上基于团队丰富的经验构建了完善的漏洞追踪及安全防范系统。
作者:
Fairyproof TechCEO 谭粤飞
美国弗吉尼亚理工大学(Virginia Tech, Blacksburg, VA, USA) 工业工程(Industrial Engineering) 硕士(Master)。曾任美国硅谷半导体公司 AIBT Inc(San Jose, CA, USA) 软件工程师,负责底层控制系统的开发、设备制程的程序实现、算法的设计,并负责与台积电的全面技术对接和交流。自2011至今,从事嵌入式,互联网及区块链技术的研究,深圳大学创业学院《区块链概论》课程教师,中山大学区块链与智能中心客座研究员,广东省金融创新研究会常务理事 。个人拥有4项区块链相关专利、3本出版著作。
今年夏天,NFT (非同质化代币) 的价格飙升,加密货币爱好者在从数字交易卡到虚拟财产等所有领域都投入了巨额资金。现在,他们又将「数字石头」添加到了投资组合中.
1900/1/1 0:00:008月18日,Chainalysis.com分享了2021 年最新Chainalysis全球加密货币采用指数,该指数主要跟踪衡量草根加密货币采用情况,根据最新报告数据,近一年全球加密货币采用数据大幅增长,且行业关注度不断提高.
1900/1/1 0:00:00移动支付网消息:随着数字人民币试点逐步深入,越来越多的企业开始加入到试点中,而“数字货币”相关的专利申请也不断更新。2019年年底,关于DCEP试点的消息不胫而走.
1900/1/1 0:00:00在球星卡火爆之后,数字球星卡横空出世。NBA Top Shot市场上,勒布朗詹姆斯的卡牌拍出了20.8万美元(约合135万元人民币)的天价。NBA Top Shot是基于区块链的NBA数字收藏品平台.
1900/1/1 0:00:00NFT 销售记录被持续打破。虽然近期NFT市场的明星是Art Blocks 和「生成艺术」,但似乎所有NFT项目都迎来了爆发,几乎所有的NFT都处于up-only的模式,而没有停止的迹象.
1900/1/1 0:00:00你可能最近花了大量时间来积累一些非常酷的NFT收藏品。 那现在呢? 好吧,如果你还没有,我建议你开始认真准备以保护你的NFT资产。一种方法是创建一个“NFT保险库”系统,以用于安全地存储你精心挑选的 NFT 资产.
1900/1/1 0:00:00