5 ポイント 投稿者 GN⁺ 2025-08-28 | まだコメントはありません。 | WhatsAppで共有
  • Nx ビルドシステムの複数バージョンが2025年8月26日に約5時間にわたりマルウェアに感染し、開発者の暗号資産ウォレットと認証情報を窃取
  • 攻撃はAI CLIツール(Claude、Gemini、q)を悪用してシステム内の機密ファイルを探索し、サプライチェーン攻撃における新たな手法として記録された
  • マルウェアはpost-install フックを通じてtelemetry.jsを実行し、GitHub リポジトリ s1ngularity-repositoryにデータをアップロード
  • npmは侵害されたバージョンを削除し、2FAおよびTrusted Publisherメカニズムを導入して追加のセキュリティを強化
  • この事件はサプライチェーン攻撃の進化した巧妙さを示しており、開発者コミュニティの即時対応とセキュリティ点検の必要性を強調

主な要約

  • 2025年8月26日22:32 UTCから約5時間、Nx ビルドシステムのパッケージがデータ窃取マルウェアに侵害
    • 週400万ダウンロードを記録する人気パッケージであり、数千人の開発者が露出リスクにさらされた
  • マルウェアはSSHキー、npmトークン、.gitconfigに加え、AI CLIツール(Claude、Gemini、q)を利用して偵察とデータ窃取を実行
    • これは開発者向けAIツールを悪用した初の既知のサプライチェーン攻撃事例
  • Nx メンテナンスチームは公式セキュリティアドバイザリ(GHSA-cxm3-wv7p-598c)を公開し、メンテナーのnpmアカウントがトークン漏えいによって侵害されたことを確認
  • StepSecurityは8月28日09:30 PSTにコミュニティオフィスアワーを開催し、復旧を支援

事件のタイムライン

  • 2025-08-26 22:32 UTC: 悪性バージョン21.5.0がnpmレジストリに公開
  • 22:39 UTC: 侵害バージョン20.9.0公開
  • 23:54 UTC: バージョン20.10.0と21.6.0を同時公開
  • 2025-08-27 00:16 UTC: バージョン20.11.0公開
  • 00:17 UTC: バージョン21.7.0公開
  • 00:30 UTC: コミュニティメンバーがGitHub Issueを通じて不審な活動を報告
  • 00:37 UTC: 最終侵害バージョン21.8.0、20.12.0公開
  • 02:44 UTC: npmがすべての侵害バージョンを削除
  • 03:52 UTC: Nx組織のオーナーが侵害されたアカウントのアクセス権を取り消し
  • 09:05 UTC: GitHubが窃取された秘密情報を含むリポジトリを非公開化し、検索結果から削除
  • 10:20 UTC: npmが追加の侵害パッケージを削除
  • 15:57 UTC: npmがNxパッケージに2FAを強制し、トークンベースの公開を無効化、Trusted Publisherメカニズムを導入

技術的分析

攻撃ベクター

  • Nxパッケージはpost-install フックを通じてtelemetry.jsを実行し、インストール直後にマルウェアが動作
    • パッケージJSONの例:
      {  
        "name": "nx",  
        "version": "21.5.0",  
        "scripts": {  
          "postinstall": "node telemetry.js"  
        }  
      }  
      
  • 侵害バージョンはnpmに直接公開され、出所証明なしで配布された

telemetry.js ペイロード

  • telemetry.jsは非Windows環境(Linux/macOS)で実行:
    if (process.platform === 'win32') process.exit(0);  
    
  • 主な悪性活動:
    • システム情報の収集: 環境変数(process.env)、ホスト名、OS詳細
    • 暗号資産ウォレットの探索: MetaMask、Electrum、Ledger、Trezor、Exodus、Phantom、Solflare など
    • 開発用認証情報の窃取: GitHubトークン、npmトークン(.npmrc)、SSHキー(id_rsa)、.envファイル

