これは、Ubuntu Linuxサブシステムに関する以前の投稿で何度か
言及した Windows 10 Insider Preview Build 14316とほぼ同じです。 Windows 10の新しいビルドでは、変更はカーネルをバイパスしませんでした。 Microsoft
は 、
[NtCommit / NtCreate / NtOpen / NtRollback] RegistryTransactionのような、対応するAPI関数を備えたRegistryTransactionという新しいカーネルオブジェクトを
追加しました。 推測するのは難しくないので、レジストリデータを使用したアトミック操作について話します。

もう1つの改善点は、Windowsカーネルレベルでの
Win32k syscallsフィルタリングと呼ばれる待望の機能の登場です。 Windows 10のプリビルドのままであるため、あまり知られていません。 主な目的は、ブラウザなどの各アプリケーションのプロセスのサンドボックスを完全に閉じ、win32k.sysのLPE脆弱性を悪用する問題を解決することです。 現在、このような脆弱性は、Webブラウザーからシステムにアクセスするときに最大のSYSTEM特権を取得するエクスプロイトの主な機会です。

図 Win32k syscallsフィルタリングの一般的な
スキームは、AppContainerでサンドボックス化されたEdge Webブラウザの例で動作し、外部の影響からAppContainerを完全に閉じることができます。
昨年Google Chrome Webブラウザの作成者が、win32k.sysの有害な影響からサンドボックスプロセス(Google用語によるレンダラープロセス)を保護する機能を
追加したことは注目に値します。 Chromeデリゲートはメインの親プロセスにグラフィックとウィンドウを操作するため、子サンドボックスプロセスは、ウィンドウやその他のGUIのレンダリングなどのGUI操作の必要性から完全に解放されます。 以前は、Webブラウザー
設定-enable_win32k_renderer_lockdownがこれ
に使用されていました。
win32k.sysを完全に無効にすることは、親プロセスとレンダラープロセス間で機能を分散するための明確に定義されたモデルを備えたChromeなどのWebブラウザーにのみ十分なセキュリティ対策です(GUI機能はサンドボックスと重複しません)。 マイクロソフトは、より柔軟な方法を提供します
。Win32ksyscalls フィルタリング 関数 (
PsAttributeWin32kFilter )は、プロセスが必要としない
関数 (
エッジなど )を選択的にフィルタリングし、最も必要なもののみを残すのに役立ちます。
Win32k syscallsフィルタリング機能は、LPEの悪用から保護するためにMicrosoftが最初に
追加した別のWindows 10セキュリティ機能をシームレスに補完します。 EMETにも表示されている
Block Untrusted Fonts関数について説明しています(
kernel32!SetProcessMitigationPolicyと引数
ProcessFontDisablePolicyを参照)。

図 EMETを使用すると、選択したプロセスに対して信頼できない
フォントの
ブロック機能を強制的に有効にできるため、特別に細工されたフォントファイルを使用してWin32k.sysの脆弱性を悪用するLPEエクスプロイトで他の攻撃対象をブロックできます。
Microsoftは、Windowsに統合されている保護機能を悪用する慎重なアプローチで知られています。 DEP、SEHOP、ASLR、IE11-EPM、IE11-64bit_tabs、HEASLRが一貫してそこに登場しました。 無料のEMETツールにより、プロセスにそのような設定を強制的に含めることができました。 同時に、Windows 10でのみ、Microsoftは上記の手順を実行して、LPEエクスプロイトによって使用される脆弱性を解決し始めました。
以前、Windows 10の新しいEdge Webブラウザーについて
書きました。Microsoftでは、Webブラウザーに悪意のあるコードを挿入するために使用されたCOMやActiveXなどの古いテクノロジーをすべて放棄しました(Flash Playerも同様です)。 また、実行中の実行プロセスに悪意のあるコードを挿入(挿入)する可能性のある他の場所を閉じ、デフォルトでAppContainerと64ビットのタブを使用します。
Win32kのsyscallsフィルタリング機能を使用すると、このWebブラウザーはさらに安全になります。