世界を動かす技術を、日本語で。

Notepad++ サプライチェーン攻撃の分析

概要

  • Notepad++のアップデートインフラが2025年に侵害 され、数ヶ月にわたりサプライチェーン攻撃が発生
  • 攻撃者は複数の実行チェーンとペイロードを使い分け、標的を絞った攻撃を展開
  • 感染手法やC2サーバー、マルウェアの種類が頻繁に変更
  • Kasperskyなどのセキュリティソリューションは攻撃を検知・遮断
  • IoC(侵害指標)や検出・対策方法も詳細に解説

Notepad++サプライチェーン攻撃の全貌と新たなIoC

攻撃の概要と発生経緯

  • 2026年2月2日、Notepad++開発チームがアップデートインフラの侵害を公表
  • 2025年6月から9月にかけてホスティングプロバイダーのインシデントが発生し、12月まで内部サービスへの不正アクセスが継続
  • 攻撃者は4ヶ月間、C2サーバやダウンローダー、最終ペイロードを絶えず変更
  • 標的はベトナム・エルサルバドル・オーストラリアの個人、フィリピンの政府機関、エルサルバドルの金融機関、ベトナムのITサービスプロバイダー
  • 攻撃は限定的かつ標的型で展開

実行チェーン #1(2025年7月下旬~8月上旬)

  • 初回の悪意あるアップデートは http://45.76.155[.]202/update/update.exe から配信
  • 正規のNotepad++アップデータ(GUP.exe)経由でNSISインストーラ(約1MB)が実行
  • %appdata%\ProShow ディレクトリを作成し、whoamiやtasklist等のコマンド実行結果をtemp[.]shへアップロード
  • アップロード先URLをUser-Agentヘッダーに埋め込みC2サーバへ送信
  • ProShow.exe(正規ソフト)を悪用し、DLLサイドローディングではなく既知の脆弱性を利用
  • ペイロードはMetasploitダウンローダー→Cobalt Strike Beacon(C2: cdncheck.it[.]com)
  • 8月初旬以降、このチェーンの感染は確認されず

実行チェーン #2(2025年9月中旬~下旬)

  • 同じURLから新たなNSISインストーラ(約140KB)を配信
  • 作業ディレクトリを %APPDATA%\Adobe\Scripts に変更
  • whoami, tasklist, systeminfo, netstat -anoの情報をa.txtに保存しtemp[.]shへアップロード
  • Luaインタープリタ関連の正規ファイルとともに alien.ini(Luaスクリプト)を配置、script.exeで実行
  • スクリプトがシェルコードを実行し、Metasploitダウンローダー→Cobalt Strike Beacon(C2: cdncheck.it[.]com等)
  • コマンド実行方式やC2サーバURLが都度変更

実行チェーン #3(2025年10月)

  • C2サーバを http://45.32.144[.]255/update/update.exe に変更
  • BluetoothService.exe(正規)、log.dll(悪性DLL)、BluetoothService(暗号化シェルコード)を %appdata%\Bluetooth\ に展開
  • DLLサイドローディングでBluetoothService.exeを経由し、Chrysalisバックドアを展開
  • Rapid7によると、Cobalt Strike Beaconも別経路で展開された事例あり

チェーン#2の再利用とURL変更(2025年10月中旬~下旬)

  • http://95.179.213[.]0/update/update.exe など新たなURLでチェーン#2のペイロードを再配信
  • install.exeやAutoUpdater.exeなど、複数の実行ファイル名で展開
  • 11月以降、新たなペイロード配信は未確認

攻撃の特徴と検出・対応策

  • NSISインストーラの設置痕跡(%localappdata%\Temp\ns.tmpなど)をログから調査
  • temp[.]shドメインへのDNS解決やUser-Agentに含まれるURLのネットワークトラフィックを監視
  • whoami, tasklist, systeminfo, netstat -ano等の不審なコマンド実行ログを確認
  • IoC情報(悪性URL・ファイルハッシュ・ファイルパス)を活用し、組織内での感染有無を特定

