低レベルの抜け穴を見つけて驚いていますか? NFTプロジェクトAkutarファンドロックイベントの簡単な分析

本文は約1240字で,全文を読むには約2分かかります
コントラクトを設計および実装するときは、コード実装の正確さに注意を払うことをお勧めします。

2022 年 4 月 23 日成都連南チェーン Bing-Blockchain セキュリティ状況認識プラットフォーム最初のレベルのタイトル

#1 イベント関連情報

4月23日、Solidity開発者のfoobar氏は、11,539ETH(3,400万ドル相当)がAkuDreams契約に永久にロックされており、個人ユーザーも開発チームも資金を引き出すことができないとツイートした。返金処理後、各入札ステータスを 1 に設定します。したがって、ユーザーはEmergencyWithdraw()を呼び出すことができません。また、チームは資金を受け取ることができなくなり、基本的には壊滅に等しい。

低レベルの抜け穴を見つけて驚いていますか? NFTプロジェクトAkutarファンドロックイベントの簡単な分析

成都 LianAn 技術チームは直ちに分析を実施しました。

脆弱な契約:

0xf42c318dbfbaab0eee040279c6a2588fa01a961d

#2 脆弱性分析

脆弱性 1:

脆弱性 1:

1. 最初の契約の抜け穴は次のとおりです。processRefunds、デザイナーは、refundProgress カウンタに従って循環返金を実行します。

2. ここでは、返金処理にcall関数を使用し、返金結果をrequireの判定条件としています。

低レベルの抜け穴を見つけて驚いていますか? NFTプロジェクトAkutarファンドロックイベントの簡単な分析

3. したがって、この時点で攻撃者がキュー内で返金操作を実行している場合、コール返金が攻撃者に呼び出されたときに、攻撃者はフォールバックで悪意のあるリバートを実行し、返金キューがその時点でスタックしてしまいます。攻撃者が攻撃したため、キューの後ろにいた全員は返金できなくなります。

低レベルの抜け穴を見つけて驚いていますか? NFTプロジェクトAkutarファンドロックイベントの簡単な分析

脆弱性 2:

低レベルの抜け穴を見つけて驚いていますか? NFTプロジェクトAkutarファンドロックイベントの簡単な分析

脆弱性 2:

このバグは、約 3,400 万ドル相当の ETH 資産が契約にロックされる原因となった犯人でもありました。

1.claimProjectFunds関数では、主にプロジェクト当事者の出金に使用される関数です。プロジェクト当事者が過度の権限を持ち、ユーザーが出金を完了する前に契約内のすべての資産を譲渡することを防ぐため、ユーザーは返金を受けることができません。プロジェクトが資金を引き出す前に、すべての返金操作を完了する必要があります。ビジネスロジックの設計上は問題ありません。ただし、特定のコード実装では、現在のコードが脆弱性 1 に対して脆弱であり、プロジェクト当事者が資金を引き出すことができなくなりますが、これは潜在的なリスクにすぎず、今回の資金ロックアップの原因はその理由ではありません。

2. 関数のコードの 620 行目に注目してください: require (refundProgress >= totalBids) ここで、refundProgress は処理されたユーザーの数を示し、totalBids はすべてのユーザーが入札した NFT の数を示します。ユーザーは複数の NFT に入札できるため、数値比較では、refundProgress が totalBids よりも小さくなる可能性があることに注意してください。

低レベルの抜け穴を見つけて驚いていますか? NFTプロジェクトAkutarファンドロックイベントの簡単な分析

返金関数 processRefunds を見てみましょう: require(_refundProgress < _bidIndex); bidIndex は入札に参加しているすべてのユーザーを意味し、refundProgress が bidIndex より大きくなることはありません。

低レベルの抜け穴を見つけて驚いていますか? NFTプロジェクトAkutarファンドロックイベントの簡単な分析

この時点で、bidIndex の値 (3669) を見てみましょう。

低レベルの抜け穴を見つけて驚いていますか? NFTプロジェクトAkutarファンドロックイベントの簡単な分析

totalBids の値は 5495 です。

低レベルの抜け穴を見つけて驚いていますか? NFTプロジェクトAkutarファンドロックイベントの簡単な分析

3. したがって、refundProgress>=5495 と返金Progress最初のレベルのタイトル

#3 まとめ

この事件を受けて、成都 LianAn 技術チームは次のように提案しました。

1. 開発者はセキュリティ開発の基本的な認識を持ち、スマートコントラクト開発で注意すべきセキュリティ問題に精通している必要があります。

2. 契約を設計および実装するときは、コード実装の正確さに注意してください。プロジェクトがオンラインになる前に、専門のセキュリティ監査会社を選択して包括的なセキュリティ監査を実施し、セキュリティ リスクを回避できます。

オリジナル記事、著者:成都链安。転載/コンテンツ連携/記事探しはご連絡ください report@odaily.email;法に違反して転載するには必ず追究しなければならない

ODAILYは、多くの読者が正しい貨幣観念と投資理念を確立し、ブロックチェーンを理性的に見て、リスク意識を確実に高めてください、発見された違法犯罪の手がかりについては、積極的に関係部門に通報することができる。

おすすめの読み物
編集者の選択