web-dev-qa-db-ja.com

DARPAのCyber​​ Grand Challengeの受賞者は、以前は知られていない脆弱性を実際に発見しましたか?

DARPAは2016年8月4日にサイバーグランドチャレンジの勝者を発表しました DARPAサイバーグランドチャレンジ 。コンテストは、

敵が悪用する前にソフトウェアの脆弱性を検出、評価、パッチできる高度な自律システムの開発を加速するように設計されています。今日の最後のイベントで出場する7つのチームは、ホワイトハッカー、学者、民間セクターのサイバーシステムの専門家で構成されていました。

彼らは実際の課題を次のように説明しました:

競合他社は、ほぼ10時間にわたって、特別に作成されたコンピューターテストベッドで、キャプチャーフラグの古典的なサイバーセキュリティ演習を行いました。通常の月ではなく数秒以内に、ハッキングされやすい脆弱なコードを見つけてパッチを当て、防御システムが攻撃する前に対戦相手の弱点を見つけるようにマシンに挑戦しました。

優勝したシステムであるメイヘムは、DEF CONキャプチャーザフラッグコンペティションに正式に招待され、「歴史的にすべての人間トーナメントでマシンがプレイできるようになるのは初めてです」

私はDARPAで資料を読み、再度読みましたが、自動システムが2014年4月のレベルで何かを発見したとは信じられません Heartbleed バグ。これらの脆弱性は、公開されたマイクロソフトのセキュリティ通知や推奨されるアップデートなどのレベル(つまり、「バグファインダー」の方が自動パッチインストーラーの方が基本的なもの)にあったのではないかと思います。

Heartbleedまたは同様の実際の脆弱性に関連して、DARPAチャレンジテストベッドの技術レベルを知っている人はいますか?メイヘムが実際にCTFコンテストで人間と競争する時期はわかると思いますが、現時点では疑問です。

11
Dalton Bentley

DARPAテストベッド、CGC(サイバーグランドチャレンジ)は、変更されたLinuxプラットフォーム(DECREE)でした。そのバイナリ(システム用にコンパイルされた機械加工コード)には、7つのシステムコール(たとえば、終了、受信、fdwait、割り当てなど)のみが含まれていました。システムコード全体には、DARPAが作成したチャレンジバイナリ(CB)があり、ファジングに対する1つ以上の脆弱性、つまり、一部の文字の入力に対して脆弱です。

ファズテストの初期の例の1つは、ランダムなイベントをコードにフィードしてMacPaintのバグをテストするSteve Cappsの "Monkey"でした。 「サル」は、「1,000人のタイプライターにいる1000人のサルが最終的にシェイクスピアの全作品をタイプアウトする」ことを示唆しています。つまり、プログラムに十分なランダムまたはプロトコル細工の入力を送信すると、最終的にそれをクラッシュさせる方法が見つかります。ファズテストでは、通常、プログラムのクラッシュを引き起こさないセキュリティ上の脅威(スパイウェア、多くのウイルス、ワーム、トロイの木馬、キーロガーなど)は検出されません。ただし、予期しないプログラム入力(またはプログラム入力に関連するコードエラー)に基づくエクスプロイトを検出するため、TLS(トランスポート層の実装での不適切な入力検証によって引き起こされたバグであるハートブリードバグを検出できた可能性があります。セキュリティ)プロトコル(OpenSSL内)。

優勝チームのメイヘムは、指示されたファザー(マーフィー)と併せてシンボリックエグゼキューター(メイヘム)を使用しました。シンボリックエグゼキューターは、統合開発環境でシンボリックデバッガーを操作したことのあるユーザーにはおなじみです。つまり、基本的にはコードをステップ実行し、実行コードのさまざまな部分での入力に対するシンボリック値の割り当てと追跡を可能にするインタープリターです。つまり、Mayhemチームは、CB(Challenge Binaries)の一部をMayhemで静的に分析して、コードの脆弱性を検出(またはMurphyの提案を分析)することができました。これは、DARPAチャレンジ、つまり脆弱性を見つけてそれを実証するためのPOV(Proof of Vulnerability)の要件でした。残念ながら、プログラム内のパスの数は指数関数的に増加し、無制限のループ反復で無限になる可能性があるため、シンボリック実行はあまりうまくスケーリングしません。そのため、ヒューリスティックスまたはパス検索(マーフィーファザーを入力)により、このパスの爆発問題(コンピューティングメソッドヘルプの並列化も同様です)。

DARPA CGC(チャレンジ)では、CB(チャレンジバイナリ)の脆弱性を特定するだけでなく、POV(脆弱性の証明)のある脆弱性を文書化し、修復バイナリパッチ(RB)で脆弱性を修復する必要がありました。そのパッチは、パフォーマンス、脆弱性なしの正しい操作、および関連するコード(実行時間)に対する文字通りのパフォーマンスの影響の両方についてテストされます。これは、私が説明したことのいずれにも人間が貢献することを許可されていなかったことを考えると、かなり驚くべきことです。

優勝したメイヘムチームのブログはこちら メイヘムを解き放つ! 、DARPAグランドチャレンジルールとその他のドキュメントはこちら ダルパグランドチャレンジ関連ドキュメント 、ファジングについては、 ファズテスト およびここでのシンボリック実行 シンボリック実行

8
Dalton Bentley