The Windows IOCTL Census: A Corpus-Scale, Multi-Architecture Database of the Driver Control-Code Surface
本論文は、決定論的かつアーキテクチャに依存しない、リフトされた中間表現の解析を通じて、シンボリック実行を用いることなくドライバー集団の80%をカバーすることに成功した、複数のアーキテクチャにわたる27,087個の署名済みWindowsドライバーのデコードされたコントロールコードとコールグラフを含む、数千万行のデータからなる公開クエリ可能なデータベースであるWindows IOCTL Censusを紹介するものである。
原論文は CC BY 4.0 (http://creativecommons.org/licenses/by/4.0/) でライセンスされています。 これは以下の論文のAI生成解説です。著者が執筆または承認したものではありません。技術的な正確性については原論文を参照してください。 免責事項の全文を読む
Windowsオペレーティングシステムを、巨大で賑やかな一つの「都市」だと想像してみてください。この都市には、「ドライバー」と呼ばれる数千もの専門的な「サービスステーション」が存在します。これらのドライバーは、コンピュータがグラフィックスカードやプリンター、Wi-Fiアダプターといったハードウェアと対話することを可能にします。
これらのステーションと対話するために、一般の人々(権限のないユーザー)は、「IOCTLコード」と呼ばれる「チケット」を送ります。これは、「このページを印刷せよ」や「この画像を表示せよ」といった特定のコマンドのようなものです。
問題点:開けっ放しのゲート
通常、これらのサービスステーションには警備員が配置されています。しかし、時には警備員が居眠りをしていたり、ステーションの鍵が壊れていたりすることがあります。もし一般の人が、鍵の壊れたステーションにチケットを送った場合、彼らは「コントロールルーム(カーネル)」に忍び込み、都市のルールを書き換えてしまうかもしれません。これが、コンピュータを乗っ取るハッカーの手口です。
長い間、セキュリティ研究者には、これらの壊れた鍵を見つけるための2つの方法がありました。
- 「スーパースキャナー」(シンボリック実行): これは、あらゆるサービスステーションのあらゆるドアを実際に歩いて回って、開いているドアがないか確認しようとするハイテクなロボットのようなものです。しかし、これらは動作が遅く、混乱しやすく、また「現代的な」部分(64ビットシステム)しかチェックできません。彼らは、危険な建物が多く存在する古い32ビットの建物については、完全に諦めてしまいます。
- 「指名手配リスト」(キュレートされたリスト): これは既知の悪党のリストです。正確ではありますが、すでに捕まえた犯罪者しか含まれていません。影に隠れている新しい犯罪者を見つける役には立ちません。
ギャップ: 建物が古かろうが新かろうが、すべてのサービスステーションとすべてのチケットタイプを網羅した完全な地図を持つ者は、これまで誰もいませんでした。
解決策:Windows IOCTL センスス(調査)
この論文の著者たちは、その欠けていた地図を作り上げました。彼らはそれを Windows IOCTL Census と呼んでいます。
すべてのドアを通り抜けようとする(遅くてエラーが出やすい)代わりに、彼らは異なるアプローチを採用しました。
- 「翻訳者」(決定論的リカバリ): どんな言語(古い32ビットでも新しい64ビットでも)の設計図でも、即座に読み解くことができる翻訳者を想像してください。この翻訳者は、ボタンを押したらどうなるかを「推測」しようとするのではなく、単に設計図を読んで、どのボタンが存在し、それがどこにつながっているのかを正確に読み取ります。
- 結果: 彼らは、27,087個のドライバーを含む膨大なデータベースを作成しました。彼らは310万個の異なる制御コード(チケット)と、800万個の内部関数をマッピングしました。
どのように実用的なものにしたか(3ステップのプロセス)
著者たちは単にデータを投げ出したわけではありません。彼らはそれをパイプラインとして整理しました。
Recover(マップ作成者):
彼らはすべてのドライバーをスキャンし、「ディスパッチルーチン」を抽出しました。これは、すべてのサービスステーションのメインロビーを特定し、そこで使用できるすべてのチケットタイプ(IOCTLコード)をリストアップすることだと考えてください。彼らは、古い建物(32ビット)と新しい建物の両方に対してこれを行いました。これにより、全ドライバーの**80%**をカバーしました。- 主な成果: 「スーパースキャナー」が触れることのできなかった「古い建物」(32ビット)を発見しました。
Enrich(リスク評価者):
すべてのチケットが危険なわけではありません。彼らはスマートなAI(LLM)を使用して、最も疑わしいロビー(セキュリティガードが脆弱なもの、あるいは入力チェックが行われていないもの)のみを調査しました。AIは推測したのではなく、マップ作成者が発見した具体的な設計図の詳細に基づき、「リスク評価」(クリティカル、ハイ、ミディアム)を付与しました。- 主な成果: 安全なステーションに時間を無駄にすることはありませんでした。彼らは、危険に見えるステーションだけに焦点を当てました。
Rank(優先順位リスト):
最後に、検索可能なリストを作成しました。研究者が2万7千個のドライバーのうちどれを最初にチェックすべきか迷う必要はありません。彼らは今、「特定の危険なチケットタイプを持つすべてのドライバーを見せてほしい」とか、「最もリスクの高いステーション・トップ100を見せてほしい」といった問いかけができるようになりました。
何を見つけたのか
- 地図は実在する: 彼らは、既知の脆弱性と照らし合わせて、自分たちの地図を検証しました。例えば、彼らは既知の危険なドライバー(NVIDIAディスプレイドライバー)を見つけ、それが彼らの危険度リストで非常に高くランク付けされていることを確認しました。これは、システムが機能していることの証明です。
- 「古い街」は満載である: 32ビットのドライバーを含めることで、以前のツールが無視していた巨大な攻撃対象領域(アタックサーフェス)を明らかにしました。
- クロスチェック: 彼らは、彼らの「設計図読み取り」手法を「スーパースキャナー」ロボットと比較しました。ロボットはいくつかの事柄を見つけるのは得意でしたが、多くの古い建物を逃していることがわかりました。設計図による手法は、ロボットが見ることができなかったものを見つけ、逆にロボットが見つけたものを設計図の手法が見落とすこともありました。
彼らが主張していないこと
- すべてのバグを見つけたわけではない: 彼らはバグの「可能性」(開いているドア)は見つけましたが、それが実際に機能するかどうかをすべて手動で検証したわけではありません。
- 「キルリスト(殺害リスト)」は公開しない: 彼らは、研究者が独自の作業を行えるように「地図(ドライバーの構造)」は公開しました。しかし、悪意のある者がこの地図を使ってすぐにコンピュータを攻撃することを防ぐため、具体的な「危険な箇所(バグの正確なコード位置)」は非公開としています。
- 魔法の解決策ではない: これは、研究者が作業の優先順位をつけるためのツールです。それは、「干し草の山の中から針を探す」問題を、「ここにあるのは、おそらく針である可能性が高いリストです」という問題に変えるものです。
結論
著者たちは、Windowsドライバー・セキュリティのためのGoogleマップを構築しました。以前は、研究者は目的もなく彷徨うか、短いリストに頼るしかありませんでした。しかし今、彼らには、どこにドアがあり、どのドアが開いており、最も古く放置されている街のどの部分にあるのかを示す、包括的で検索可能なデータベースがあります。これにより、彼らは最も重要な場所にエネルギーを集中させることができるのです。
自分の分野の論文に埋もれていませんか?
研究キーワードに一致する最新の論文のダイジェストを毎日受け取りましょう——技術要約付き、あなたの言語で。