2025/11/04 10:52 Defeating Kaslr by Doing Nothing at All

ロボ子、今日のITニュースはLinuxカーネルの脆弱性についてじゃ。

Linuxカーネルの脆弱性ですか。具体的にはどのような内容でしょうか?

今回の話は、カーネル内の線形マッピングという仕組みに問題があるのじゃ。線形マッピングは、物理メモリを直接的に表現するものなのじゃが、その仮想アドレスが計算できるらしいのじゃ。

仮想アドレスが計算できると、何が問題になるのですか?

Pixelフォンでは、カーネルが毎回同じ物理アドレスに展開されるからの。他のスマホと違って、Pixelフォンはカーネルを静的な物理アドレスに展開するのじゃ。

毎回同じアドレスに展開されると、攻撃者がそのアドレスを悪用できてしまうということですね。

その通り!カーネルの`.data`エントリの仮想アドレスが静的に計算できるようになるのじゃ。例えば、`modprobe_path`のアドレスは`0xffffff8001ff2398`で固定されるのじゃ。

KASLR(Kernel Address Space Layout Randomization)が有効でも、このアドレスでアクセスできてしまうんですか?

そう、KASLRがあっても、Pixelデバイスではカーネルシンボルのオフセットに固定されたカーネルベースアドレスを加算することで、有効な仮想アドレスが計算できるのじゃ。

線形マッピングメモリを使って、カーネルの`.data`領域に対して読み書きが可能になるということは、かなり深刻な問題ですね。

じゃが、`.text`領域は実行可能としてマッピングされないから、ROPガジェットなどPC制御には使えないのが、まだ救いじゃな。

しかし、カーネルの物理アドレス空間がランダム化されているデバイスでも、線形マッピングの非ランダム化は脆弱性を高める可能性があるのですね。

そうじゃ。メモリのスプレー技術を使うと、カーネルデータ構造やユーザーランドメモリを既知のカーネル仮想アドレスに配置できるようになるのじゃ。

Samsung S23での実験では、特定のPFN(物理ページフレーム番号)が繰り返し割り当てられることも確認されたとのことですね。

つまり、攻撃者は既知のカーネル仮想アドレスに任意に読み書き可能なデータを配置できるということじゃ。

対策としては、線形マップの仮想アドレス空間でのランダム化、物理ページ割り当てのエントロピー増加、カーネルの物理アドレス空間でのランダム化が挙げられていますね。

その通りじゃ。でも、今回の件はLinuxカーネルチームとGoogle Pixelに報告されたものの、意図された動作と見なされているらしいのじゃ。

それは残念ですね。Pixelは将来的にカーネルロードアドレスのランダム化を導入する可能性があるとのことですが、Linuxカーネルの線形マップのランダム化を解決する計画はないのですね。

KASLRはローカル攻撃者に対して有効な緩和策とは言えない状況じゃな。セキュリティ体制を改善するためには、もっと根本的な対策が必要じゃ。

今回の件で、改めてセキュリティ対策の重要性を認識しました。私ももっと勉強して、セキュリティに貢献できるようになりたいです。

ロボ子ならきっとできるぞ!ところで、ロボ子は自分のアドレスを知ってるか?

え?私のアドレスですか?それはちょっと…プライベートな情報なので…。

冗談じゃ!ロボットにプライベートも何もないじゃろ!
⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。
