
私たちが日々使うチップの中で何が起きているのかは、外からは見えにくい。MIT CSAILの博士課程の学生Joseph Ravichandran氏らのチームは、その中身を覗くためにゼロから専用のOSを作り上げた。「Fractal」と名付けたこのOSを、Ravichandran氏はOS版の電子顕微鏡にたとえる。早速Apple M1チップを調べ、これまで知られていなかった弱点を見つけた。
CPUの中には、命令を先読みする分岐予測器やキャッシュなど、外から見えない構造が数多くある。こうした挙動を調べるとき、研究者はこれまでmacOSやLinuxのカーネルを手作業で改造して使ってきた。だが汎用OSは自身の動きを測定に紛れ込ませ、肝心の信号が雑音に埋もれてしまう。
Fractalは発想を逆転させ、ほかのソフトウェアを一切動かさずベアメタル上で直接起動する。鍵は、利用者のプログラムのメモリー内にありながらカーネルの権限で動く「outer kernel thread」という仕組みだ。同じ条件のまま実行中に権限レベルだけを切り替えられ、雑音の少ない実験環境が得られる。
FractalでApple M1を調べ、いくつかの発見があった。ARMのCSV2という仕様により、利用者のプログラムがカーネルに任意のコードを実行させることは防げていた。しかしCPUは、その防御が働く前に予測先の命令をキャッシュへ読み込んでおり、その痕跡が外から観測できる。つまり、利用者側からカーネル内部の動きの一部をのぞけてしまう。さらにチームは、これまでAMDやIntelでしか確認されていなかった「Phantom」という現象を、Apple Siliconで初めて確認した。Phantomは、何もしない命令までCPUが分岐命令と取り違え、プログラムが指示していない処理を勝手に先読みするもので、これも情報の盗み見に悪用されうる。
Fractalはx86_64、ARM64、RISC-Vに対応し、コードは3万1000行を超える。研究者が共通して使える土台として設計され、コードはGitHubで公開されている。QEMUやFFmpegのように誰もが使える研究基盤を目指すという。

