概要
- 2026年3月31日、 axios の2つの悪意あるバージョンがnpmに公開
- plain-crypto-js 依存関係を通じてリモートアクセス型トロイの木馬を配布
- 約3時間で削除されたが、 影響を受けたシステムは要対応
- セキュリティ対策の強化と再発防止策を実施中
- 詳細な技術分析や対応手順は外部リンクで案内
axios npmリリースにおけるセキュリティインシデント概要
- 2026年3月31日、 axios@1.14.1 および axios@0.30.4 が npm に公開
- これらのバージョンは plain-crypto-js@4.2.1 を依存関係として注入
- plain-crypto-jsは macOS、Windows、Linux 上で リモートアクセス型トロイの木馬(RAT) をインストール
- 悪意あるバージョンは 約3時間 で削除
- 公開は メンテナのアカウントが侵害 されたことが原因
影響の確認と初期対応
- lockfile(package-lock.jsonやyarn.lock)で axios@1.14.1、axios@0.30.4、plain-crypto-js の記載をgrepで確認
- 該当があれば そのマシンは侵害されたと見なす
- axiosを 1.14.0 または 0.30.3 へダウングレード
- node_modules/plain-crypto-js/ を削除
- すべての シークレット・トークン・認証情報のローテーション
- sfrclak[.]com や 142.11.206.73:8000 への通信ログ確認
- CIランナー利用時は ビルド時に注入したシークレットもローテーション
- 00:21〜03:15 UTCの間に npm install 等を実行していなければ影響なし
詳細な復旧・調査ガイダンス
- 詳細な対応手順やCI/CD向けガイドは下記外部サイト参照
- StepSecurity: 技術分析と復旧手順
- Snyk: アドバイザリとスキャン手法
- Socket: サプライチェーン攻撃の詳細
攻撃の経緯
- 約2週間前: ソーシャルエンジニアリング による攻撃開始
- 3月30日 05:57 UTC: plain-crypto-js@4.2.0 公開
- 3月31日 00:21 UTC: axios@1.14.1 公開(悪意ある依存関係付き)
- 3月31日 01:00 UTC頃: axios@0.30.4 公開、外部検知・コミュニティ通報
- 3月31日 01:38 UTC: DigitalBrainJS がPR提出、npmへ連絡
- 3月31日 03:15 UTC: 悪意あるバージョン削除
- 3月31日 03:29 UTC: plain-crypto-js 削除
インシデントからの教訓
- 個人アカウントからの直接公開はリスク
- OIDCフロー や イミュータブルリリース の早期導入が必要
- 自動検知手段がなかった ため、コミュニティの通報に依存
- オープンソースメンテナ は高度なソーシャルエンジニアリングの標的
- 継続的な監視とセキュリティ強化 が必須
再発防止策
- 全デバイス・認証情報の リセット
- イミュータブルリリース 体制への移行
- OIDCフロー の導入
- GitHub Actions のベストプラクティス適用
- セキュリティ体制の継続的な見直しと改善
広範なユーザー向け要約
- axios の2つのバージョンが短期間 悪意ある状態で公開
- リードメンテナのアカウント侵害 によるもので、ソースコード自体の改ざんではない
- 該当バージョン利用の場合は 即時削除と認証情報のローテーション が必要
- インシデントは解決済み、 今後もセキュリティ強化を継続
感謝と今後の対応
- @DigitalBrainJS、オープンソースコミュニティ、npmセキュリティチームへの迅速な対応に感謝
- 悪意あるバージョンは npmから削除済み
- 継続的な調査とセキュリティ対策のアップデートを実施予定
- 質問・意見はスレッドで受付