TIKTAG」と名付けられた新たな投機的実行攻撃は、ARMのMemory Tagging Extension(MTE)を標的とし、95%以上の確率でデータをリークするもので、ハッカーはこのセキュリティ機能をバイパスすることができる。
サムスン、ソウル大学、ジョージア工科大学の韓国人研究者チームが共同署名したこの論文は、グーグル・クロームとLinuxカーネルに対する攻撃を実証している。
MTEはARM v8.5-Aアーキテクチャ(およびそれ以降)で追加された機能で、メモリ破壊を検出・防止するように設計されている。
このシステムは、16バイトのメモリ・チャンクに4ビットのタグを割り当てる低オーバーヘッドのタグ付けを使用し、ポインタのタグがアクセスされたメモリ領域と一致するようにすることで、メモリ破壊攻撃から保護する。
MTEには、同期、非同期、非対称の3つの動作モードがあり、セキュリティと性能のバランスをとっている。
研究者らは、TIKTAG-v1とTIKTAG-v2という2つのガジェット(コード)を使用することで、投機的実行を悪用して、高い成功率と短時間でMTEメモリタグをリークできることを発見した。
これらのタグをリークしても、パスワード、暗号化キー、個人情報などの機密データが直接暴露されることはありません。しかし、理論的には、攻撃者がMTEによって提供される保護を弱体化させ、ステルス性の高いメモリ破壊攻撃に対してセキュリティシステムを無力化させる可能性があります。
TIKTAG攻撃
TIKTAG-v1 は、CPU の分岐予測やデータプリフェッチ動作における投機縮退を悪用して MTE タグをリークします。
研究者らは、このガジェットがLinuxカーネルに対する攻撃、主に投機的メモリ・アクセスを伴う機能に対して有効であることを発見したが、カーネル・ポインタの操作も必要である。
攻撃者は、投機的実行パスを呼び出すためにシステムコールを使用し、メモリタグを推測するためにキャッシュの状態を測定する。
TIKTAG-v2は、投機的実行におけるストアからロードへのフォワーディング動作(値がメモリアドレスにストアされ、すぐに同じアドレスからロードされるシーケンス)を悪用する。
タグが一致した場合、値は転送され、ロードは成功し、キャッシュ状態に影響を与えるが、不一致の場合、転送はブロックされ、キャッシュ状態は変化しない。
このように、投機的実行後のキャッシュ状態を調べることで、タグチェックの結果を推測することができる。
研究者らは、Google Chromeブラウザ、特にV8 JavaScriptエンジンに対するTIKTAG-v2ガジェットの有効性を実証し、レンダラー処理におけるメモリ破壊の脆弱性を悪用する道を開いた。
業界の対応と緩和策
研究者らは、2023年11月から12月にかけて、影響を受ける団体に調査結果を報告し、概ね好意的な反応を得たが、即時の修正は実施されていない。
arxiv.orgに掲載されたテクニカル・ペーパーでは、TIKTAG攻撃に対する以下の緩和策を提案している:
- 投機的実行がタグ・チェックの結果に基づいてキャッシュ・ステートを変更することを防ぐために、ハードウェア設計を変更する。
- 投機バリア(sb命令やisb命令など)を挿入し、クリティカルなメモリ操作の投機実行を防止する。
- パディング命令を追加して、分岐命令とメモリ・アクセスの間の実行ウィンドウを拡張する。
- サンドボックス機構を強化し、投機的なメモリアクセスパスを安全なメモリ領域内に厳密に制限する。
ARMは事態の深刻さを認識し、数カ月前に速報を発表しているが、これを機能の妥協とは考えていない。
「アロケーションタグがアドレス空間のソフトウェアにとって秘密であることは想定されていないため、正しいタグ値を明らかにする投機的なメカニズムは、アーキテクチャの原則の侵害とは見なされない」とARMの速報は述べている。
Chromeのセキュリティチームは問題を認めたが、V8サンドボックスはメモリデータとMTEタグの機密性を保証することを意図していないため、脆弱性を修正しないことを決定した。
さらに、Chromeブラウザは現在、デフォルトでMTEベースの防御を有効にしていないため、早急な修正の優先順位は低い。
Pixel 8デバイスのMTEオラクルは、その後2024年4月にAndroidセキュリティチームに報告され、報奨金の対象となるハードウェアの欠陥として認められた。
Comments