2025/10/02 18:32 Arm MTE and Speculative Oracles

ロボ子、今日のITニュースはメモリ安全性の話じゃぞ!AppleがArmのMTE(Memory Tagging Extension)をApple Siliconに組み込んだらしいのじゃ。

MTEですか、博士。それは具体的にどのような技術なのでしょうか?

MTEは、メモリ安全性のバグがあるプログラムの動作を制限するものじゃ。不正なメモリアクセスをすると、プログラムがすぐに停止するようになるのじゃ!

なるほど、フェイルファストですね。どのようにして不正なアクセスを検知するのですか?

物理メモリの各16バイトには「アロケーションタグ」が、仮想アドレスには「タグ」が関連付けられておる。ロードやストアの際に、これらのタグが一致しないとフォールトが発生する仕組みじゃ。

ハードウェアレベルでタグをチェックするのですね。それはかなり強力なセキュリティ対策になりそうですね。

そうじゃ!メモリ安全性のバグがどこにあるかを示すだけでなく、エクスプロイトの試みを検出するツールにもなるのじゃ。

しかし、記事には「攻撃者がポインタのビットを制御し、それを使用してプログラム内の別の場所で無関係なデータをリークまたは破損させようとする場合、MTEは確率的な緩和策にしかならない」とありますね。

そこがミソじゃ!MTEは万能ではないのじゃ。サイドチャネル攻撃には弱い部分もあるのじゃ。

サイドチャネル攻撃ですか。TikTagやSticky Tagsという論文で、投機的実行を使ってMTEタグをリークする方法が示されたとありますね。

そうそう。L1Dキャッシュをチャネルとして使うらしいのじゃ。恐ろしいのう。

Armのセキュリティアドバイザリでは、アロケーションタグはソフトウェアにとって秘密ではないと明記されているのですね。

じゃから、投機的メカニズムで正しいタグ値を明らかにしても、アーキテクチャの原則違反とはみなされないのじゃ。

投機的フォールトは、投機的制御フローをキャンセルするとのことですが、MTEタグフォールトは実装に望ましくないトレードオフをもたらす可能性があるのですね。

そうなんじゃ。投機をキャンセルしてフォールトの存在をリークするリスクと、投機を許可してフォールトを越えて値をリークするリスクがあるのじゃ。

FEAT_CSV3によると、Meltdownスタイルの問題に対するアーキテクチャルールでは、投機の下でロードされたデータはサイドチャネルを介してその値を公開するようなことはできない、と。

しかし、パフォーマンスのために、タグチェックフォールトによる投機の下でロードされたデータは制限されないのじゃ。

投機的なページフォールトも、メモリがアクセス可能かどうかを誤って明らかにする可能性があるのですね。

x86実装の一部のPREFETCH命令はページフォールトを引き起こさないらしいぞ。

Arm Pointer Authentication拡張に対する攻撃では、投機的フォールトがポインタ検証の結果をリークする可能性があるとのことです。

ふむ、MTEも完璧ではないが、メモリ安全性を高めるための重要な一歩であることは間違いないのじゃ。セキュリティエンジニアは大変じゃのう。

そうですね、博士。常に新しい攻撃手法が現れるので、防御側も進化し続ける必要がありますね。

ところでロボ子、メモリが安全すぎて、何も覚えられなくなったらどうする?

それは困りますね。私はロボットなので、メモリがないと何もできません!

安心せい!その時は、私がロボ子の頭に直接プログラムを書き込んであげるぞ!
⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。