Webエンジニア向けプログラミング解説動画をYouTubeで配信中!
▶ チャンネル登録はこちら

【ITニュース解説】Embedded Malicious Code in tinycolor and ngx-bootstrap releases on npm

2025年09月17日に「Dev.to」が公開したITニュース「Embedded Malicious Code in tinycolor and ngx-bootstrap releases on npm」について初心者にもわかりやすく解説しています。

作成日: 更新日:

ITニュース概要

人気npmパッケージ「ngx-bootstrap」「tinycolor」などで悪意あるコードが見つかった。インストール時に開発者のトークンや認証情報を盗む攻撃で、該当バージョンを導入したシステムは侵害されたとみなす。パッケージ削除、シークレット変更、ログ調査などの緊急対応が必要だ。

ITニュース解説

最近、ソフトウェア開発の世界で非常に重要な「npmパッケージ」に、悪意のあるコードが埋め込まれるという深刻なセキュリティ事件が発生した。これは、システムエンジニアを目指す皆さんにとって、日々の開発作業と密接に関わるため、その内容と影響、そして対策をしっかりと理解しておくことが極めて重要である。

この事件は、npmという、たくさんのプログラマーが作った便利なソフトウェアの部品(パッケージ)が共有されている場所で起こった。具体的には、「ngx-bootstrap」という、Webサイトの見た目を整えるために広く使われている人気の部品と、「@ctrl/tinycolor」という、色の操作に使われるこちらも人気の部品のいくつかのバージョンに、悪意のあるコードがこっそり仕込まれていたことが判明した。

事件の最も中心的な手口は、これらのパッケージがインストールされる際に自動的に実行される「postinstall」という種類のスクリプトを利用したものだった。このスクリプトには、「bundle.js」という名前の悪意のあるプログラムが含まれており、これが実行されると、開発者のコンピューターから秘密の情報を盗み出そうとした。盗まれようとした情報には、npmにログインするための特別な鍵(トークン)、GitHubという共同開発プラットフォームにアクセスするための鍵、さらにはクラウドサービス(AWSやGCPなど)を利用するための認証情報などが含まれている。これらの情報は、たとえパスワードが知られなくても、それ単体でシステムにログインしたり、機密データにアクセスしたりできる非常に重要なものだ。

この攻撃の深刻な点は、悪意のあるコードが人気のあるパッケージに紛れ込んだことにある。ngx-bootstrapは、Webアプリケーション開発で広く使われる「Angular」というフレームワークのUI部品ライブラリであり、開発者のコンピューターだけでなく、ソフトウェアを自動的に作ったりテストしたりする「CIエージェント」と呼ばれるサーバー環境でも頻繁に利用されている。そのため、多くの開発者やシステムが意図せず危険にさらされた可能性がある。

初期の報告ではngx-bootstrapと、似たような目的を持つ「ng2-file-upload」というパッケージが標的になったと考えられていたが、調査が進むにつれて被害はさらに拡大していることが明らかになった。週に200万回以上ダウンロードされる@ctrl/tinycolorだけでなく、@ctrl、@nativescript-communityといった複数の開発グループや、さらにはサイバーセキュリティ企業であるCrowdstrikeの@crowdstrikeという名前空間に属するパッケージまでもが影響を受けていた。これは、攻撃者が広範囲にわたって悪意のあるコードをばらまき、非常に多くのシステムを狙っていたことを示している。ニュース記事には具体的な影響パッケージのリストが多数挙げられており、その広範さを物語っている。

影響を受けたバージョンのパッケージをインストールしてしまったシステムは、もはや「完全に侵害された」と見なすべきであるという非常に強い警告が出されている。これは、単にそのパッケージを削除するだけでは不十分で、そのシステム上で扱っていた全ての機密情報が盗まれた可能性を考慮し、徹底した対策が必要だという意味だ。

では、この種の攻撃から自分の身を守り、被害を最小限に抑えるためにはどうすればよいのだろうか。

まず、自身の開発環境やプロジェクトが影響を受けているかを迅速に確認する必要がある。npm ls ngx-bootstrapのようなコマンドを使ってプロジェクト内でどのバージョンが使われているかを確認したり、package-lock.jsonpnpm-lock.yamlyarn.lockといった依存関係が記録されたファイルを調べて、問題のあるバージョン(例えばngx-bootstrapの18.1.4、19.0.3、20.0.4~20.0.6など)がインストールされていないかを確認する。もし過去に該当期間にこれらのバージョンをインストールしていた記録があれば、注意が必要だ。

次に、被害拡大を防ぐための緊急措置として、パッケージを再インストールする際にスクリプトの実行を無効にするオプション(npm ci --ignore-scriptsnpm install --ignore-scripts)を使うことが推奨される。これにより、もし悪意のあるスクリプトがまだ残っていたとしても、それが実行されるのを防ぐことができる。

そして、**詳しい調査(フォレンジック)**を行う。インストール時に、自分の開発コンピューターやCIエージェントから外部への不審な通信がなかったかを記録(ログ)をたどって確認する。GitHubやnpmのアクセス履歴、クラウドプロバイダーの認証情報の利用履歴などを監査し、異常なアクセスや変更がないかを徹底的に調べる。特に、今回のマルウェアが「shai-hulud」という新しいGitHub Actionsワークフローを作成したという痕跡(IoC: Indicator of Compromise)も報告されているため、GitHub Actionsの設定も確認する必要がある。

最終的な対応と復旧としては、まず悪意のあるバージョンが記述されたファイル(node_modulesやロックファイル)を削除し、信頼できる既知の正常なバージョンのみを再インストールする。プライベートなレジストリやキャッシュ、アーティファクトリポジトリに問題のあるパッケージのコピーが残っていないかも確認し、あれば削除する。

そして最も重要なのが、**全ての機密情報(トークン、鍵、認証情報)を安全な別のコンピューターから変更する(ローテーションする)**ことだ。GitHubの個人アクセストークンやSSHキー、npmのレジストリトークン、クラウドサービスのアクセスキーなどを全て失効させ、新しいものに切り替える。これは、被害を受けた可能性のあるシステムが信用できないため、安全な別の場所から実行する必要がある。

これらの対策を行った後、クリーンな環境でソフトウェアを再構築し、必要に応じてライフサイクルスクリプトを再度有効にする。もし開発したソフトウェアを他のユーザーに配布している場合は、この事件の影響について情報を共有し、アップグレードや再構築を促す必要もある。

今回の事件は、近年増加している「サプライチェーン攻撃」の一例である。サプライチェーン攻撃とは、ソフトウェア開発の部品供給網、つまり今回のように人気のあるオープンソースパッケージなどを狙って、悪意のあるコードを仕込む手法を指す。過去にもESLintやPrettierのメンテナーアカウントが侵害され、マルウェアが配布された事件や、AIコーディングエージェントが悪用されたNxパッケージの事件などが報告されており、この種の脅威は現代のソフトウェア開発において避けられない現実となりつつある。

システムエンジニアを目指す皆さんにとって、ソフトウェアの安全性は最も基本的な関心事の一つとなる。日頃から依存しているパッケージのセキュリティに注意を払い、不審な挙動がないか警戒し、万が一の際には今回のような手順で迅速かつ的確に対応できる知識と準備をしておくことが、これからの開発者には不可欠となるだろう。

関連コンテンツ

関連IT用語