ニュース

Apple M1に実装されているセキュリティ機能「ポインタ認証」は完璧ではない。MITが警鐘

 米マサチューセッツ工科大学(MIT)のコンピュータ科学人工知能研究所(CSAIL)は10日(現地時間)、Apple M1が採用しているArmの命令集「ARMv8.3」のセキュリティ向け拡張命令の1つ「ポインタ認証」にバグ「PACMAN」があり、サイドチャネル攻撃により無効化できることを明らかにした。このバグはハードウェアのメカニズムを用いているため、ソフトウェアで修正することも不可能だという。

 ポインタ認証は、ARMv8.3で採用されているメモリを保護するセキュリティ機能の1つであり、ポインタ利用時に、先頭に暗号化された16bitのPointer Authentication Code(PAC)と呼ばれるハッシュを付加して署名を行なう。

 このPACはコンテキストとポインタの値の両方から計算されるものであり、検証時に両方の値を比較し、正しい場合のみ処理が続行できる。よって、攻撃者はコンテキストだけ入手したとしても、ポインタの値が不明だと、検証段階で例外が発生し、プログラムの実行が強制終了されてしまう。

 PACMANは、投機実行の仕組みを用いてPACを推測する。ポインタ検証命令(AUT)が正しいPACを推測できた場合、メモリのロード処理の投機実行が始まるが、誤ったPACである場合は命令を破棄する。PACMANは投機実行であるため、誤ったPACを推測してもプログラムは終了せず、正しい値が得られるまで繰り返し実行できてしまう。また、痕跡も残らないとしている。

 もっとも、PACMANはあくまでも正しいPACを推測できる脆弱性であるため、悪用される可能性のあるバグの発見につなげただけである。とはいえ、最悪カーネル権限の取得に至るとしており、将来のCPUの設計者はこれを考慮した設計を行なう必要があり、ソフトウェア開発者もポインタ認証だけに頼らない保護を行なう必要があると指摘している。