Skip to content
KitploitKITPLOIT
ツールブログ
提出
ツールブログ
提出

ハッキング、侵入テスト、サイバーセキュリティツールをあなたのセキュリティアーセナルに!

Kitploitはハッキング、サイバーセキュリティ、ペネトレーションテストのツールディレクトリです。最新のプロジェクトアップデートを見つけて、脆弱性の発見、システム分析、テストの自動化、セキュリティの強化を行いましょう。

··フィード·お問い合わせ·プライバシー·© 2026 Kitploit

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
CVE-2026-52885 | Kitploit
ツール/GitHubGitHub/v3s9er/cve-2026-52885
脆弱性分析コード分析エクスプロイトバイナリ解析論文と研究学習と教育
GitHubv3s9er/cve-2026-52885

CVE-2026-52885

リポジトリを見る
7日前未レビュー

人気

すべて見る →

コミュニティで最も使われているツールを見つけましょう。

すべてのツールを探索

ツールコレクションを閲覧

すべてのツールを見る →
共有

TOCTOU: HMACでディスクを検証し、メモリから実行

Notepad++ v8.9.6.2 — HMAC競合状態を介した攻撃者制御のUserCommand実行

アドバイザリ

GHSAGHSA-qm4c-qg8p-qfcr
CVECVE-2026-52885
重大度高
影響を受けるバージョンv8.9.6.2
修正済みバージョンv8.9.6.4
パッチコミット4f7563c
影響を受けるファイルPowerEditor/src/NppCommands.cpp :4328–4359
プラットフォームWindows 11 Pro x64
必要な権限標準ユーザー(shortcuts.xmlへの書き込みアクセス権)
研究者v3s9er
開示日2026-06-05

概要

Notepad++ v8.9.6.2では、任意のUserCommandエントリの注入を防ぐために、shortcuts.xmlに対するHMAC-SHA256整合性チェックが導入されました。

このチェックにはTOCTOUの欠陥があります。HMACはトリガー時にディスク上のファイルに対して検証されますが、実行されるコマンドは起動時に読み込まれたメモリ内の_userCommandsベクターから読み取られます。これら2つのソースが再同期されることはありません。

shortcuts.xmlに書き込みできる攻撃者は、起動前に悪意のあるコマンドを仕込み、Notepad++にそれをメモリへ読み込ませ、ディスク上の正当なファイルを復元してからコマンドをトリガーできます。HMACチェックは成功します(ディスクはクリーン)が、悪意のあるペイロードが実行されます(メモリは古いまま)。


技術概要

整合性メカニズムは現在のディスク上のshortcuts.xmlを検証する一方、コマンド実行は以前に読み込まれたメモリ内の表現を使用します。2つのデータソースは独立しているため、攻撃者は起動前にファイルを変更し、それをメモリに解析させ、コマンド実行前に元のファイルを復元できます。これにより、HMACチェックは成功する一方で、悪意のあるペイロードが実行されます。


根本原因

NppCommands.cpp の4328〜4359行目:

root@kitploit:~
// TIME OF CHECK — reads on-disk file
std::string currentHMAC = computeHMAC(
    getMachineGUID(),
    getFileContent(nppParams.getShortcutsPath().c_str())
);
if (currentHMAC != nppGUI._shortcutsXmlHmacInConfig) { return; }
// validated against DISK

// TIME OF USE — reads in-memory vector (loaded at startup, never refreshed)
int i = id - ID_USER_CMD;
const vector<UserCommand>& cmds = nppParams.getUserCommandList();
UserCommand ucmd = cmds[i];
Command cmd(string2wstring(ucmd.getCmd(), CP_UTF8));
cmd.run(_pPublicInterface->getHSelf()); // executes payload from MEMORY
操作ソースタイミング
チェック(HMAC)ディスクファイルトリガー時
使用(実行)メモリベクター起動時に読み込み
ギャップ攻撃者制御起動 → トリガー

攻撃シナリオ

前提条件: shortcuts.xmlへの書き込みアクセス権

  • ポータブル版インストール: notepad++.exeと同じディレクトリ
  • 標準インストール: %AppData%\Notepad++\

手順:

  1. ディスク上のshortcuts.xmlを悪意のあるバージョン(cmd = calc.exe)で上書きする
  2. Notepad++を起動する — _userCommandsが悪意のあるファイルから読み込まれる
  3. 正当なshortcuts.xmlをディスクに復元する — HMACがconfig.xmlと一致する
  4. WM_COMMAND(21000)(ID_USER_CMD+0)を送信するか、Ctrl+Alt+Pを押す
  5. HMACチェックがディスクから正当なファイルを読み取る → 成功
  6. 実行がメモリから_userCommands[0]を読み取る → calc.exeが実行される

結果: 現在のユーザーの権限で攻撃者制御のコマンドが実行されます。管理者権限は不要、UACプロンプトなし、ユーザーへの警告もありません。


実行タイムライン


影響


概念実証

poc_8962_toctou.ps1 を参照してください。

要件:

  • Notepad++ v8.9.6.2 ポータブル版 x64
  • Notepad++ディレクトリにdoLocalConf.xmlが存在すること(ポータブルモード)
  • 正当なshortcuts.xmlに対する有効なHMACを含むconfig.xml
root@kitploit:~
.\poc_8962_toctou.ps1 -NppPath "C:\path\to\notepad++.exe"

検証済み: calc.exeが起動され(PID 35932)、ディスクには常に正当なshortcuts.xmlが表示されていました。


パッチ分析

修正(コミット4f7563c)では、HMAC検証が初期ファイル解析とともに起動時に移動されました。チェックと使用が同じタイミングで同じオブジェクトに対して行われるようになり、TOCTOUの窓が排除されました。

v8.9.6.2(脆弱)v8.9.6.4(修正済み)
HMACチェックトリガー時にディスクを再読み取り起動時に解析と同じバイトを検証
コマンドのソース起動時に読み込まれたメモリ起動時に検証されたメモリ
TOCTOUの窓起動 → トリガー排除

参考情報

  • GHSA-qm4c-qg8p-qfcr
  • パッチコミット 4f7563c
  • Notepad++ v8.9.6.4 リリース
ツールをダウンロード
時刻イベント状態
T+0.0秒攻撃者が悪意のあるshortcuts.xmlを書き込むdisk=悪意
T+0.0秒攻撃者がNotepad++を起動disk=悪意
T+0.1秒Notepad++がshortcuts.xmlを読み取り → _userCommands[0]="calc.exe"mem=悪意
T+4.2秒Notepad++の読み込みが完了mem=悪意
T+4.2秒攻撃者が正当なshortcuts.xmlを復元disk=正常 / mem=悪意
T+4.7秒攻撃者がWM_COMMAND(21000)を送信
T+4.7秒HMACチェック: ディスクから正当なファイルを読み取り → 成功CHECK OK
T+4.7秒実行: メモリから_userCommands[0]を読み取り → calc.exeエクスプロイト
T+4.7秒calc.exeが起動(PID 35932)確認済み
種別任意コマンド実行
管理者権限の必要性不要
UACプロンプトなし
検出可能性低 — ディスクには常に正当なファイルが表示され、ペイロードはメモリのみに存在
CVSS(推定)AV:L / AC:H / PR:L / UI:N / S:U / C:H / I:H / A:H