CVE-2025-8088 は、WinRAR のバージョン 7.13 以前のバージョンに影響を与えるパストラバーサル脆弱性です。この脆弱性を悪用すると、特別に細工されたアーカイブにより、アーカイブの解凍時にファイル名およびパスの検証がバイパスされ、攻撃者が制御するコンテンツが NTFS ボリューム上の特定の場所に書き込まれる可能性があります。特定の条件下では、この書き込み機能を利用してリモートでコードを実行することが可能です。
OPSWAT ・プログラムのフェローたちが、CVE-2025-8088に関する技術的分析を実施しました。RAR5およびNTFS(ADS)の仕組みに関するこの分析の結果、不正な書き込みにつながるデータの抽出ワークフローとADSの処理経路が特定され、サイバーセキュリティの実務者や組織に向けた実用的な緩和策および是正措置の指針がまとめられています。

CVE-2025-8088 の概要
WinRARは、Windowsで最も広く利用されているアーカイブユーティリティの一つです。このソフトウェアは、ADS(代替データストリーム)などのNTFS固有のメタデータの保持および復元に対応しています。CVE-2025-8088は、特定のWinRARバージョンのADS処理ロジックに存在する脆弱性です。この脆弱性があるバージョンでは、悪意のあるアーカイブが抽出時に使用されるストリーム識別子に影響を与える可能性があり、ADS作成ワークフローにおけるパスの正規化および検証が不十分であるため、ディレクトリトラバーサル攻撃が可能となります。
CVE-2025-8088は、深刻度が高い問題と評価されており、CVSS v4.0のベーススコアは8.4(High)です。これは、ユーザーが脆弱性のあるバージョンのWinRARを使用して、特別に細工されたアーカイブを解凍した場合、測定可能なセキュリティ上の影響が生じる可能性があることを反映しています。

技術的背景
NTFSの代替データストリーム
NTFS(New Technology File System)は、最新のWindowsバージョンにおけるデフォルトのファイルシステムです。FATベースのファイルシステムと比較して、NTFSはACL(アクセス制御リスト)、EFS暗号化、圧縮、ハードリンク、リパースポイント(ジャンクションおよびシンボリックリンク)、ADSなどの高度な機能をサポートしています。
ADSは、単一のファイルまたはディレクトリに複数の独立したデータストリームを含めることができるNTFSの機能です。ユーザーが直接参照できる主要なコンテンツは、通常::$DATAとして表される名前のないデフォルトのストリームに格納されますが、追加の命名済みストリームには次の構文を使用してアクセスできます:
filename.ext:streamname
これらの名前付きストリームは、通常、標準のWindowsエクスプローラーのビューでは表示されませんが、ファイルシステムによって完全にサポートされており、対応するツールを使用すれば一覧表示することができます。たとえば、`dir/R` コマンドを使用すると、代替ストリームを表示できます。
WinRARは、ADS構文を含むアーカイブエントリの解凍に対応しています。アーカイブ内にそのようなエントリが存在する場合、WinRARは解凍時に、対応するコンテンツをターゲットファイルの代替ストリームに書き込みます。

RAR5ファイルの構造について
RAR5アーカイブは、一連のブロックとして保存されます。各ブロックは、ブロックの種類やサイズ情報を定義するヘッダーで始まります。また、オプションで、追加のメタデータ領域や、圧縮されたコンテンツなどのペイロードバイトで構成されるデータ領域を含めることもできます。
ブロック = ヘッダー + (任意の追加領域) + (任意のデータ領域)
RAR5では、いくつかのブロックタイプが使用されています。CVEで関連するブロックタイプは以下の通りです:
- ファイルヘッダー(タイプ2):アーカイブ内のファイルエントリ(名前/パス、属性、タイムスタンプ、圧縮パラメータ)を記述し、その後にファイルのペイロードデータが続く
- サービスヘッダー(タイプ3):アーカイブまたは特定のファイルエントリに関連する追加のメタデータ(ADSなど)を格納する、オプションの補助ヘッダー
NTFSファイルシステムにおけるADSは、STMと呼ばれるサービスヘッダー(タイプ3)によって表されます。サービスヘッダーのデータ領域には、ベースファイルエントリのADSストリームバイトが含まれています。
簡単に言えば:

