SYSTEM支配権:Aviraの3つの「アンチウイルス」欠陥がWindows完全制御を実現する仕組み

Aviraインターネットセキュリティのアーキテクチャ内で、研究者たちは最高権限であるSYSTEM権限下で管理機能を実行するモジュールに埋め込まれた強力な3つの脆弱性を発見した。これらの重大な欠陥は、コンポーネント更新、システム高速化、および一時ファイル削除を制御するメカニズムに影響を与えます。表面的には、これらは通常のアンチウイルス内部処理に見えますが、実際にはこれらの各構成要素には極めて機密性の高いOS全体操作への無制限のアクセスが与えられており、その検証チェックは危険なほど不十分でした。結果として、ローカルユーザーはSYSTEM権限下で任意のファイルを削除するか、侵害を包括的な権限昇格エクスプロイトに昇格させることが可能です。

影響を受けたバージョンはバージョン1.1.109.1990までのすべてを含みます。修正パッチはバージョン1.1.114.3113で導入されました。研究者は3つの異なる攻撃ベクトルを特定しました:更新モジュール内のファイル任意削除(CVE-2026-27748)、システム高速化モジュール内の危険な逆シリアル化(CVE-2026-27749)、およびクリーンアップモジュール内のTime-of-Check-Time-of-Use(TOCTOU)競合状態によるディレクトリ任意削除(CVE-2026-27750)。最初の欠陥は単独で有用性を持ちますが、後の2つはSYSTEM完全制御への直接的で妨害されない経路を形成します。

更新モジュールは新しいAViraコンポーネント配信の責務を担当します。運用中に、C:\ProgramData\OPSWAT\MDES SDK\ディレクトリに隔離された第三者の実行ファイルと相互作用します。このディレクトリ内の特定ファイルは更新サイクル中に定期的に削除されます。一方、高速化モジュールはパフォーマンスメトリクスを監視し、システムの動作の最適化を試みます。パフォーマンスブースター機能が有効化されると、Avira.SystemSpeedup.RealTimeOptimizer.exeプロセスがSYSTEM権限で起動されます。最後に、クリーンアップモジュールはシステム内の一時データ、残余キャッシュ、および補助的なシステムゴミを検索し、ユーザーの明示的な承認後、特定されたゴミを最高権限で削除します。

3つのコンポーネント全体に共通する根本的な欠陥が1つあります。特権コードは操作するパスとデータに対して危険なほどの盲信を置いています。攻撃者がファイル、ディレクトリ、またはシリアル化されたオブジェクトを置き換える能力を得た瞬間、SYSTEMは無意識のうちに外部の悪意あるロジックを自身の権限下で実行し始めます。

3つの侵害のうち2つは、C:\Config.msiディレクトリを利用した古典的だが極めて効果的な手法に基づいています。このメカニズムはWindowsインストーラサービスとその本質的なロールバックアーキテクチャに密接に結びついています。攻撃者が特権プロセスにC:\Config.msiの削除を強制し、その後.rbsおよび.rbfロールバックファイルを含むディレクトリを再作成し、MSIパッケージのインストール中に意図的に失敗を発生させた場合、WindowsインストーラサービスはSYSTEM権限でロールバックスクリプトを実行します。

その後、エクスプロイトチェーンは標準的な流れに従います。ロールバック機構を利用して、攻撃者はC:\Program Files\Common Files\microsoft shared\ink\HID.DLLディレクトリに悪意のあるDLLをこっそり配置できます。その後、CTRL+ALT+DELキーでセキュリティ画面を呼び出し、osk.exe(スクリーンキーボード)を起動すると、アプリケーションは悪意のあるライブラリを読み込み、攻撃者にSYSTEMシェルを与えます。

