New Windows Driver Signature bypass allows kernel rootkit installs

攻撃者は、Windowsカーネルコンポーネントをダウングレードすることで、Driver Signature Enforcementなどのセキュリティ機能を回避し、完全にパッチが適用されたシステム上にルートキットを展開することができる。

これは、Windows Update プロセスを制御して、オペレーティングシステムが完全にパッチが適用されたステータスを変更することなく、最新のマシンに古い脆弱なソフトウェアコンポーネントを導入することで可能になります。

Windowsのダウングレード

SafeBreachのセキュリティ研究者であるAlon Leviev氏は、このアップデート乗っ取り問題を報告したが、Microsoftは、管理者としてカーネルコードを実行することで可能であるものの、定義されたセキュリティ境界を越えるものではないとして、これを却下した。

Leviev氏は今年のBlackHatと DEFCONのセキュリティ・カンファレンスで、この攻撃が実行可能であることを示したが、問題は未修正のままであり、ダウングレード/バージョン・ロールバック攻撃の可能性を残している。

研究者は、Windows Downdateと呼ばれるツールを発表した。このツールは、カスタムダウングレードを作成し、DLL、ドライバ、NTカーネルなどの古くなったコンポーネントを介して、一見完全にアップデートされたように見えるターゲットシステムを、すでに修正された脆弱性にさらすことができる。

「私は、完全にパッチが適用されたWindowsマシンを過去の脆弱性の影響を受けやすくし、修正済みの脆弱性を未修正にし、世界中のWindowsマシンで “完全にパッチが適用された “という言葉を無意味なものにすることができた。

カーネル・セキュリティはここ数年で大幅に改善されたにもかかわらず、Leviev氏はDriver Signature Enforcement(DSE)機能をバイパスすることに成功し、攻撃者が署名されていないカーネル・ドライバをロードして、セキュリティ制御を無効にし、侵害を検出する可能性のある活動を隠すルートキット型マルウェアを展開する方法を示しました。

「近年、カーネルのセキュリティを強化するための大幅な機能強化が実施されており、管理者権限で侵害される可能性があるという前提の下でも、カーネルのセキュリティは強化されています」とLeviev氏は言う。

新しい保護機能によってカーネルを侵害することが難しくなった一方で、「カーネルに存在するコンポーネントをダウングレードできるようになったことで、攻撃者にとっては事態がよりシンプルになった」と研究者は説明している。

Leviev氏は、彼の悪用方法を“ItsNotASecurityBoundary “DSEバイパスと命名した。これは、Elastic社のGabriel Landau氏の研究で、カーネル特権で任意のコードを実行する方法として説明された、Windowsの新しい脆弱性クラスであるfalse file immutablity flawsの一部である。

Landau氏の報告を受けて、Microsoft社はItsNotASecurityBoundaryの管理者からカーネルへの権限昇格にパッチを当てた。しかし、これはダウングレード攻撃から保護するものではありません。

カーネルを狙う

Leviev氏は、本日発表された新たな研究で、攻撃者がWindows Updateプロセスを悪用して、完全に更新されたWindows 11システム上でさえ、パッチが適用されたコンポーネントをダウングレードすることでDSE保護を回避する方法を示している。

この攻撃は、DSEの実施を担当するファイルである「ci.dll」を、ドライバのシグネチャを無視するパッチ未適用のバージョンに置き換えることで可能となる。

この置き換えは、Windows Updateによってトリガーされ、Windowsがci.dllの最新コピーのチェックを開始した直後に、脆弱なci.dllコピーがメモリにロードされるという二重読み取り条件を悪用する。

Loading the old DLL while Windows verifies the latest version
Windows が最新バージョンを検証している間に古い DLL をロードする
Source:セーフブリーチ

この「レースウィンドウ」によって、Windowsがファイルを検証したと思っている間に脆弱なci.dllがロードされ、その結果、署名されていないドライバがカーネルにロードされる。

以下のビデオでは、研究者がダウングレード攻撃によってDSEパッチを元に戻し、完全にパッチが適用されたWindows 11 23H2マシンでこのコンポーネントを悪用する方法を実演している。

Leviev氏はまた、セキュア・カーネル・コード・インテグリティ・メカニズム(skci.dll)や認証されたユーザー資格情報のような重要なリソースやセキュリティ資産を保護するために、Windows用に隔離された環境を作成するMicrosoftの仮想化ベースのセキュリティ(VBS)を無効化またはバイパスする方法についても説明しています。

VBSは通常、UEFIロックやレジストリ設定のような保護に依存して不正な変更を防ぎますが、最大セキュリティ(「必須」フラグ)で設定されていない場合は、対象のレジストリキーを変更することで無効にすることができます。

部分的に有効になっている場合、「SecureKernel.exe」のような主要なVBSファイルは、VBSの動作を妨害し、「ItsNotASecurityBoundary」をバイパスして「ci.dll」を置き換える道を開く、破損したバージョンに置き換えられる可能性があります。

Ignoring the VBS configuration during boot
ブート中に VBS 設定を無視する
Source:SafeBreach

Leviev氏の研究は、ダウングレード攻撃が、時には強力な特権前提条件を伴うとしても、いくつかの経路を経由して依然として可能であることを示している。

この研究者は、エンドポイント・セキュリティ・ツールが、重要なセキュリティ境界を越えないダウングレード手順であっても、注意深く監視する必要性を強調している。