npm の 40 パッケージに侵害が波及:TruffleHog による偵察と感染チェーンのためのコード挿入

40 npm Packages Compromised in Supply Chain Attack Using bundle.js to Steal Credentials

2025/09/16 TheHackerNews — npm レジストリを標的とする、新たなソフトウェア・サプライチェーン攻撃の存在を、サイバー・セキュリティ研究者たちが指摘している。この攻撃は、複数のメンテナーが所有する 40 以上のパッケージに影響を与えている。サプライチェーン・セキュリティ企業 Socket は、「侵害されたバージョンに取り込まれた NpmModule.updatePackage 関数は、パッケージの tarball をダウンロードし、package.json を改変し、ローカル・スクリプト (bundle.js) を挿入し、アーカイブを再パックして再公開するものだ。それにより、下流のパッケージが自動的にトロイの木馬化される」と述べている。

この攻撃の最終目的は、TruffleHog の認証情報スキャナーを介して開発者のマシンから機密情報を検索し、攻撃者が管理する外部サーバへと送信することだ。この攻撃は、Windows/Linux システムを標的にできる。

確認されたのは、以下のパッケージが、このインシデントの影響を受けることだ:

angulartics2@14.1.2
@ctrl/deluge@7.2.2
@ctrl/golang-template@1.4.3
@ctrl/magnet-link@4.0.4
@ctrl/ngx-codemirror@7.0.2
@ctrl/ngx-csv@6.0.2
@ctrl/ngx-emoji-mart@9.2.2
@ctrl/ngx-rightclick@4.0.2
@ctrl/qbittorrent@9.7.2
@ctrl/react-adsense@2.0.2
@ctrl/shared-torrent@6.3.2
@ctrl/tinycolor@4.1.1@4.1.2
@ctrl/torrent-file@4.1.2
@ctrl/transmission@7.3.1
@ctrl/ts-base32@4.0.2
encounter-playground@0.0.5
json-rules-engine-simplified@0.2.4, 0.2.1
koa2-swagger-ui@5.11.2, 5.11.1
@nativescript-community/gesturehandler@2.0.35
@nativescript-community/sentry4.6.43
@nativescript-community/text@1.6.13
@nativescript-community/ui-collectionview@6.0.6
@nativescript-community/ui-drawer@0.1.30
@nativescript-community/ui-image@4.5.6
@nativescript-community/ui-material-bottomsheet@7.2.72
@nativescript-community/ui-material-core@7.2.76
@nativescript-community/ui-material-core-tabs@7.2.76
ngx-color@10.0.2
ngx-toastr@19.0.2
ngx-trend@8.0.1
react-complaint-image@0.0.35
react-jsonschema-form-conditionals@0.3.21
react-jsonschema-form-extras@1.0.4
rxnt-authentication@0.0.6
rxnt-healthchecks-nestjs@1.0.5
rxnt-kue@1.0.7
swc-plugin-component-annotate@1.9.2
ts-gaussian@3.0.6

それぞれのトロイの木馬化されたパッケージに取り込まれた悪意の JavaScript コード (bundle.js) は、正規のシークレット・スキャン・ツールである TruffleHog をダウンロードして実行する。そしてホストをスキャンし、GITHUB_TOKEN/NPM_TOKEN /AWS_ACCESS_KEY_ID/AWS_SECRET_ACCESS_KEY などのトークンとクラウド認証情報を探し出す。

Socket は、「”whoami” エンドポイントで npm トークンを検証し、そのトークンが利用できる場合には、GitHub API とインタラクションする。また、クラウド・ビルド・エージェント内では、一時的な認証情報を漏洩し得るクラウド・メタデータの検出も試みる」と述べている。

その後に、このスクリプトは開発者の認証情報 (GitHub 個人アクセス・トークン) を悪用することで、”.github/workflows” に GitHub Actions ワークフローを作成し、収集したデータを “webhook[.]site” エンドポイントに流出させる。

前述のリストアップされたパッケージを使用し、そこに公開認証情報を取り込んでいる開発者に推奨されるのは、npm トークンなどの公開されているシークレットのローテーションと、開発環境の監査である。

Socket は、「リポジトリに書き込むワークフローは、最初のホストを超えて存続する。一度コミットされると、その後の CI 実行により、機密性の高いシークレットやアーティファクトとインタラクトするパイプライン内から、情報漏洩のステップがトリガーされる可能性がある」と指摘している。

crates.io フィッシング・キャンペーン

Rust セキュリティ・レスポンス・ワーキング・グループが警告するのは、タイプミス・スクワッティングされたドメイン “rustfoundation[.]dev” から、”crates.io” ユーザーを狙って配信されるフィッシング・メールの存在である。

それらの “security@rustfoundation[.]dev” から発信されたメッセージは、”crates.io” インフラへの侵害の疑いについて受信者に警告し、埋め込まれたリンクをクリックしてログイン情報をローテーションするよう指示する。その偽のメッセージの内容は、「ユーザーが公開したパッケージを、攻撃者が変更できないようにするため」というものだ。

その不正なリンク先である “github.rustfoundation[.]dev” は、GitHub のログイン・ページを模倣している。そこから推測されるのは、攻撃者が被害者の認証情報を取得しようとしていることだ。なお、このフィッシング・ページは、すでにアクセス不能になっている。

Rust セキュリティ・レスポンス WG は、「これらのメールは悪意のものであり、Rust Foundation および Rust Project とは無関係なドメイン名から送信されている。そこから推測されるのは、GitHub の認証情報を盗むことを目的としていることだが、”crates.io” のインフラが侵害されたという証拠は発見されていない」と述べている。

Rust チームは、このフィッシング・ドメインの削除に加えて、”crates.io” における不審な活動を監視するための措置を講じていると述べている。