Cointime

扫码下载App
iOS & Android

SharkTeam:合约精度计算漏洞与安全建议

近几个月,连续发生多起安全事件与合约开发过程中的价格精度计算漏洞有关,损失金额已超千万美元,MIM_SPELL 650万美元、RadiantCapital 450万美元、Onyx Protocol 210万美元等,均是因为计算时精度出现了问题导致关键变量计算错误从而被攻击。

SharkTeam将这类安全事件进行了总结,并给出行之有效的安全建议,希望后续协议可以引以为戒,保护用户加密资产安全。

1. MIM_SPELL攻击事件

发生时间:2024年1月30日,

损失金额:约650万美元,

漏洞原因:合约存在两个借贷变量elastic和base,在进行两者的精度计算时,都采用了向上取整的方式。这样操作会使本身计算结果应为0的参数最后计算得到为1,使两个参数之间的比例失衡,最终能够超额借出MIM代币。

详细分析:https://bit.ly/3ScR7TK

2. RadiantCapital攻击事件

发生时间:2024年1月2日,

损失金额:约450万美元,

漏洞原因:黑客利用了合约中对于新市场尚未进行初始化的漏洞,流动性指数并未初始化,使得黑客可以通过闪电贷函数来操纵其大小,当指数变大后,黑客利用rayDiv函数中的四舍五入精度问题,由于指数变大,通过四舍五入造成的精度损失上限同样变大,黑客重复进行存取操作获利。

3. Onyx Protocol攻击事件

发生时间:2023年11月11日,

损失金额:约210万美元,

漏洞原因:与RadiantCapital攻击事件类似,也利用了新市场尚未初始化流动性的漏洞,并且在divUint函数中存在四舍五入的漏洞造成精度损失。

详细分析:https://bit.ly/47cKeI6

4. WiseLending攻击事件

发生时间:2024年1月12日,

损失金额:约46.5万美元,

漏洞原因:合约在计算借贷份额时使用向上取整,攻击者利用这一点进行重复的存取操作来提高份额价格,份额价格提升后用自己的份额借走了大量的ETH。

5. HopeLend攻击事件

发生时间:2023年10月18日,

损失金额:约85万美元

漏洞原因:黑客最初利用目标资产对应的池中的流动性失衡,操纵与目标资产关联的hToken的流动性指数,扭曲其价值。随后,黑客利用极少量 hToken 的抵押品,借入了所有其他标的资产。此后,黑客同样利用合约分割操作中的rayDiv函数中存在的四舍五入漏洞,反复存入和提现,耗尽了在Hopelend攻击中投入的标的资产。

精度问题大体是分为两类:

1.一类是错误的向上取整,可能导致本应为0的参数取到了1,使后续计算出现严重漏洞;

2.第二类是四舍五入问题,其中尤为严重的是错误使用了rayDiv函数的项目。

安全建议:

1.针对第一类来说,如果项目逻辑需要向上取整操作,在取整变量为1或0等条件下进行多次多样的重复测试,

2.针对第二类可以采用先乘后除统一精度的方式,譬如使用10**18为后缀作为小数点后的数值。

3.无论是哪一种情况,对计算逻辑进行全方面测试,尽可能地考虑到每一种情况,尤其是在不同计算结果有不同的处理逻辑的时候,更需要慎重测试。理论上的逻辑设计与实际的代码实现相结合,全方位无死角的对合约函数进行测试。若测试用例可以覆盖各种变化情况,必然可以避免因为精度计算带来的安全性问题。

SharkTeam的愿景是保护Web3世界的安全。团队由来自世界各地的经验丰富的安全专业人士和高级研究人员组成,精通区块链和智能合约底层理论。提供包括链上大数据分析、链上风险预警、KYT/AML、智能合约审计、加密资产追讨等服务,并打造了链上智能风险识别平台ChainAegis,平台支持无限层级的深度图分析,能有效对抗Web3世界的高级持续性威胁(Advanced Persistent Threat,APT)。已与Web3生态各领域的关键参与者,如Polkadot、Moonbeam、polygon、Sui、OKX、imToken、Collab.Land等建立长期合作关系。

官网:https://www.sharkteam.org

Twitter:https://twitter.com/sharkteamorg

Discord:https://discord.gg/jGH9xXCjDZ

Telegram:https://t.me/sharkteamorg

评论

所有评论