技術的分析(CVE-2025-8088)
RAR5の解凍ワークフロー
WinRARは、RAR5アーカイブを一連のブロックとして処理します。抽出時には、これらのブロックを順次処理し、各ブロックヘッダーを解析し、埋め込まれたCRC32を使用してヘッダーの整合性を検証してから、次の処理に進みます。ファイルエントリの処理が完了すると、WinRARはベースファイルの内容を解凍してディスクに書き出し、その後、関連するサービスレコードを通じて追加のNTFS関連メタデータを適用する必要があるかどうかを判断します。 STMサービスエントリなどのADS(代替データストリーム)レコードが存在する場合、WinRARはADS処理パスに入り、ベースファイルのパスとストリーム名を組み合わせてADSターゲットを形成し、ストリームを作成します。

CVE-2025-8088の根本的な原因は、ADSストリームの作成時に、アーカイブが管理するメタデータから導出されたパスを使用してWindowsAPI ()が呼び出されるため、ADSパスの構築および検証だけではディレクトリトラバーサルを防止できない点にある。
ADS(「STM」)のコードパスの特定
当社の大学院生フェローは、WinRAR 7.12 を使用し、管理された実験室環境下で静的解析と動的解析を組み合わせて実施しました。彼らはバイナリ内の「STM」サービスマーカーを検索することで ADS に関連するロジックを特定し、実行時に抽出側のコードパスを確認しました。

ADSデータを含むアーカイブの抽出中に検出される「STM」参照箇所にブレークポイントを設定したところ、そのブレークポイントは常にヒットし、この実行パスが通常の抽出ワークフロー中に呼び出されていることが確認された。

ブレークポイントに到達すると、デバッガーのコールスタックを用いて、WinRAR UIの「抽出」操作後に呼び出された関数のシーケンスを再構築し、下流のブロック処理およびADSの実行パスに対する明確な基準点を確立した。

ヘッダーの解析とCRC32検証
WinRARは、各RAR5ブロックを処理する際、ブロックヘッダーを読み取り、整合性フィールドを検証し、ブロックタイプ固有のハンドラに処理を委譲します。ブロック処理のエントリポイントと関連するヘッダー解析ロジックを図6-10に示します。ここでは、WinRARがファイルポインタを現在のブロックオフセットに設定し、ヘッダータイプやサイズを含む初期ヘッダーバイトを読み取り、CRC32を使用してヘッダーの整合性を検証してから処理を続行します。
検証が成功すると、フラグ、展開後のサイズ、圧縮方式、およびオプションのチェックサムなどの追加のヘッダーフィールドを解析します。その後、ブロック本文を処理します。



リバースエンジニアリングの結果、CRC32ルーチンの動作は、標準的なzlibスタイルのCRC32実装と一致していることが確認された。実質的に、このCRC32チェックは整合性チェックの役割を果たしている。ヘッダーフィールドが変更された場合、WinRARがヘッダーを受け入れ、処理を継続できるように、埋め込まれたCRC32を更新する必要がある。

CRC32ヘッダーの検証が完了すると、パーサーは展開後のサイズ、圧縮方式、その他の属性など、残りのヘッダー情報の抽出へと進みます。

ヘッダーの解析と検証が完了すると、WinRARは解析されたヘッダーのタイプとフラグに基づいてブロック本文を処理します。

CVE-2025-8088 では、WinRAR が ADS レコードを処理する Service ブロックハンドラに処理を委譲する前に、ヘッダーの整合性検証が実施されます。
サービスブロック(「STM」)によるADSの作成
WinRARがServiceブロックを検出すると、ADS処理パスが実行されます。Serviceブロックはブロックタイプ値3を使用します。Serviceブロックが検出されると、WinRARはそれをサービスヘッダーハンドラに送信します。

サービスハンドラ内で、WinRARはサービス名を確認します。サービス名が「STM」と一致する場合、そのレコードはADSペイロードとして扱われ、実装はADS作成ルーチンに移行します。

その後、WinRARはサービスレコードからストリーム名を取得し、それをベースファイルパスと組み合わせることで、最終的なADSターゲットを構築します。バージョン7.13以前のバージョンでは、分析の結果、ストリーム名のサニタイズが不十分であることが判明しており、これにより、トラバーサルシーケンスが結果として得られるターゲットパスの解決に影響を及ぼす可能性があります。


ターゲットを構築した後、WinRARはAPI出すヘルパールーチンを介してストリームを作成し、WriteFileを使用してADSバイトを書き込みます。解決されたパスがユーザーが選択した抽出ディレクトリの外にある場合、WinRARは宛先ストリーム/ファイルを作成し、そこに攻撃者が制御するコンテンツを書き込みます。




