Poolz因算数溢出问题遭受攻击,损失约665K美元!

현재 언어 번역이 없어 원문을 표시합니다.
根据Numen链上监控显示,Mar-15-2023 03:16:02 AM +UTC,Ethereum、Binance、Polygon链上Poolz项目因算数溢出问题遭到攻击,总损失约665000美元。攻击者已将部分Token兑换为BNB,目前资金暂未转出。

背景

根据Numen链上监控显示,Mar-15-2023 03:16:02 AM +UTC,Ethereum、Binance、Polygon链上Poolz遭到攻击,共损失2,805,805枚MEE,525,134枚ESNC,774,997枚DON,2,007,504,238枚ASW,6,510,689枚KMON,2,521,065枚POOLZ,35,976,107枚DCD,760,845枚PORTX,252,153,413枚ECIO,35,975,489枚WOD,29,032,394枚SIP,61,856,885枚MNZ,465,116枚EBA,157,696枚GEMG,202,442枚WANA,223,500枚KXA,82,067枚MSTR,1,717,102枚CHRP,822,631枚CVZ,37,053枚CHIM,8,577,867枚QZA,总价值约665000美元。攻击者已将部分Token兑换为BNB,目前资金暂未转出。

攻击者地址:0x190Cd736F5825ff0Ae0141B5C9cb7Fcd042cef2a

攻击者合约:0x058bae36467a9fc5e1045dbdffc2fd65b91c2203

其中一笔攻击交易

0x39718b03ae346dfe0210b1057cf9f0c378d9ab943512264f06249ae14030c5d5

Poolz因算数溢出问题遭受攻击,损失约665K美元!

攻击流程

1. 攻击者先通过pancakeswap兑换了一下mnz代币。

2. 攻击者调用CreateMassPools,主要问题就存在于这个函数。Poolz因算数溢出问题遭受攻击,损失约665K美元!

 

正常功能是用户可以批量创建池子,然后提供初始流动性。再通过CreatePool把池子创建出来,并用一个mapping记录池子属性,如下图所示。

Poolz因算数溢出问题遭受攻击,损失约665K美元!

问题出在getArraySum函数。TransferInToken给池子建立流动性,amount通过getArraySum控制。Poolz因算数溢出问题遭受攻击,损失约665K美元!

通过传入的_StartAmount数组遍历,然后进行累加。然后通过调用栈看到[115792089237316195423570985008687907853269984665640502182660492372007802789937,61856797091635905326850000]。数组累加超过uint256,即返回1。但是CreatePool中做的记录是通过_StartAmount来实现的。所以攻击者转入了1个token,但_StartAmount是个大数。

3.黑客调用withdraw提币,完成攻击。

总结

此次事件,攻击者获利的根本原因是算数溢出。为了防止此类问题,Numen建议使用 Solidity 的高版本进行编译,以便在编译过程中自动进行溢出检查。另外,您也可以在低版本 Solidity 中使用 OpenZeppelin 的 SafeMath 库来解决整数溢出问题。

原文链接:Poolz因算数溢出问题遭受攻击,损失约665K美元!

공유하기:

작성자: Numen Cyber

이 글은 PANews 입주 칼럼니스트의 관점으로, PANews의 입장을 대표하지 않으며 법적 책임을 지지 않습니다.

글 및 관점은 투자 조언을 구성하지 않습니다

이미지 출처: Numen Cyber. 권리 침해가 있을 경우 저자에게 삭제를 요청해 주세요.

PANews 공식 계정을 팔로우하고 함께 상승장과 하락장을 헤쳐나가세요
PANews APP
미국의 3대 주요 주식 지수는 모두 하락 마감했으며, COIN 지수는 7.59% 이상 떨어졌습니다.
PANews 속보