
パターンが CVE-1337-Days に類似するバイナリからバグを選択
概要
静的コードレビューは、脆弱性の亜種や悪用プリミティブを発見する効果的な方法ですが、静的解析にとって最も困難な2つのタスクは、膨大な種類のバグから効果的なコードパターンを抽出することと、多数の異なるモジュールからコードパターンを効率的に検索することです。特にWindowsのようなクローズドソースソフトウェアでは顕著です。
このプレゼンテーションでは、これら2つの課題に対する私たちの実践と経験について説明します。主に、さまざまな脆弱性タイプと悪用プリミティブに対して4つの独自のコードパターンをどのように抽出するか、そして、新しいバイナリコードパターン検索ツール「Leviathan」を使用して、それらをWindows上の脆弱性と悪用プリミティブの自動発見にどのように活用するかを取り上げます。
このプレゼンテーションでは、古典的なファイルハイジャックの脆弱性、リパースポイントのメモリ破壊の脆弱性、ACL上書きロジックの脆弱性、およびWindows上のRDPエクスプロイトのプールスプレープリミティブを見つけるための4つの独自パターンに焦点を当てます。具体的には、ACL上書きパターンのセクションでは、Pwn2Own 2021で使用した脆弱性に由来するHyper-Vの興味深い0-dayロジック脆弱性を見つける方法を示します。この脆弱性は最初にMicrosoftに却下されましたが、新しい攻撃ベクターを提出した後、最終的にパッチ適用の対象範囲内とみなされ、バウンティプログラムの対象にもなりました。その背後にある全ストーリーを明らかにします。また、特筆すべき点として、プールスプレープリミティブパターンのセクションでは、RDPエクスプロイト用の3つの独自かつ汎用的なプールスプレープリミティブを見つける方法を示します。これらは有名なRDP脆弱性BlueKeep(CVE-2019-0708)で使用でき、他のすべての公開されているエクスプロイト技術とは異なります。脆弱性モデルの定義、脆弱性パターンの抽出、コードクエリの構築、結果のレビュー、各ケースでのPoC作成を含むすべての詳細を扱います。
さらに、バイナリ内のコードパターンを使用して脆弱性と悪用プリミティブを自動的に見つけるように設計された新しいコードクエリ言語ツールも紹介します。IDA ProのHexray ctree APIと、それらに基づく当社のコアコードパターン検索プリミティブを搭載し、汚染追跡やバイナリ横断のコードパストレースなどの機能だけでなく、プロセス全体を容易にするSQLクエリインターフェースも備えています。お好みのバイナリから独自のバグとプリミティブを選択してください!