要約すると、ADS抽出ワークフローには、セキュリティに関連する2つの問題点が存在します。第一に、ADSストリーム名が十分にサニタイズされていないため、トラバーサルシーケンスによって結果としてのターゲットパスが影響を受ける可能性があります。第二に、WinRARは、アーカイブが管理するメタデータから導出されたパスを使用してCreateFileW()を呼び出すことで、ADSストリームを作成しています。
これらの条件が組み合わさることで、細工されたアーカイブは、CreateFileW() のターゲットを意図された抽出ディレクトリの外に誘導し、攻撃者が制御するコンテンツを攻撃者の意図する場所に書き込むことが可能になります。書き込み先が永続化に関連するディレクトリ(例えば、ユーザーの「スタートアップ」フォルダなど)である場合、この書き込み操作により、ペイロードの種類やシステム構成によっては、次回のログオン時または再起動時に、後続のコードが実行される可能性があります。
攻撃シナリオ
CVE-2025-8088は、攻撃者がユーザーを誘導し、脆弱性のあるバージョンのWinRARを使用して細工されたRARアーカイブを解凍させるようなシナリオにおいて、実際に悪用される可能性があります。典型的な攻撃経路としては、フィッシングなどのソーシャルエンジニアリングが挙げられ、これにより被害者は悪意のあるアーカイブを信頼し、重要なシステム上で解凍を実行してしまうことになります。
このアーカイブには、ADS(「STM」)サービスレコードが埋め込まれています。そのストリーム名は、トラバーサルセマンティクスを導入するように構成されています。NTFS上での抽出時、WinRARはADSレコードを処理し、アーカイブが管理するメタデータから抽出先のストリームパスを導出します。このADSパスの構築には十分な制約が設けられていないため、解決されたターゲットがユーザーが選択した抽出ディレクトリの外側、例えばユーザーのスタートアップフォルダなどの重要な場所に配置されてしまう可能性があります。

概念実証
CVE-2025-8088を実証するため、当研究室の大学院生は、攻撃者が制御可能なフィールドを含むADS(「STM」)サービスレコードを仕込んだRARアーカイブファイルを作成しました。このアーカイブは、トラバーサルシーケンスを含むADSストリーム名で構成されています。 この構造は、ADSの処理中に最終的なターゲットの場所に影響を与え、ストリーム作成時にCreateFileW()に渡されるパスにも影響を及ぼします。WinRARが変更されたメタデータを受け入れ、ADS処理パスに到達するようにするため、関連するヘッダーのCRC32値を再計算し、アーカイブがヘッダーの整合性検証を通過するようにしています。

脆弱性のあるWinRARのバージョンが、細工されたアーカイブの解凍中にADS処理ルーチンに入ると、本来ユーザーが選択した解凍先ではなく、事前に指定された保存先に攻撃者が制御するコンテンツを書き込んでしまいます。解凍後、ペイロードの実行可否は、その形式と、事前に指定された保存先の実行セマンティクスによって決まります。例えば、次回のログイン時や再起動時にコンテンツが実行される可能性のある場所などが該当します。

修復
CVE-2025-8088 のリスクは、管理対象のエンドポイントすべてで WinRAR を修正済みのバージョン(7.13 以降)に更新することで軽減できます。タイムリーな更新が不可能な場合は、次のような代替対策を検討する必要があります:
- 必要がない場合は、アーカイブツールにおけるADSの保持機能を制限または無効にする
- 信頼できないアーカイブの抽出を隔離された環境に限定する
- 最小権限の原則を徹底する(管理者権限で抽出ツールを実行しない)
- アーカイブの展開ワークフローに起因する予期せぬ書き込みがないか、スタートアップフォルダなどの重要なディレクトリを監視する
vulnerability detection 早期にvulnerability detection するため、MetaDefender 、脆弱性のあるWinRARのバージョンを実行しているデバイスを特定し、必要な更新プログラムを強調表示することで、緊急の修正作業を支援します。1,100以上のアプリケーションに対応する堅牢な脆弱性およびパッチ管理機能により、パッチが適用されていない、または古いバージョンのOSやサードパーティ製アプリケーションを実行しているエンドポイントを事前に特定し、推奨される修正策を提供します。
「Vulnerability Management 」Vulnerability Management 、管理者は脆弱性の露出を迅速に検知し、修正の優先順位を決定し、パッチ適用済みのリリースへのアップグレードを推進することが可能になります。これにより、CVE-2025-8088 のようなアーカイブベースのファイル書き込み攻撃や、同様のエンドポイントベースの脅威によるリスクを低減できます。