侵害指標(IoC)一覧

  • 悪性アップデート配信URL

    • http://45.76.155[.]202/update/update.exe
    • http://45.32.144[.]255/update/update.exe
    • http://95.179.213[.]0/update/update.exe
    • http://95.179.213[.]0/update/install.exe
    • http://95.179.213[.]0/update/AutoUpdater.exe
  • システム情報アップロードURL

    • http://45.76.155[.]202/list
    • https://self-dns.it[.]com/list
  • Metasploitダウンローダー経由Cobalt Strike Beacon配信URL

    • https://45.77.31[.]210/users/admin
    • https://cdncheck.it[.]com/users/admin
    • https://safe-dns.it[.]com/help/Get-Start
  • Cobalt Strike Beacon C2サーバURL

    • https://45.77.31[.]210/api/update/v1
    • https://45.77.31[.]210/api/FileUpload/submit
    • https://cdncheck.it[.]com/api/update/v1
    • https://cdncheck.it[.]com/api/Metadata/submit
    • https://cdncheck.it[.]com/api/getInfo/v1
    • https://cdncheck.it[.]com/api/FileUpload/submit
    • https://safe-dns.it[.]com/resolve
    • https://safe-dns.it[.]com/dns-query
  • Chrysalisバックドア関連URL(Rapid7調査より)

    • https://api.skycloudcenter[.]com/a/chat/s/70521ddf-a2ef-4adf-9cf0-6d8e24aaa821
    • https://api.wiresguard[.]com/update/v1
    • https://api.wiresguard[.]com/api/FileUpload/submit
  • マルウェアファイルハッシュ例

    • 8e6e505438c21f3d281e1cc257abdbf7223b7f5a
    • 90e677d7ff5844407b9c073e3b7e896e078e11cd
    • 573549869e84544e3ef253bdba79851dcde4963a
    • 13179c8f19fbf3d8473c49983a199e6cb4f318f0
    • 4c9aac447bf732acc97992290aa7a187b967ee2c
    • 821c0cafb2aab0f063ef7e313f64313fc81d46cd
  • 悪性ファイルパス例

    • %appdata%\ProShow\load
    • %appdata%\Adobe\Scripts\alien.ini
    • %appdata%\Bluetooth\BluetoothService

まとめ

  • Notepad++のサプライチェーン攻撃は、標的型・多段階・多様な手法で展開
  • 攻撃者は毎月のように手法やC2サーバ、ペイロードを変更し、発覚を回避
  • IoCや検出ポイントを活用し、早期発見・封じ込めが重要
  • 今後も同様の高度なサプライチェーン攻撃への警戒が必要

著者: Georgy Kucherin, Anton Kargin 出典: Kaspersky調査・Rapid7レポート等

Hackerたちの意見

今は、脆弱性を避けるために常に更新を続けるのがベストプラクティスみたいだけど、供給チェーン攻撃を避けるためにあまり更新しすぎない方がいいとも言われてる。正直、これを同時にどうやって実行すればいいのか分からない。

供給チェーン攻撃は、実際のエクスプロイトよりもずっと珍しい状況だと思うけど、数字は持ってない。

ゼロデイの発表がない限り、新しいリリースの1ヶ月後に更新するのがいいよ。最近のバージョンを保ちながら、セキュリティシステムや研究者に脅威を検出する時間を与えることができるから。

Debianの安定版。もし最先端のものが必要なら、バックポートからインストールするか、ソースからビルドすればいい。でも、システムの大部分は退屈で安定してる方がいいよ。これで何年も問題なく動いてる。

初期の頃は、アップデートがシステムを不安定にすることがよくあった。父がWindowsのアップデートを全部オフにしたことがあるけど、その結果は想像に難くない。最近のMicrosoftのアップデートは、また不安定でユーザーに厳しい方向に戻ってきてる気がする。アップデートしたら起動できなくなるなんておかしいけど、実際そうなってるからね。みんな自動アップデートをまたオフにするだろうな。

使い方によると思う。インターネットコンテンツを扱うためにNotepad++(または他のプログラム)を使うなら、アップデートは必要だよね。信頼できる環境(ローカルファイルやネットワークだけ)で使うなら、やりたいことをするために違う必要がない限りアップデートしない方がいい。多くの人はその中間で、新しいファイルやネットワーク技術がインターネットから来たり去ったりするから。だから、たまにアップデートするのがいいかもね。

基本的に、0日脆弱性とサプライチェーン攻撃の間でトレードオフをしなきゃいけないよね。ブラウザ、オフィススイート、メディアプレーヤー、アーカイバー、そしてインターネットに接続されてて複雑なファイル形式を扱うプログラムは? 定期的にアップデートするか、少なくともCVEに目を光らせておくべき。リスクのあるデータを扱わないテキストエディタや他のプログラムなら、自動更新をオフにしておいても大丈夫だと思うよ。

ユーザーとしてのアクションで一番簡単なのは、Dependabotのクールダウン設定みたいなのを含むローカルパッケージマネージャーを使うことかな。でも、そんなローカルパッケージマネージャーって知ってる? https://docs.github.com/en/code-security/reference/supply-ch...

今はこの理由で、たくさんのツールをサンドボックス内で動かしてる。ダメージはそのツールを動かしてるディレクトリに限定されるからね。ツールがマウントしたクラウドドライブのディレクトリやブラウザのクッキーにアクセスする理由なんてないよ。

これがすべてのアプリケーションのデフォルトアクションになってもいいんじゃないかって思う。定義されたルートから逃げ出す必要はないし、ドキュメントとアプリケーションが効果的にロックされてるみたいな感じだよね。アプリがサンドボックスの外からデータを引き出すためには、許可を与えなきゃいけない。もちろん、Linuxにはその機能があるし、MacOSも「このアプリがこれやあれにアクセスしたい」ってよく聞いてくるけど、個人的にはもっと細かく設定できるようになるといいな。

