マイクロソフト、Windows 10カーネルのセキュリティメカニズムを強化

有名なWindows内部デバイスの第一人者であるAlex Ionescuは、新しいWindows 10 Insider Preview 14332ビルドに登場するWindows 10カーネルの新機能を明らかにしました。ブログの前半で、プログラムおよびドライバー開発者がテストに使用するWindows 10のInsider Previewバージョンについて繰り返し言及しました。 それらに表示される更新は、このOSに対する1つの大きな更新として、すべてのWindows 10ユーザーにリリースされます。







今回は、カーネルモードのASLR(カーネルASLR)について説明しています。これについては、Ring3 Windowsコンポーネントの対応するものとは異なり、あまり知られていません。 Windows 10より前の14332 Windowsでは、システムイメージ(ドライバー)およびWindows Vista SP1以降でのみ KASLRの部分的な実装のみが使用されていました。 現在、Windowsは再起動のたびに、ドライバーの配置の仮想アドレスを変更するだけでなく、実際には、システムの仮想アドレス空間で動作するすべてのOS構造とコンポーネントも変更します。



Windows(Apple OS X、iOS、Google Androidなど)がASLRを実装する際に追求する主な目標は、仮想アドレススペースのシステム部分の重要なデータ構造とシステムイメージを、再起動ごとに新しいアドレスに移動することです。 さらに、Windowsカーネルのデータ構造は、何らかの形でRing3に転送できますが、カーネルオブジェクトへの直接または間接のポインターを含めることはできません。 これは、ASLRを実装するための要件でもあります。





図 Ionescuによると、Windows仮想メモリマネージャーでは前例のないことが起こり、ディレクトリとページテーブルの投影アドレスは動的になります。 システム仮想アドレス空間の固定アドレスに依存するローカル権限エスカレーション(LPE)の悪用は、正常に機能しなくなります。 例外は、HALメモリ領域、およびPEB.GdiSharedHandleTableの 関連するポインターでのみ使用されます。 この抜け穴は、エクスプロイトでKASLRを部分的にバイパスするために引き続き使用できます。



Win10 14332以降、Windowsは、ページテーブルカタログ(PDE)、ページテーブル(PTE)、システムPTEアドレス、ハイパースペース、PFNデータベースなどの仮想メモリマネージャーの重要なデータ構造の仮想ベースアドレスを変更できるようになります。 Windowsカーネルのアドレス空間は常にページテーブルの先頭のベース開始アドレスと上記の構造を暗示し、アドレスはカーネルコンパイルの段階で縫い付けられ、32ビットまたは64ビットの仮想アドレスの場合にのみ異なる場合があります。 スペース、およびPAEアドレッシングの使用。



マイクロソフトの新しい対策により、カーネルの仮想アドレス空間内の固定仮想アドレスに依存するLPEエクスプロイトに対するWindowsの耐性が大幅に向上します。 以前に、マイクロソフトが追加したLPEエクスプロイトに対する保護策について説明しました。これにより、アプリケーションはWin32kシステムサービスへのアクセスをフィルタリングできます( Win32k syscallsフィルタリング )。これは、win32k.sysの脆弱性がトリガーされたときにエクスプロイトによってよく使用されます。 これらの機能は両方とも、Windows 10ユーザーが新しいビッグOSアップデートで利用できるようになります。



All Articles