この記事の内容はオリジナルではなく、以下の 2 つのブログ投稿の翻訳と解釈に基づいています。 ブログ 1: http://vessenes.com/more-ethereum-attacks-race-to-empty-is-the-real-deal/ 1. 攻撃手法の解読攻撃者は childDAO を作成し、そこに継続的に Ether を転送しているため、これが現在 Ether を抽出する唯一の実行可能なメカニズムであり、焦点は splitDAO 関数から始まります。 splitDAO は、childDAO (存在しない場合) を作成し、スプリッターが所有する Ether を childDAO に転送し、生成された報酬 (現在は 0 である必要があります) を支払ってから戻ります。 ホワイトペーパーの設計によれば、splitDAO は、投票において不利な立場にある少数派を保護し、投票を通じて多数派から合法的に搾取されることを防ぐことを目的としています。より小規模な DAO を分割することで、分割前に行われた外部資金からの潜在的な利益を確実に獲得しながら、自らの足で投票するメカニズムが与えられます。 しかし、地獄への道は花で舗装されている。 BLOG 2 によると、DAO.sol の splitDAO 関数には次の行があります。 コントラクトでは、msg.sender に記録された DAO 通貨の残高がゼロにリセットされ、DAO 通貨の合計金額 totalSupply が差し引かれるなど、これらはすべて msg.sender に送り返された後に発生します。これは、ブログ 1 のブロガーが指摘した典型的な「アンチパターン」です。 次に、withdrawRewardFor 関数を見てみましょう。現在 GitHub で確認できる最新のコードは、Ethereum ライブネットにデプロイされたコードではありません。ブロガーによると、問題のあるコードは以下のとおりです。 paidOut[_account] += reward は元のコードでは payOut 関数呼び出しの後に配置されていましたが、最新の github コードでは payOut の前に移動されました。 深さでマークされた行に注意してください。_recipient に _amount Wei を転送するための呼び出しが行われます。デフォルトでは、呼び出しにより残りのガスがすべて使用されます。呼び出しによって実行されるコード ステップの数は大きくなる可能性があり、基本的には攻撃者が送信したメッセージの利用可能なガスによってのみ制限されます。 ハッカーは、匿名のフォールバック機能を備えた独自のハッカー契約 HC を作成します。 Solidity 仕様によれば、HC が Ether (データなし) を受信すると、フォールバック機能が自動的に実行されます。このフォールバック関数は、再帰を通じて THE DAO の splitDAO 関数への複数の呼び出しをトリガーします (ただし、ガス不足を避けるためにあまり多くは行いません)。プロセスは、スタックの使用を制御するために、現在の呼び出しの深さも記録する必要があります。 2) 攻撃を開始<br/>ハッカーは THE DAO に分割提案を複数回提出し、各提案の受信者アドレスを HC アドレスに設定し、適切な gasLimit を設定しました。呼び出しスタックは次のようになります。
3) 送金して退出する<br/>childDAOに送金されたお金は、当初の契約に従って一定期間後に引き出すことができます。ハッカーが利益を得る時期が来た。 2. 予防と思考コードから判断すると、この攻撃が成功した要因は 2 つあります。1 つは、DAO 残高の減額と Ether 転送の 2 つの手順の順序が間違っていること、もう 1 つは、未知のコードが制限なく実行されたことです。 アプリケーションコードシーケンスの観点から、DAO 残高チェックは Ether 転送の前提条件であり、DAO 残高ステータスは最新のステータスをタイムリーに反映できる必要があるため、Ether 転送前に DAO 残高を差し引く必要があります。問題のあるコード実装では、最も深い再帰が戻ってハッカーの DAO 残高を正常に差し引くものの、その上の再帰呼び出しでの残高チェックがすべて正常に終了しており、最新の残高を判別する機会がないため、この時点ではハッカーの DAO 残高の差し引きは無意味です。 未知のコードの無制限実行に関しては、現在ハッカーはSolidityが提供する匿名フォールバック機能を使用していますが、コントラクト間のメッセージの受け渡しはオブジェクト指向プログラム開発におけるメソッド呼び出しと完全に類似しており、コールバックを待機するためのインターフェースを提供することはデザインパターンにおける一般的な手法であるため、未知の通常の関数を実行することは完全に可能であるため、この未知のコード実行は原理的にはより多くのシナリオで発生する可能性があります。 同様のハッキング事件はイーサリアムに限らず、将来的にはRootstockなどのプラットフォームでも再び発生する可能性があります。これは、脆弱性がアプリケーション レベルにあり、Ethereum 自体の問題ではないためであり、この攻撃はチューリング完全でないプラットフォームでも機能するため、「チューリング完全性」に起因するものでもないためです。一般的に、アプリケーションが複雑になるほど、アプリケーション内でセキュリティの問題が発生する可能性が高くなります。 このハッキング事件は、私たちに多くのことを考えさせます。TRUST MACHINE 上の未知のコードを信頼すべきでしょうか?分散型システムには、「一時停止」に備えて設計の初期段階で緊急介入コードを含める必要がありますか?問題が発生した場合に世論の統制や情報開示を行うための緊急時対応計画は用意しておくべきでしょうか?プロジェクトは、公開前にコミュニティによるより長いレビューとテストを受ける必要がありますか? このハッキング事件は、イーサリアム、分散化、ブロックチェーンの終焉を意味するものではありません。この教訓は深いものですが、もし学ぶことができれば、THE DAO と Ethereum だけでなく、ブロックチェーン コミュニティ全体にも利益をもたらすでしょう。 |
<<: 北京航空航天大学卒業生:ビットコインで5億円稼ぎ、上場企業の株主に
>>: プルーフ・オブ・ステーク(PoS)で何が問題になったのでしょうか?
オリジナルの英語版 IPFS ウィークリーニュースレターを購読する: https://mailchi...
4月14日、ビットコインの価格は64,900ドルでピークに達し、その後27%の調整が起こり、ビットコ...
ビットコインの実験は10年間続いており、過去に経験した厳しい環境にもかかわらず、すべてのデータはビッ...
クレイジー解説: この記事はジャーナリスト向けの The DAO 事件の紹介で、基本的な技術的知識、...
ボリュームがサポートを破ることができない場合は、レジスタンスを突破した後すぐに介入する1. 市場動向...
ヘッジファンド業界の最大手企業の一部が、暗号通貨分野にさらに深く参入している。事情に詳しい関係者によ...
10月29日、DOGEは急騰し、0.16ドルを突破し、24時間で17%増加しました。米国の選挙が近づ...
第0章 はじめに最近の拡張論争では、ブロックサイズが拡張されなければ、ビットコインの取引混雑を規制す...
HBOのドキュメンタリーは、ビットコインの創始者サトシ・ナカモトの謎を解明したと主張している。しか...
新しいモバイル ビットコイン ウォレットが登場するたびに、人々はその新機能を心待ちにしています。過去...
オーストラリアの国家運輸委員会(NTC)は最近、2040年陸上交通管理レポートを発表しました。報告書...
流行病の影響により、BTCを含む世界経済の株式市場、石油、金はすべて深刻な打撃を受けました。 2月2...
最近、カナンテクノロジーは世界トップクラスのマイニング大手であるジェネシスデジタルアセット(以下、ジ...
ロイター通信によると、中米経済統合銀行(Banco Centroamericano de Integ...
クレイジー解説: この記事では、これまでで最も簡単な Ethereum マイニング ガイドを紹介しま...