NFT项目惊现低级漏洞,合约未审计导致3400万美元资产被锁死

成都链安Dipublikasikan tanggal 2022-04-23Terakhir diperbarui pada 2022-04-23

Abstrak

由于多个代码缺陷导致合约中 11539.5 枚 ETH永远无法取出。

2022年4月23日,成都链安链必应-区块链安全态势感知平台舆情监测显示,NFT项目方Akutar的AkuAuction合约由于智能合约本身漏洞,导致11539ETH(价值约3400万美元)被锁死在合约中。成都链安技术团队第一时间对事件进行了分析,结果如下。
#1 事件相关信息
4月23日消息,Solidity开发者foobar发推称,11539ETH(价值3400万美元)被永久锁定在AkuDreams合约中,个人用户或开发团队都无法取出资金。退款处理完成后,将每个出价状态设置为1。因此,用户无法调用emergencyWithdraw()。此外,团队也无法领取资金,基本上等于销毁。 

漏洞

成都链安技术团队立刻进行了分析。
漏洞合约:
0xf42c318dbfbaab0eee040279c6a2588fa01a961d
#2 漏洞分析
Akutar项目的智能合约包含2个漏洞:
漏洞一:
1.第一个合约漏洞在processRefunds中,设计者根据refundProgress计数器进行循环退款。
2.而这里使用了call函数进行退款操作,且把退款的结果作为require的判定条件。

漏洞

3.因此如果此时有攻击者在队列中进行退款操作,调用call退款给攻击者时,攻击者在fallback中进行进行恶意的revert则会导致退款队列卡在攻击者这里,从而导致队列后面的所有人都无法进行退款。

漏洞

4.这个漏洞被人在链上证明有效,但随后攻击合约便进行了解锁,并没有进行攻击利用,且公开进行了申明。

漏洞

漏洞二:
该漏洞也是导致价值约3400万美元的ETH资产被锁死在合约中的元凶。
1.在claimProjectFunds函数中,该函数主要用于项目方提款。为了避免项目方权限过大,在用户完成提款之前就将合约中的资产全部转走导致用户无法退款,所有的退款操作应全部完成之后项目方才能够提款。业务逻辑设计上来说,是没有问题的。然而,在具体的代码实现中,当前的代码容易受到漏洞一的影响,导致项目方无法提款,不过这只是潜在的风险,本次资金锁死的元凶不是这个原因。
2.注意函数中第620行代码:require (refundProgress > = totalBids)此处refundProgress表示已经处理了多少个用户的退款,totalBids表示所有用户总投标了多少个NFT。注意由于一个用户可以投标多个NFT,导致单从数值上比较,refundProgress可能小于totalBids。

漏洞

而再来看看退款函数processRefunds中:require(_refundProgress < _bidIndex); bidIndex表示所有参与竞标的用户,refundProgress永远不会高于bidIndex。

漏洞

此时来看看bidIndex的值,为3669:

漏洞

totalBids的值为5495:

漏洞

3.所以refundProgress>=5495且refundProgress<3669这个判断条件永远不会成立,最终导致项目方团队将永远无法执行后续的提款操作。此处应将refundProgress与bidIndex做对比,开发者犯了一个很低级的错误。最终,导致项目方11539ETH(价值约3400万美元)被锁定无法提取。
#3 总结
针对本次事件,成都链安技术团队建议:
1.开发者应具备基本的安全开发意识,熟悉智能合约开发应注意的安全问题;
2.在合约设计和实现时,注意代码实现的正确性,项目上线前,可选择专业的安全审计公司进行全面的安全审计,规避安全风险。

Bacaan Terkait

Dialog dengan Penasihat Bitwise: Dari Ekonomi Tipe K hingga AI Merebut Pekerjaan, Bagaimana Bitcoin Menyelamatkan Generasi Muda?

Sumber: Podcast "When Shift Happens" dengan Jeff Park, penasihat Bitwise dan mantan CIO ProCap Financial. Jeff menganalisis bagaimana real estat sebenarnya adalah aset yang terdepresiasi, mengapa Bitcoin menjadi tempat berlindung terbaik, dan bagaimana AI akan memicu adopsi Bitcoin secara luas. Jeff menggambarkan sistem keuangan yang runtuh, dengan ekonomi berbentuk K: sebagian orang menikmati inflasi aset, sementara yang lain tertinggal. Real estat di kota seperti New York menjadi kelas aset eksklusif untuk orang kaya, sementara rumah terjangkau stagnan. Ia menyarankan kaum muda untuk menyewa daripada membeli, karena kepemilikan rumah secara ekonomi tidak menguntungkan. Bitcoin ditampilkan sebagai solusi: aset penyimpan nilai tanpa perawatan, pajak, atau penyitaan. Dengan mengalihkan modal dari real estat, Bitcoin dapat menurunkan harga perumahan bagi generasi muda. Jeff juga membahas "investor ideologis" yang berfokus pada kelangkaan dan pergeseran paradigma, bukan nilai tradisional. Mengenai AI, Jeff memperingatkan dampaknya yang mengganggu tenaga kerja, menciptakan ketidaksetaraan ekstrem. AI yang terpusat mengumpulkan data tanpa kompensasi, sementara teknologi crypto yang terdesentralisasi dapat memastikan kepemilikan dan distribusi nilai. AI bisa menjadi pemicu bagi Generasi Z dan Alpha untuk beralih ke Bitcoin sebagai lindung nilai. Jeff menekankan pentingnya diversifikasi ke aset non-tradisional seperti Bitcoin, emas, atau bahkan barang koleksi, yang tidak terpengaruh oleh siklus makro. Untuk portofolio sederhana, ia merekomendasikan Bitcoin dan aset berbunga dalam dolar. Pesannya: dunia terus berubah, dan Bitcoin mengajarkan kerendahan hati serta kemajuan melalui eksperimen terus-menerus.

marsbit6j yang lalu

Dialog dengan Penasihat Bitwise: Dari Ekonomi Tipe K hingga AI Merebut Pekerjaan, Bagaimana Bitcoin Menyelamatkan Generasi Muda?

marsbit6j yang lalu

Trading

Spot
Futures
活动图片