ここで重要な注記があります。ディレクトリ削除とファイル削除は全く異なるメカニズムで動作します。前者はディレクトリ削除のリダイレクト技術を悪用しており、これは依然として有効です。後者は歴史的に::$INDEX_ALLOCATION代替データストリームの削除に依存していました。しかし、Windows 11 24H2から、Microsoftはこの特定の脆弱性を塞ぎました。したがって、従来のファイル削除技術は新しいビルドでは同じ結果をもたらしません。

最初の脆弱性は更新モジュール内に存在します。更新処理中に、コンポーネントはC:\ProgramData\OPSWAT\MDES SDK\wa_3rd_party_host_32.exeファイルを削除します。重大な問題は、削除前にこのパスがシンボリックリンク(他のファイルへのショートカット)であるかを確認する検証が全くないことです。攻撃者がこのファイル場所にシンボリックリンクを事前に作成した場合、特権プロセスはそれをたどり、意図した別のファイルを削除してしまいます。

この欠陥を実証するために、研究者はシンボリックリンク分析用のJames Forshawのツールセットを使用しました。まず、彼らはディレクトリを作成しました:

PS C:\temp> mkdir "C:\ProgramData\OPSWAT\MDES SDK"

次に、これをジャンクションポイントに変換し、\RPC Controlオブジェクト名前空間に指定しました:

PS C:\temp> .\CreateMountPoint.exe "C:\ProgramData\OPSWAT\MDES SDK" "\RPC Control"

その後、シンボリックリンクを作成し、最終的なターゲットを指定しました:

PS C:\temp> .\CreateSymlink.exe "\RPC Control\wa_3rd_party_host_32.exe" "C:\windows\system32\foobar.txt"

Opened Link \RPC Control\wa_3rd_party_host_32.exe -> \??\C:\windows\system32\foobar.txt: 00000158

Press ENTER to exit and delete the symlink

ユーザーが更新を実行すると、モジュールは予定されたファイルではなくC:\windows\system32\foobar.txtを削除します。Procmonは削除がSYSTEMプロセスのみによって実行されたことを確認しました。Windows 24H2より前のバージョンでは、この技術はConfig.msi手法と組み合わせることで権限昇格を実現できます。新しいビルドでは、結果はターゲット選択によって異なり、サービス拒否からシステム整合性侵害まで様々です。

2番目の脆弱性は高速化モジュールに組み込まれています。Avira.SystemSpeedup.RealTimeOptimizer.exeプロセスは完全なSYSTEM権限でC:\ProgramData\Avira\SystemSpeedup\temp_rto.datファイルを読み込み、.NET BinaryFormatterを使用して内容を逆シリアル化します。重要なのは、この処理にはセキュリティチェックや型検証が一切ありません。デフォルトではProgramDataディレクトリにはローカルユーザーが新規ファイルを作成できる権限があるため、普通のユーザーはtemp_rto.datファイルを作成して特権プロセスに処理させることができます。

dnSpyによる詳細な解析により、3つの逆シリアル化処理が見つかりました:LoadDBFromFileLoadCrashRestoreKnowledge、およびLoadProcessExceptionKnowledgeLoadCrashRestoreKnowledge関数が最も重要で、ファイルを直接開いてBinaryFormatter.Deserialize()に何のチェックもなく渡します:

private void LoadCrashRestoreKnowledge() { if (File.Exists(this.CrashRestoreKnowledgeBasePath)) { try { FileStream fileStream = new FileStream(this.CrashRestoreKnowledgeBasePath, FileMode.OpenOrCreate); BinaryFormatter binaryFormatter = new BinaryFormatter(); Dictionary<int, ProcInfo> crashRestoreKnowledge = this._crashRestoreKnowledge; lock (crashRestoreKnowledge) { this._crashRestoreKnowledge= (Dictionary<int, ProcInfo>)binaryFormatter.Deserialize(fileStream); } fileStream.Close(); } catch (Exception ex) { Log.Warning(LogModule.General, "LoadCrashRestoreKnowledge exception: " + ex.Message); } } }

