NPMサプライチェーン攻撃のあったtinycolorを含むコンテナイメージを拡張スキャンで検査してみた
2025年9月15日、StepSecurityのブログで、週に200万回以上ダウンロードされる人気のNPMパッケージ @ctrl/tinycolor をはじめ、多数のパッケージがサプライチェーン攻撃の被害を受けたとの報告がありました。
ctrl/tinycolor and 40+ NPM Packages Compromised
The popular @ctrl/tinycolor package with over 2 million weekly downloads has been compromised alongside 40+ other NPM packages in a sophisticated supply chain attack dubbed "Shai-Hulud". The malware self-propagates across maintainer packages, harvests AWS/GCP/Azure credentials using TruffleHog, and establishes persistence through GitHub Actions backdoors - representing a major escalation in NPM ecosystem threats.
https://www.stepsecurity.io/blog/ctrl-tinycolor-and-40-npm-packages-compromised#affected-packages
Amazon ECR (Elastic Container Registry) の拡張スキャン機能を有効にすると、Amazon Inspectorがコンテナイメージ内のOSやプログラミング言語(Python, Java, Rubyなど)のパッケージ脆弱性を検出できます。
本記事では、この @ctrl/tinycolor を含むコンテナイメージをECRにプッシュし、Amazon Inspectorによるスキャンで脆弱性がどのように検出されるか検証してみました。
検証環境
スキャン設定
ECRダッシュボードを利用して拡張スキャンを有効化しました。
プライベートリポジトリへの プッシュ時にスキャンを実施する設定としました。
検証用イメージの作成
攻撃の被害があったバージョン 4.1.1 と 4.1.2 は既にリポジトリから削除されています。現在は、問題が修正されたバージョン 4.2.0 が最新版として公開されています。
今回は、この最新版 (4.2.0) と、比較対象として侵害前のバージョン (4.1.0) の2種類のイメージを用意しました。
package.json (例: 4.2.0 を使用)
{
"name": "sample-app",
"version": "1.0.0",
"dependencies": {
"@ctrl/tinycolor": "4.2.0"
}
}
Dockerfileは、@ctrl/tinycolor パッケージをインストールするだけの、シンプルなものを用意しました。
FROM node:alpine
WORKDIR /app
COPY package.json ./
RUN npm install
CMD ["node", "--version"]
スキャン結果
4.2.0 (最新版)
最新版 4.2.0 を含むイメージをスキャンした結果、以下の通り CRITICAL な問題が検出されました。
- Name : MAL-2025-47141
- Vulnerable package: @ctrl/tinycolor
- Severity: CRITICAL
- Description: Malicious code in @ctrl/tinycolor (npm)
4.1.0 (侵害前バージョン)
侵害前のバージョン 4.1.0 を含むイメージでは、脆弱性は検出されませんでした。
まとめ
今回の検証では、Amazon Inspectorのスキャンは、修正済みのはずの最新版 4.2.0 を脆弱性ありと判定する「偽陽性(False Positive)」となりました。
この原因は、Inspectorが参照する脆弱性データベースの情報がまだ更新されておらず、「4.2.0 は安全である」という情報が反映されていないためだと考えられます。
InspectorのレポートからVulnerability ID MAL-2025-47141 をたどると、OSSFのデータベース情報が確認でき、検証時点(9/18)での最終更新日時が 2025-09-17T06:23:36Z となっていました。おそらくこのデータにはまだ 4.2.0 の修正情報が含まれていなかったと推測されます。
9/18時点の MAL-2025-47141の更新日情報
"modified": "2025-09-17T06:23:36Z",
"published": "2025-09-15T23:42:49Z",
偽陽性という課題はありましたが、侵害前のバージョンは正しく「安全」と判定されており、サプライチェーン攻撃で侵害されたパッケージを検知する手段として、ECR拡張スキャンの有効性を確認できました。
多数のNPMパッケージを利用するワークロードでは、今回のようなサプライチェーン攻撃のリスクに常に備える必要があります。ECR拡張スキャンの有効化や、CI/CDパイプラインへのスキャン工程の組み込みをご検討ください。
なお、ECRの拡張スキャンは有料です。東京リージョンでオンプッシュスキャンを利用した場合、プッシュしたイメージ毎に0.11ドル(2025年9月時点)の課金が発生します。頻繁にイメージをプッシュする環境では、コストにもご留意ください。