最近、MacOSはUIの問題で結構叩かれてるけど、個人的にはアプリの細かい権限管理に関しては一番進んでると思う。Linuxの人たちはこれに抵抗があるけど、未来はサンドボックス化されたiOSスタイルのアプリになると思う。OSベンダーがアプリの動作を制御したいからじゃなくて、ユーザーがそう望んでるからね。FOSSコミュニティが適切なセキュリティサンドボックスやエンドユーザーアプリケーションの配布を無視し続けると、結局は大手テック企業に完全に集中しちゃうよ。今のiOSやmacOSのAppleみたいに。

Windowsにサンドボックス?どうやって?

cmd /c "whoami&&tasklist&&systeminfo&&netstat -ano" > a.txt 素朴な疑問だけど、これってこのレベルの攻撃に対して比較的安全な情報じゃないの?この情報を基に0-dayエクスプロイトに弱いシステムを見つけるのが目的なのかな?それにしても、このデータを得るためだけにかなりの手間がかかる気がする。

「ただデータを得るため」じゃなくて、アクセスレベルを確認したり、他のエクスプロイターやセキュリティソフトをチェックしたり、アクセスできるマシンを特定したり、マシンがどのネットワークに接続してるかを特定するためなんだよね。攻撃者はその後、c2チャネルを維持して、得たデータを使って実際の目的を達成することができる。

この情報を基に0-dayの脆弱性に対して脆弱なシステムを見つけるってことかな?サンドボックス化されていないシステムでRCEを持ってるなら、0-dayは必要ないよね。

ちょっと情報が遅れてるんだけど、Notepad++のデジタル署名をどうやってバイパスしたの?確認のためにダウンロードしたけど、インストーラーは有効なコード署名証明書で署名されてるよ。

https://notepad-plus-plus.org/news/8.8.2-available-in-1-week...

アップデーターは更新されたインストーラーの証明書をチェックせず、ただ実行するだけなんだ。

WinGUpのアップデーターの妥協は、アップデートメカニズムがなぜ高価値なターゲットなのかの教科書的な例だね。攻撃者は、特にそのアップデートチャネルを信頼しているマシンでコードを実行できる。心配なのは6ヶ月のウィンドウ。サプライチェーン攻撃は、悪意のあるコードが「信頼された」ソースからフルユーザー権限で実行されるから検出が難しい。ほとんどのエンドポイント保護は、正当なパブリッシャーのアップデートインフラからのソフトウェアをフラグするようには設計されていない。組織にとっては、段階的なロールアウトや一般的なアプリからの予期しない外部接続のネットワーク監視が必要だね。個人にとっては、暗号的検証を持つパッケージマネージャーが少なくとももう一つの障壁を追加するけど、もちろん完全無欠ではない。

Windows用のよく知られた、よく設計されたパッケージマネージャーがないのは、ずっと問題だよね。FOSSプログラムを含む多くのプログラムが、怪しい見た目の広告だらけのウェブサイトからダウンロードされてて、アプリごとに更新方法がバラバラ。クソみたいなインストールや更新のチャンネルは、ベンダーのマネタイズ戦略と密接に結びついてるから、なかなか変わらない。Microsoft Storeがもっと良く設計されて、受け入れられていれば、この状況は変わったかもしれないけど、残念ながら選択肢がない時以外は誰も使ってないみたい。WinGetは見た目がずっと良さそうだけど、今のところは開発者やパワーユーザー向けだけだね。

特に、このURLの最初のスキャンは9月下旬に台湾のユーザーによってVirusTotalプラットフォームで行われた。これが攻撃者かも? スキャンはハッキングがフォーラムで初めて暴露される前に行われた。

そんなことするのはバカだよ。なぜなら、VirusTotalはセキュリティ研究者が提出されたサンプルやURLを見ることを許可してるから。C&Cサーバーに注目を集めるなんて、絶対に避けたいことだよね。

信頼できるソースから「感染を検出してクリーンアップする」アプリって、まだ出てる?(「バージョン8.8.8は悪い」っていう指摘を超えて)

感染したWindowsシステムをクリーンアップする唯一の方法は、ディスクを初期化してOSを再インストールすることだよ。マルウェアが隠れられる場所がたくさんあって、Windowsは簡単なUACダイアログで越えられない境界を設けてないからね。

じゃあ、今理論的に感染してたら、Malwarebytesのスキャンでそれがわかるの?

他のソース: https://www.rapid7.com/blog/post/tr-chrysalis-backdoor-dive-...

関連: Notepad++が国家支援の攻撃者にハイジャックされた https://news.ycombinator.com/item?id=46851548