過去のスマートコントラクトのエクスプロイトを研究することは、より優れたSolidity開発者になるのに最適です。 私は最近、過去数年間に発生したエクスプロイトの多くをレビューすることに時間を費やしました。 ハッキングの根本原因を理解することは、コードの作成について異なる考え方を学ぶための優れた方法です。 また、新しいコードベースを確認するときに、どのコンポーネントが最も重要であるかをより正確に把握できます。 Solidity ゲームを改善したい人は、@RektHQ で過去のエクスプロイトを確認するか、ハッキングの内訳とアサーションがどのようにハッキングを防げたかが記載されている @phylaxsystems ドキュメントをチェックすることをお勧めします。 これらの過去のハッキングを研究することで、エクスプロイトは、多くの場合、コードのチェックの欠落や誤った計算によってプロトコルが意図されていない状態に入ることが原因であることに気づきました。エクスプロイトが発生すると、バグは明らかであるように見えることがよくあります。プロトコルがこれらを簡単に識別できるようにする必要があります。 多くのプロトコルは、不変量を定義し、これらに違反しないようにすることに時間を費やすことで恩恵を受けるでしょう。 アサーションを記述することは、これらの不変量に決して違反できないようにするための優れた方法です。 私が時間をかけて調査した最新のエクスプロイトは、2025 年 3 月の Abracadabra エクスプロイトで、~$13m が失われました。 バグ:sendValueInCollateral()は実際のトークンを抽出しましたが、内部アカウンティング変数を更新するのを忘れました エクスプロイト: orderValueInCollateral() は、トークンが削除された後も同じ担保値を報告し続けました 結果: 攻撃者は資金が枯渇するまで「ファントム担保」を担保に繰り返し借り入れました 「報告された担保」が「実際の担保」と一致するという単純な不変量をチェックするアサーションは、ハッキングを防いだでしょう。
944