
今週、人気のJavaScriptライブラリが乗っ取られ、標的型フィッシングとクレデンシャル盗難によるサプライチェーン攻撃でマルウェアのドロッパーと化した。
npmパッケージのeslint-config-prettierは、毎週3000万回以上ダウンロードされているが、そのメンテナがフィッシング攻撃の被害に遭い、危険にさらされた。同じメンテナによる他のパッケージ、eslint-plugin-prettier、synckit、@pkgr/core、napi-postinstallも標的にされた。
攻撃者は、盗んだ認証情報を使って、Windowsマシンを感染させるための悪質なコードを含む、複数の未承認バージョンのパッケージを公開しました。
メンテナがフィッシングされ、ライブラリが侵害される
7月18日、eslint-config-prettierのバージョン8.10.1、9.1.1、10.1.6、10.1.7をインストールした後、開発者が異常な動作に気付き始めた。これらのバージョンはnpmレジストリに公開されていたが、GitHubのリポジトリにはリリースを裏付けるような対応する変更がなかったため、オープンソースコミュニティではすぐに疑惑が持ち上がった。
eslint-config-prettierやeslint-plugin-prettierのようなライブラリは、コンフリクトや冗長なlintingを発生させることなく、プロジェクト全体でコードの書式ルールが一貫したスタイルになるようにすることで、開発者がPrettierとESLintを使いやすくするものだ。
開発者の Dasa Paddock 氏はまず、この問題に光を当てるためにプロジェクトのリポジトリで GitHubissue を提起し、コミュニティのメンバーもすぐに賛同した。
その後まもなく、パッケージのメンテナであるJounQin氏がフィッシング攻撃の被害にあったことを確認した。これにより、権限のない者が彼のnpmトークンにアクセスし、侵害されたバージョンを公開することができた。
「このフィッシングメールです」とJounQin氏は書き、彼が受け取った説得力のある “Verify your account “メールのスクリーンショットを共有した:

このメールは “support@npmjs.com “から発信されているように偽装されているが、その中のリンクはユーザーを不正なnpnjs[.]comドメインに導く。
「そのnpmトークンを削除し、至急新しいバージョンを公開します」とJounQinは述べている。
「みなさん、ありがとうございます。そして、私の怠慢をお詫びします。
悪意のあるポストインストールスクリプトはWindows DLLを実行する
悪意のあるバージョンでは、パッケージがインストールされるとすぐにnpmのポストインストールスクリプト 「install.js」が実行されるように設定されている。
この “install.js “には疑わしい関数logDiskSpace()が含まれており、その名前に反してディスク容量の監視には関係しません。その代わりに、この関数はパッケージ内にバンドルされている DLL「node-gyp.dll」を rundll32 Windows システムプロセス経由で実行しようとします。

この記事を書いている時点では、トロイの木馬として認識されているこのDLLは、VirusTotalで19/72の検出スコアを持っています。
あなたは何をすべきでしょうか?
-
影響を受けるパッケージの以下のバージョンをインストールしないでください:
-
eslint-config-prettierバージョン 8.10.1、9.1.1、10.1.6、10.1.7。 -
eslint-plugin-prettierバージョン4.2.2 および 4.2.3. -
synckitバージョン 0.11.9 -
pkgr/coreバージョン 0.2.8 -
napi-postinstallバージョン0.3.1
-
-
package-lock.json、pnpm-lock.yaml、bun.lock、yarn.lockなどのロックファイルに、これらのバージョンへの参照がないか確認してください。 -
7月18日以降にビルドをデプロイした場合、CIログとランタイム環境をチェックし、特にWindowsマシンで侵害の兆候がないか確認してください。
-
影響を受けたビルドプロセス中に公開された可能性のあるシークレットをローテーションすることを検討してください。
メンテナはさらに、影響を受けるバージョンをnpmjsレジストリで「deprecated」とマークした。さらに、あるGitHubユーザーは、このメンテナが公開している他のパッケージについても、改ざんの可能性がないかチェックするよう注意を促している。

今回の侵害は、最近人気のあるライブラリの開発者を狙った一連の同様のソーシャル・エンジニアリング攻撃に続くものだ。
3月には、10以上の広く使用されているnpmライブラリが侵害され、情報窃盗犯と化した。先月には、毎週100万ダウンロードを超える17のGluestackパッケージが乗っ取られ、リモート・アクセス・トロイの木馬(RAT)が展開された。
オープンソースのエコシステムは、その大部分が信頼に基づいて運営されているため、このような事件は、サプライチェーンのセキュリティの脆弱性とメンテナのセキュリティの重要性を強調している。たった1回のクリックミスで、何百万人ものユーザーが危険にさらされるのだ。
更新、19-Jul-2025 12:42 PM ET:影響を受けるパッケージ名を追加しました。
.ia_ad { background-color:#width: 95%; max-width: 800px; margin: 15px auto; border-radius: 8px; border:1px solid #d6ddee; display: flex; align-items: stretch; padding: 0; overflow: hidden; }:0; overflow: hidden; } .ia_lef { flex: 1; max-width: 200px; height: auto; display: flex; align-items: stretch; } .ia_lef a { display: flex; width: 100%; height: 100%; } .ia_lef a img { width: 100%; height: 100%; /*object-fit: cover;*/ border-radius: 8px 0 0 8px; margin: 0; display: block; } .ia_rig { flex: 2; padding:display: flex; flex-direction: column; justify-content: center; } .ia_rig h2 { font-size: 17px !important; font-weight: 700; color:#line-height: 1.4; font-family:margin: 0 0 14px 0; } .ia_rig p { font-weight: bold; font-size: 14px; margin: 0 0 clamp(6px, 2vw, 14px) 0; } .ia_button { background-color:#border:1px solid #3b59aa; color: black; text-align: center; text-decoration: none; border-radius: 8px; display: inline-block; font-size: 16px; font-weight: bold; cursor: pointer; padding:width: fit-content; } .ia_button a { text-decoration: none; color: inherit; display: block; } @media (max-width: 600px) { .ia_ad { flex-direction: column; align-items: center; } .ia_lef { max-width: 100%; } .ia_lef a img { border-radius: 8px 8px 0 0; } .ia_rig { padding:15px;
width: 100%;
}
.ia_button {
width: 100%;
margin: 0px auto;
}
}




Comments