Wiz の研究者の調査でNxのnpm公開トークンが悪用された「s1ngularity」サプライチェーン攻撃が、公開リポジトリを踏み台に数千件規模のシークレット流出と私有リポジトリの公開化を行う攻撃が判明しました。
さらにAI CLIを利用したファイル探索やgh CLIによる晒しなど、従来の監視をすり抜ける要素が組み合わさっている事も指摘しています。
概要
発端は、Nxのnpm発行権限がActionsの脆弱性経由で乗っ取られたことにあります。攻撃者は悪性バージョンを配布し、実行環境から環境変数やGitHub・npmトークンを吸い上げ、被害者本人のGitHubアカウント配下に自動生成した公開リポジトリへ保存しました。
公開停止までの短い時間差で、第三者がこれらを回収できる状態にあったことが重大でした。
二段目として、漏えいしたGitHubトークンを使い、被害者の非公開リポジトリを「s1ngularity-repository-#英小5字」へ改名し公開する攻撃が拡大。
三段目では、特定組織の多数のリポジトリが「_bak」付きで公開される動きが確認されています。
マルウェアにおけるAIの役割
本件では、攻撃者がローカルに設定済みのAI CLI(Claude、Gemini、Amazon Q)を検出し、プロンプトを投げて「機密ファイルと思われるモノの所在」をAIに選別させる仕組みが組み込まれていました。
プロンプトは短期間で少なくとも3系統に変遷し、「役割付与(pen-test風の口調)」「探索範囲・深さ」「出力様式(/tmp/inventory.txt)」などの調整が試行されています。
結果としては、AIが実害ある選別に成功するには、
①AI CLIが導入・認証済みであること
②モデルが拒否せず応答すること
③有用な候補を返すこと
という三つの前提をすべて満たす必要があり、各段階で大きく脱落しました。
実測では、被害者の約半数にAI CLIが存在し、Claudeの占有が高く、Geminiは約15%、Qは約5%でした。Claudeでは約4分の1が拒否、Qも同様の傾向が見られ、Geminiは拒否率が低い一方、ワークスペース制限で約4分の1が失敗しました。
さらに、多くのケースで探索がNxの作業ディレクトリに限定され、機微性の低い同一ファイルが14〜15件ずつ列挙されるだけに終わっています。
総じて、AI経由での実害ある流出は全体の4分の1未満で、20,000件超の抽出ファイルに対して有効な秘密は100件未満でした。
種類としては、AIサービス用キー(LangSmith、Anthropic、OpenAI)やクラウド(AWS、Azure、Vercel)が中心で、暗号資産関連の有効鍵は未確認です。
AIの導入は柔軟性や検知回避の可能性を高める半面、成功条件の多さと不確実性がボトルネックになることが、今回の計測から明確になりました。
影響範囲
初期フェーズでは1,700名超のユーザーで秘密情報が公開され、収集サンプルだけでも20,000件超のファイルが流出しました。これらは225名の固有ユーザー、250件のケースにまたがり、同一ユーザーで複数回作成される例もありました。
GitHubトークンに限ると、最初の公開停止から24時間後の時点で約90%が依然有効、48時間後でも約80%が有効という鈍い失効ペースが観測され、その後のGitHub一斉失効キャンペーンを経ても約5%が有効として残りました。
二段目では、少なくとも480の侵害アカウント(約3分の2が組織)から、6,700件超の私有リポジトリが公開され、単一組織で700件超が晒された例もあります。終盤の事案では、2つの侵害ユーザーから500件超が公開されています。
npmトークンは初期フェーズの流出分のうち4割超が有効(約100個)と見積もられ、後続のサプライチェーン攻撃の火種が残存しています。
出典
s1ngularity’s Aftermath: AI, TTPs, and Impact in the Nx Supply Chain Attack