ファイルパスは以下のプロパティで定義されています:

public string CrashRestoreKnowledgeBasePath { get; private set; } = Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData) + "\\Avira\\SystemSpeedup\\temp_rto.dat";

CommonApplicationDataC:\ProgramDataディレクトリを指します。新規インストール直後はtemp_rto.datファイルが存在しないため、攻撃がより簡単になります。ただし、ファイルが既に存在する場合は、前述のファイル削除脆弱性を使用してファイルを削除し、新しいファイルを作成できます。

この危険な処理は、ユーザーがUIを通じてパフォーマンスブースターを有効にした瞬間にトリガーされます。UI自体は低い権限で動作しますが、特権プロセスを起動し、直ちにtemp_rto.datを読み込みます。ProcmonSYSTEMがこのファイルにアクセスしていることを明確に示しています。

このエクスプロイトを実証するために、ysoserial.netツールを使用しました。悪意のあるペイロードは以下の通り作成されました:

ysoserial.exe -f BinaryFormatter -g TypeConfuseDelegate -c "whoami > c:\pwned.txt" -o raw > c:\temp\pwned.bin

作成後、ファイルをAviraのディレクトリにコピーしました:

C:\temp> copy c:\temp\pwned.bin C:\ProgramData\Avira\SystemSpeedup\temp_rto.dat

1 file(s) copied.

その後、ユーザーがパフォーマンスブースターをオフにして再度オンにすると、逆シリアル化時にSYSTEM権限でペイロードが実行され、c:\pwned.txtファイルが作成されました。研究者はこのベクトルを3つの中で最も効果的と評価しています。競合状態や複雑なタイミングが不要で、ファイルを作成して設定を切り替えるだけで動作します。

3番目の脆弱性はクリーンアップモジュールに存在します。その処理は2つのステップに分かれています。まず、オプティマイザーがシステムをスキャンして一時ファイルやゴミを特定します。次に、ユーザーの承認後、それらを削除します。問題は、この2つのステップの間にあります。スキャン時は安全と判定されたパスが、実際の削除直前には再検証されません。これは古典的なTime-of-Check-Time-of-Use(TOCTOU)競合状態です。

この攻撃は以下のように実行されます。ユーザーがC:\tempにディレクトリを作成し、少なくとも10分待ちます(オプティマイザーは十分に古い一時ファイルのみを削除対象と見なすため)。その後、クリーンアップを実行してスキャンします。ユーザーのディレクトリがSystem Junk - Temporary System Filesに表示されたら、セキュリティチェックを通過しています。

「最適化」ボタンを押す直前に、FolderOrFileDeleteToSystem.exeツールを使用してディレクトリをC:\config.msiへのジャンクションに変換します。オプティマイザーには見分けがつきません。削除処理中、特権プロセスはこのリンクをたどり、C:\config.msiを削除します。ProcmonSYSTEM権限での削除を確認しています。

その後、MSIインストーラーのロールバック処理が再度トリガーされます。HID.DLLがMicrosoft Inkディレクトリに配置され、セキュリティ画面からosk.exeを起動すると、最終的にSYSTEMシェルが獲得されます。

総合すると、これら3つの脆弱性は極めて危険な状況を作り出します。3つの異なるモジュールに3つの異なる欠陥がありますが、すべての根本原因は同じです。特権で動作するコードが、ローカルユーザーは操作できないと誤って信じてパスやデータを処理しています。任意ファイル削除が最も実用的で、単独でも他の手法の準備段階としても機能します。加速化モジュール内の逆シリアル化は最も直接的で効率的にSYSTEM制御を実現できます。クリーンアップモジュール内の競合状態も確実に動作し、完全なシステム支配を達成できます。

翻訳元: https://meterpreter.org/the-system-sovereignty-how-three-antiviral-flaws-in-avira-grant-total-windows-control/

ソース: meterpreter.org