推荐阅读

  • BTC突破70000美元

    Cointime 报道,行情显示,BTC突破70000美元,现报70003.25美元,24小时涨幅达到3.96%,行情波动较大,请做好风险控制。

  • 伊朗通过巴基斯坦回击美国,拒绝停火,强调必须永久结束战争

    Cointime 报道,据伊朗伊斯兰共和国通讯社(IRNA):伊朗通过巴基斯坦回击美国,拒绝停火,强调必须永久结束战争。

  • 美媒称45天停火计划只是“众多方案之一”

    Cointime 报道,据美国媒体6日报道,一名白宫官员说,美国和伊朗之间为期45天的停火计划只是目前正在讨论的“众多方案之一”。这位白宫官员表示,美国总统特朗普尚未批准该计划,美方对伊朗的军事行动仍在继续。(新华社)

  • 特朗普尚未批准停火计划

    Cointime 报道,4月6日,美国白宫表示,美国总统特朗普尚未批准停火计划。潜在的停火方案只是众多设想之一。(金十)

  • Strategy上周增持4,871枚BTC,累计持仓突破76.6万枚

    Cointime 报道,4月6日,据Strategy官方披露,Strategy上周以约6.7718万美元的均价买入4,871枚BTC,总耗资约3.299亿美元。截至2026年,Strategy累计持有766,970枚BTC,总持仓成本约580.2亿美元,均价约7.5644万美元/枚。

  • 伊朗发动“真实承诺-4”第98波攻势 打击美军两栖攻击舰

    Cointime 报道,4月6日讯,伊朗伊斯兰革命卫队公共关系部发表声明说,伊朗发动“真实承诺-4”行动第98波攻势。声明称,伊斯兰革命卫队海军��用巡航导弹打击了属于“犹太复国主义政权”的集装箱船SDN7,该船被摧毁后发生大面积起火,还使用导弹打击了特拉维夫北部和南部、海法的战略中心、贝尔谢巴的化工企业与工厂,以及巴特赫费尔的军队驻地。声明还表示,搭载逾5000名水兵和海军陆战队员的美国军方两栖攻击舰LHA7也遭到导弹打击,在此次攻势后被迫撤退至印度洋南部深海区域。声明还称,阿联酋与以色列联合无人机生产中心,以及驻扎在阿里·萨利姆基地的多架飞机,均遭到无人机和导弹打击。 (金十)

  • 霍尔木兹海峡船只通行数量升至3月初以来最高水平

    Cointime 报道,4月6日,据外媒报道,霍尔木兹海峡通行量升至中东战争爆发初期以来最高水平,因更多国家与伊朗达成安全通行协议。周末共有21艘船只通过该水道,这是自3月初通行量开始下降以来的最高两日总量。尽管当前通行船只数量仍远低于战前水平(约135艘),但已有更多国家获得通行许可。新加坡Kpler高级原油分析师表示:“伊朗在回应其伙伴国请求的同时,也在强化对霍尔木兹的控制。通行仍取决于伊朗意愿,如果冲突升级,局势可能随时发生变化。”截至目前,大多数获准通行的船只似乎遵循德黑兰指示的航线,贴近伊朗海岸航行。不过,也有更多船只开始选择沿对岸航线行驶。 (金十)

  • 伊朗称美国15点计划“野心极大且不合逻辑”

    Cointime 报道,4月6日讯,据伊朗伊斯兰共和国通讯社(IRNA)报道,伊朗外交部发言人伊斯梅尔·巴盖伊表示,在近期有关结束战争的提议背景下,德黑兰已敲定自身诉求,但仅会在适当时机公布,并强调伊朗不会屈从于压力,。他表示:“几天前,他们通过中间方提出了一些方案,而这项包含15点内容的美国计划是通过巴基斯坦以及其他一些友好国家转达的。”他并补充称,“此类方案野心极大,又不同寻常,而且不合逻辑。”他强调,伊朗拥有自身框架。“基于我们的自身利益,基于我们的考量,我们已经整理并制定了我们过去和现在所提出的一系列诉求。”他还否认与调解方接触意味着软弱。“伊朗迅速且勇敢地对一项方案表达立场的事实,不应被视为向敌人屈服的表现。”(金十)

  • BTC突破70000美元关口

    Cointime 报道,行情显示,BTC突破70000美元关口,现报70071.01美元,24小时涨幅达到4.46%,行情波动较大,请做好风险控制。