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

我的网站

当前位置: 主页 > 区块链

保险库受到黑客攻击?Pinecone被攻击事件全解析

时间:2021-08-24 20:44来源:未知 作者:admin 点击:
8月19日,BSC上的收益聚合项目Pinecone Finance的保险库受到黑客攻击,损失约350万没PCT代币(市值约合20万美元)。 截至写稿时为止,项目方已经针对此次攻击中受损的用户发布了补偿计划

8月19日,BSC上的收益聚合项目Pinecone Finance的保险库受到黑客攻击,损失约350万没PCT代币(市值约合20万美元)。


截至写稿时为止,项目方已经针对此次攻击中受损的用户发布了补偿计划:项目团队及投资人共持有491万枚代币,将用所有代币补偿用户。


尽管此次攻击受损的金额相对近期动辄千万、上亿美元的金额不算太大,但这起攻击事件还是给我们留下了值得吸取的经验和教训。


这次攻击出现漏洞的地方在于转账过程使用的代币有损耗,而合约对这个损耗没有处理好于是就导致漏洞出现从而被黑客攻击。


在正常状况下,用户之间转账(ERC-20等)代币的时候,如果代币在转账过程中没有损耗,处理起来是比较简单的。但如果某些代币在转账过程中会出现损耗,则处理这类代币的转账就要非常小心了。


在Pinecone项目中,其代币PCT是作为资金池的质押代币,在其合约设计的代币转账过程中会有手续费的损耗。而项目将这个损耗计入了用户的份额中,于是用户份额和质押的PCT总额就会出现偏差。这个偏差就能被攻击者用来领取多余的奖励。


具体而言,本次攻击存在漏洞的合约有:


PineconeFarm合约,其地址为:


0x4099f27fb72788b7bb5cb64e3d2b865eb82d0f8f


farm合约使用的策略合约IPineconeStrategy,其地址为:


0x1e542DB46eb87cc8E5fA8e1856eC53F89dc4bC89


PCT代币合约,其地址为:


0x6019384a802310117a6E889e7021d2d0A144fE50


漏洞涉及的相关代码片段为:


PineconeToke的_transfer()函数:




在这里,PineconeToken的transferFrom的调用了_transfer()函数,在_transfer()中用户转账会收取手续费,因而实际到账的金额比transferFrom传入的 amount 值要小。


PineconeFarm合约的deposit()函数:




在上述代码中,PineconeFarm将存入的PCT质押到IPineconeStrategy合约中获取收益。通过使用BSC的vm trace工具,可以发现这个IPineconeStrategy是一个VaultRabbitCake合约。PineconeFarm对用户份额share的计算会用到_wantAmt。而这个_wantAmt和下面的函数片段又有关联。


策略合约的deposit()函数




从上述代码可以看出,在计算sharesAdded时,其分母是wantTotal,而wantTotal 依赖balance()。balance是关联的总锁仓PCT余额。由于实际的PCT余额小于 deposit传入的金额_wantAmt,这就会造成用户份额在计算时增加了。 (责任编辑:admin)

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