ニュース

Windows 7のMeltdown対策パッチに脆弱性

~セキュリティパッチがより深刻な問題を生む結果に、3月で修正済み

プロセスメモリマップおよびPML4へのアクセスを実現

 Microsoftが、2018年1月に提供したWindows 7/Windows Server 2008 R2向けのセキュリティパッチに、脆弱性が発見された。

 セキュリティ研究家のUlf Frisk氏が発見したもので、同氏は脆弱性を「Total Meltdown」と名付け、3月27日に自身のブログに詳細を投稿している。

 それによれば、カーネルメモリと物理メモリへの完全なアクセスを可能にする「Meltdown」脆弱性(Google、CPUの投機実行機能に脆弱性発見。業界をあげて対策へ参照)の対策として、Microsoftが1月に提供したWindows 7/Windows Server 2008 R2の64bit版向けセキュリティパッチで、Total Meltdownが発見されたという。

 Total Meltdownを用いることで、あらゆるプロセスから物理メモリの完全な内容を毎秒ギガバイト(GB/s)レベルで読み出すことが可能なほか、任意のメモリへの書き込みも可能とされており、Meltdown対策のパッチでより深刻な脆弱性を実装するかたちとなってしまったと言える。

4GB/s超でメモリにアクセスできている

 脆弱性の原因は、CPUのメモリ管理ユニット(MMU)がプロセスの仮想アドレスを物理メモリアドレスに変換するために使用する、メモリ内ページテーブル階層「Page Map Level 4 (PML4)」について、MicrosoftがパーミッションビットをSupervisorではなくUserに設定していた点。

 これによって、通常はカーネル(Supervisor)のみがアクセスできるはずのページテーブルが、前述のとおりパーミッションビットがUserに設定されていたことで、ユーザモードで実行される全プロセスから利用できてしまうという。

 Windows 7およびWindows Server 2008 R2では、PML4は常に仮想メモリの固定アドレス「0xFFFFF6FB7DBED000」にマップされる仕様のため、上記のバグと組み合わせ、独自のページテーブルエントリをページテーブルに書き込んでアクセスするだけで、任意の物理メモリへのアクセスが行なえるという。

 Windows 10では、PML4はランダムアドレスにマップされており、また32bit版のWindowsではPML4が存在しないため、それらのWindowsでは上記の問題の影響は受けない。

 この問題は、すでに配信されている3月のセキュリティパッチで修正されているため、同氏は1月および2月のセキュリティパッチを適用しているユーザーに対し、早急に最新パッチを適用するよう推奨している。