研究

TEE に対するマイクロアーキテクチャ攻撃

TEE は、その内部のコードとデータが特権ソフトウェアからも保護されるように設計されています。通常の実行環境より強いこの保証があるからこそ、周囲のシステムを信頼できない場面 — 暗号鍵の管理、スマートフォン上での生体情報の処理、他者の所有するインフラ上での機微なデータに対する計算 — で用いられています。

一方で、その計算を実際に実行するハードウェアは、キャッシュ、分岐予測器、各種バッファ、共有されたメモリサブシステムから構成されています。私は、これらのコンポーネントに対するマイクロアーキテクチャ攻撃が、TEE が提供するはずのセキュリティ特性にどのような影響を及ぼすのかを研究しています。

とりわけ関心があるのは、Security Monitor が隔離を強制するために依存している状態もまた、それが保護しているデータと同じハードウェアの上に置かれている、という点です。

攻撃的セキュリティにおける LLM エージェント

大規模言語モデルの性能は近年大きく向上し、攻撃的セキュリティはその影響が最も強く現れる領域のひとつです。ただし、その能力がどのような形をしているのか — 攻撃のどの部分をエージェントが自力で遂行でき、どの部分がまだ届かないのか — は、まだ十分に分かっていません。

私はその形を測ることに取り組んでいます。リバースエンジニアリングとバイナリエクスプロイトは、いずれも依存関係のある長い手順の連鎖であるため、成功したかどうかだけでなく、どこまで進んでどこで止まったのかを観察できる点で対象として適しています。成功率だけを見ているとまさにこの部分が隠れます。プログラムを理解できたがそれを動くエクスプロイトに変換できなかったエージェントと、そもそも理解できなかったエージェントとでは、脅威としての性質がまったく異なります。

エージェントがどこで破綻するのかが分かって初めて、防御側の問いが扱えるようになります。エージェントがすでに得意な段階に対する保護は、かけたコストに見合う効果を返しません。同じ労力を、エージェントが再現性をもって失敗する段階に投じたほうがはるかに効きます。私はこの観察を、ソフトウェア保護に対する具体的な指針に変えることに取り組んでいます。LLM による攻撃への耐性を、期待するものではなく設計できるものにするためです。

RISC-V 特権ソフトウェアのセキュリティ

RISC-V はオープンな命令セットアーキテクチャであり、研究上の対象から実製品のシリコンへと急速に広がっています。一方で、OS の下で動作するファームウェアやハイパーバイザといった特権ソフトウェアのエコシステムはまだ若く、しかもマシンモードより上のすべてがそのコードを無条件に信頼しています。ここでの欠陥は、上位の保証を弱めるのではなく無効にします。

その欠陥を効率的に発見するため、この層を対象としたファジング基盤を開発しています。Hisame は OpenSBI や RustSBI といった RISC-V SBI 実装向けのカバレッジガイド型ファザーです。エミュレータを計装し、カバレッジをマシンモードの実行に限定してファームウェアのみを数え、引数チェックを通過する程度に妥当な呼び出し列を生成し、ファームウェア内部のメモリエラーを検出します。通常のファザーはそもそもこのコードに届きません。ファームウェアは、ファザーが前提とする基盤が存在するより前に動作するからです。

プロトコル実装の自動テスト

クラッシュを起こす入力の縮小は、入力がファイルであれば十分に理解された問題です。対象が状態を持った途端にそうではなくなります。削除したメッセージが、そもそもバグの存在する状態へサーバを遷移させていた当のメッセージかもしれず、素朴な縮小は保つべき性質を静かに壊してしまいます。

したがってプロトコル実装の最小化は、バイト列だけでなく状態を扱わなければなりません。対象自身の応答から近似的な状態機械を復元すれば、どのメッセージが構造を支えているのかを判断する基準が得られます。それが確定して初めて、バイト単位の削減に意味が生まれます。得られるものは地味で実務的です。クラッシュを実際に解析する人にとって、より小さく速いテストケースが手に入るということです。