2026年11月6日にリリースされたNotepad++ 8.9.9では、WM_COPYDATAの送信元認証バイパスや、WM_COPYDATAを悪用した権限昇格など、メモリ安全性と信頼境界に関する6件の欠陥が修正されました。
メンテナーのDon Ho氏は、バージョン8.9.8以前を対象とする脆弱性ごとに、GitHubでセキュリティアドバイザリを公開しました。認証バイパス(CWE-940)はisSenderTrusted()に存在します。この関数は、呼び出し側が自由に設定できるwParamを、送信元ウィンドウのハンドルとして扱っています。
検証の対象は、そのハンドルを所有するプロセスの整合性レベルがMediumであるか、実行ファイルのパスが一致するかだけです。ローカルの攻撃者は、おとりのNotepad++インスタンスを送信元として指定しながら、実際には無関係なプロセスからCOPYDATASTRUCTを送信できます。その結果、受信側は誤った相手を検証してしまいます。
アドバイザリによると、この手法は、以前に権限昇格対策として入れられた強化コミットを回避できる可能性があります。オプションのプラグインであるNppExec 0.8.12.1と組み合わせると、NppExecScriptを含むなりすましのCOPYDATA_PARAMSメッセージにより、すでに昇格済みのHigh整合性プロセス内でスクリプトが実行されました。
アドバイザリはこれを、ネットワーク経由のRCEではなく、条件付きのローカルコード実行と説明しており、CVSSスコアは7.0と評価しています。攻撃には、初期化済みのプラグイン、あらかじめ昇格された標的プロセス、同一セッション内のMedium整合性のコードが必要です。
一方、最近報じられたOpenSSHの認証バイパスは、リモートから到達できます。UAC保存ブローカーには、TOCTOU(time-of-check-to-time-of-use)競合状態(CWE-367)の脆弱性があります。
Notepad++はドキュメントを書き出す際、%TEMP%\npp-<milliseconds>.tmpに保存してハンドルを閉じ、昇格権限のヘルパーを起動します。このヘルパーが、そのパスに対してCopyFileWを呼び出します。
同じユーザーで動作する監視プログラムは、コピーの前にファイルの内容をすり替えることができます。ユーザーが確認プロンプトを承認すると、攻撃者が用意したバイト列が保護された保存先に書き込まれます。
アドバイザリは、この脆弱性を6.6と評価しています。これとは別に、Paste Binaryには境界外読み取り(CWE-125)の脆弱性があります。この機能は、クリップボード形式「Notepad++ Binary Length」の値をそのまま信用します。3バイトのバッファに対して4096という長さを宣言すると、稼働中のヒープ上の内容が挿入されました。スコアは5.6です。
NPPM_MENUCOMMANDの脆弱性(CWE-129)では、呼び出し側が指定したコマンドIDからID_USER_CMD(21000)を引き、サイズを確認しないまま空のstd::vectorにインデックスを指定しています。
範囲外のUserCommand要素はShellExecuteに到達します。同じ整合性レベルのプロセスであれば、ユーザー操作なしで誰でも悪用できます(CVSS 5.3)。
mimeToolsプラグインでもメモリ破損が見つかりました。SAML Decodeルーチンが出力サイズを制限せずにtinf_uncompressを呼び出していたため、約300,000バイトに展開されるペイロードが、200,000バイトのヒープバッファをあふれさせました。
アドバイザリはこのヒープベースのバッファオーバーフロー(CWE-122)を「High」と評価しており、mimeTools 3.2で修正されています。最近は、FreeRDPでも同様のヒープオーバーフローの脆弱性が見つかっています。
管理者は、Notepad++ 8.9.9とmimeTools 3.2へアップグレードしてください。信頼できないSAMLペイロードのデコードは避け、修正が適用されるまでは、昇格したセッションからNppExecを削除することを推奨します。重大な不具合が見つからなければ、自動アップデーターは約1週間後に開始される予定です。
16,000以上のSOCチームがANY.RUNを活用し、脅威調査の効率化と手作業の削減を実現しています。チームでの利用を検討する
翻訳元: https://cyberpress.org/notepad-8-9-9-fixes-six-security-flaws/