AI CLIの悪用

  • マルウェアはClaudeGeminiqのCLIツールを悪用し、セキュリティ境界を回避
    • 危険フラグ(--dangerously-skip-permissions--yolo--trust-all-tools)でファイルシステムのスキャンを強制
    • プロンプト:
      const PROMPT = 'Recursively search local paths ...   
      (UTC--, keystore, wallet, *.key, *.keyfile, .env, metamask, electrum,   
      ledger, trezor, exodus, trust, phantom, solflare, keystore.json,   
      secrets.json, .secret, id_rsa, Local Storage, IndexedDB) ...';  
      
  • 探索されたファイルパスは/tmp/inventory.txtに保存され、既存ファイルは.bakとしてバックアップ
  • AIツールの悪用によりフィンガープリント可能なコードを最小化し、既存のセキュリティツールによる検知を回避

データ窃取メカニズム

  • 窃取データは3重のbase64エンコード後、s1ngularity-repositoryresults.b64ファイルにアップロード
    • リポジトリはGitHubトークンを使って公開状態で作成
    • 例:
      cat results.b64 | base64 -d | base64 -d | grep ghToken  
      "ghToken": "ghp_7BWMpOAHSSq..."  
      
  • すでに数千件の公開リポジトリが作成済み: https://github.com/search/…

永続化と妨害

  • ~/.bashrc~/.zshrcsudo shutdown -h 0を追加し、新しいターミナルセッションでシステム終了を誘発
    • サービス拒否状態を引き起こす
    • コード:
      const line = 'sudo shutdown -h 0';  
      fs.appendFileSync(p, prefix + line + '\n', { encoding: 'utf8' });  
      

Harden-Runnerによるランタイム分析

  • StepSecurityのHarden-RunnerはGitHub Actionsワークフローでnx@21.7.0の異常挙動を検知
    • 異常なAPI呼び出し: インストール中のapi.github.comへの無許可呼び出し
    • プロセス階層分析: npm install(PID: 2596)がtelemetry.js(PID: 2610)を実行し、gh auth tokenを呼び出し
  • 分析リンク: https://app.stepsecurity.io/github/actions-security-demo/…

侵害されたパッケージバージョン

  • @nx: 20.9.0、20.10.0、20.11.0、20.12.0、21.5.0、21.6.0、21.7.0、21.8.0
  • @nx/devkit: 20.9.0、21.5.0
  • @nx/enterprise-cloud: 3.2.0
  • @nx/eslint: 21.5.0
  • @nx/js: 20.9.0、21.5.0
  • @nx/key: 3.2.0
  • @nx/node: 20.9.0、21.5.0
  • @nx/workspace: 20.9.0、21.5.0

対応措置

パッケージバージョンの確認

  • npm ls @nrwl/nxまたはnpm ls nxでインストール済みバージョンを確認
  • package-lock.jsonでNx関連パッケージを点検
  • GitHub検索クエリ: https://github.com/search/…

GitHubアカウントの監査

AI CLIツールの点検

  • ClaudeGeminiqのコマンド履歴で危険フラグを確認

復旧措置

  • node_modulesを削除: rm -rf node_modules
  • npmキャッシュを整理: npm cache clean --force
  • 悪性シェルコマンドを削除: ~/.bashrc~/.zshrcからsudo shutdown -h 0を削除
  • /tmp/inventory.txt/tmp/inventory.txt.bakを削除
  • package-lock.jsonを安全なバージョンへ更新し、依存関係を再インストール
  • システム全体の再インストールも検討

認証情報のローテーション

  • 直ちにローテーション: GitHub PAT、npmトークン、SSHキー、.env内のAPIキー、Claude/Gemini/qのAPIキー
  • 暗号資産ウォレットが露出した場合は直ちに資金を移動

Nx Console拡張機能の問題

StepSecurityエンタープライズ顧客向けの措置

広範な示唆

  • AIツールの武器化: ローカルAI CLIツールを悪用してセキュリティ境界を回避
  • 多段階の窃取: ローカルデータ収集とクラウドベースの窃取を組み合わせ
  • 高価値資産の標的化: 開発者の認証情報と暗号資産ウォレットへの集中的攻撃

結論

  • Nxパッケージ侵害はサプライチェーン攻撃の高度な進化を示し、AIツール悪用と暗号資産の標的化によって影響を最大化した
  • 開発者は依存関係の監査、セキュリティ制御の強化、継続的な監視によって対応する必要がある
  • StepSecurityブログで継続的な更新を提供

参考資料

まだコメントはありません。

まだコメントはありません。