今週、人気のJavaScriptライブラリが乗っ取られ、マルウェアのドロッパーに変えられるというサプライチェーン攻撃が、標的型フィッシングと認証情報の窃取によって実行されました。
毎週3,000万回以上ダウンロードされているnpmパッケージeslint-config-prettierは、メンテナーがフィッシング攻撃の被害に遭ったことで侵害されました。同じメンテナーによる別のパッケージeslint-plugin-prettierも標的となりました。
攻撃者は盗まれた認証情報を使い、悪意のあるコードを含む複数の不正なバージョンを公開し、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のようなライブラリは、PrettierとESLintを使う開発者が、プロジェクト全体でコード整形ルールを一貫して適用し、競合や冗長なリンティングを避けるのに役立ちます。
開発者のDasa Paddock氏が最初にこの問題をGitHubのissueで指摘し、コミュニティメンバーがすぐに議論に加わりました。
その直後、パッケージのメンテナーであるJounQin氏が自身がフィッシング攻撃の被害に遭ったことを認めました。これにより、第三者が彼のnpmトークンにアクセスし、侵害されたバージョンを公開できるようになりました。
「このフィッシングメールです」とJounQin氏は述べ、受信した「アカウントを確認してください」と書かれた巧妙なメールのスクリーンショットを共有しました:

このメールは「support@npmjs.com」から送信されたように偽装されていますが、記載されたリンクは不正なnpnjs[.]comドメインに誘導します。
「そのnpmトークンは削除し、できるだけ早く新しいバージョンを公開します」とJounQin氏は述べました。
「皆さんありがとうございます。そして私の不注意をお詫びします」と同じスレッドで続けています。
悪意あるpostinstallスクリプトがWindows DLLを実行
悪意のあるバージョンでは、npmのpostinstallスクリプト「install.js」が、パッケージのインストール時に自動的に実行されるよう設定されています。
この「install.js」には、名前とは異なりディスク容量の監視とは無関係なlogDiskSpace()という不審な関数が含まれています。実際には、この関数はパッケージ内に同梱された「node-gyp.dll」というDLLを、Windowsのrundll32システムプロセス経由で実行しようとします。

執筆時点で、この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です。 -
package-lock.json
やyarn.lock
ファイルにこれらのバージョンが含まれていないか確認してください。 -
7月18日以降にビルドをデプロイした場合、CIログや実行環境に侵害の兆候がないか確認してください。特にWindowsマシンで注意が必要です。
-
影響を受けたビルドプロセス中に漏洩した可能性のあるシークレットは、ローテーションを検討してください。
メンテナーはさらに、影響を受けたバージョンをnpmjsレジストリ上で「非推奨(deprecated)」としてマークしました。また、GitHubユーザーが警告しているように、メンテナーが公開している他のパッケージについても改ざんの兆候がないか確認することが推奨されています。

今回の侵害は、近年人気ライブラリの開発者を狙った同様のソーシャルエンジニアリング攻撃が続いている中で発生しました。
3月には、10以上の広く使われているnpmライブラリが侵害され、情報窃取マルウェアに変えられました。先月には、週100万回以上ダウンロードされている17個のGluestackパッケージが乗っ取られ、リモートアクセス型トロイの木馬(RAT)が配布されました。
オープンソースエコシステムは主に信頼の上に成り立っているため、このような事件はサプライチェーンセキュリティの脆弱性と、メンテナーのセキュリティ確保の重要性を浮き彫りにしています。たった一度の誤クリックが、何百万人ものユーザーを危険にさらす可能性があります。
クラウド検知&レスポンス入門
新たな脅威をリアルタイムで封じ込め、ビジネスへの影響を未然に防ぎましょう。
この実践的で分かりやすいガイドで、クラウド検知とレスポンス(CDR)がセキュリティチームにもたらす優位性を学びましょう。