要約 / ポイント
悪名高い Shai-Hulud ワームが進化し、npm から Go ecosystem へと飛び移りました。もはや依存関係に隠れるのではなく、プロジェクトを開いた瞬間に秘密を盗むために、VS Code と Claude の設定を武器化しています。
ワームが新たな宿主を見つける
自己増殖する脅威である Shai-Hulud は、以前は npm ecosystem を支配していました。開発者がその汚染されたパッケージをインストールすると、意図せずスキャンがトリガーされ、npm トークン、GitHub トークン、AWS、GCP、そして Azure キーなどの重要な認証情報が盗まれました。これらの盗まれたトークンは、その後自動的な伝播を促進し、被害者自身の npm パッケージの侵害されたバージョンを公開しました。
2025年9月に初めて確認され、11月にはさらに大規模に再来した(500以上のパッケージと700のバージョンに影響)この陰湿な脅威は、現在、深刻にエスカレートしています。Socket.dev によって指摘された新たな波は、Shai-Hulud が Go ecosystem、特に Verana Blockchain project を侵害していることを示しています。これは、従来の JavaScript 環境を超えた危険な飛躍を意味します。
重要なことに、これは Go の脆弱性ではありません。この攻撃は Go のビルドプロセスを完全に回避します。代わりに、Go モジュールのソースアーカイブ内に悪意のある JavaScript ファイルを埋め込み、開発者のツールを標的にします。永続性は `.claude` および `.vscode` フォルダーを介して確立され、`settings.json` ファイルには Claude Code SessionStart フックが含まれ、`tasks.json` ファイルには `node .claude/setup.mjs` を実行する VS Code フォルダーオープンタスクが含まれています。したがって、マルウェアは開発者がプロジェクトを開いたり、コーディングセッションを開始したりした瞬間に起動し、エディターを強力な新しい攻撃ベクトルに変えます。
あなたのエディターが今や攻撃ベクトルに
Shai-Hulud ワームは進化し、パッケージレジストリへの依存を捨て、開発環境を直接標的にするようになりました。この洗練された新しいベクトルは、.vscode/tasks.json や .claude/settings.json のような重要な設定ファイル内に悪意のあるフックを仕込み、信頼できるエディターを直接的な脅威に変えます。
この設計により、プロジェクトフォルダーが開かれたり、Claude Code セッションが開始されたりした瞬間にマルウェアが起動し、従来の防御を完全に回避します。以前は重要な安全策であった `npm install --ignore-scripts` フラグは、ペイロードをトリガーするためにパッケージのインストールが不要になったため、もはや何の保護も提供しません。
一度アクティブになると、マルウェアは Bun を利用して次の段階をデコードし、正確な認証情報窃盗操作を実行します。GitHub トークン、AWS、GCP、および Azure キーを含む機密データを求めて、.env files やその他のアクセス可能な場所を標的として、システムを組織的に襲撃します。
この大量のデータを外部に持ち出す前に、ワームはアクティブなセキュリティソフトウェアをインテリジェントに探査し、CrowdStrike、Defender、そして SentinelOne のようなソリューションを検出します。この偵察フェーズにより、最大限のステルス性が確保され、企業の確立されたセキュリティ境界を迂回し、盗まれた資産を検出されずに送信することが可能になります。
戦場は依存関係を超えて移動した
戦場は根本的に変化しました。企業はもはやセキュリティ体制を `node_modules` やパッケージの依存関係の監査に限定することはできません。Socket.dev によって Go モジュールで検出された新しい Shai-Hulud の亜種は、深いパラダイムシフトを示しています。攻撃対象領域は、開発環境全体、特に `.vscode/tasks.json` や `.claude/settings.json` のようなプロジェクトレベルの設定を含むようになりました。これは、宣言された依存関係だけでなく、クローンされたリポジトリ内のすべてのファイルを包括的に精査することを要求します。
その結果、従来の修復手順は現在では完全に無効です。悪意のあるコードが管理可能なパッケージ内ではなく、エディターの自動化のために設計された設定ファイル内に直接存在する場合、`npm uninstall` は防御策になりません。このワームの永続化メカニズムは、従来の依存関係管理を迂回し、インストールスクリプトに触れることなく、フォルダーが開かれたりコーディングセッションが開始されたりした瞬間にコードを実行できるようにします。
これは深刻な下流リスクをもたらします。感染した開発者は、侵害された `.vscode` または `.claude` ファイルに気づかずに、この悪意のあるコードを共有コードベースに意図せずコミットしてしまう可能性があります。これにより、攻撃はCI/CDパイプラインに押し込まれ、本番環境や重要なインフラストラクチャが侵害される可能性があります。この進化する脅威を理解することはリーダーにとって不可欠です。ワームの歴史に関する詳細な背景については、Shai-Hulud npmサプライチェーン攻撃:知っておくべきこと をお読みください。
ローカル環境の強化
ローカル環境を保護するには、認識の根本的な転換が必要です。IDEとAIアシスタントの設定、特に`.vscode`および`.claude`フォルダー内のファイルを実行可能コードとして扱ってください。新しいプロジェクトを開く前に、これらの重要なディレクトリを手動で検査してください。この積極的な精査により、Shai-Huludが使用するような悪意のあるフックが、フォルダーを開いたりセッションを開始したりしたときに実行されるのを防ぎ、マシンを即座の侵害から保護します。
Enjoying this? Get one like it in your inbox each morning.
one email a day · unsubscribe in two clicks · no third-party tracking
決定的に重要なのは、VS Codeでの自動タスク実行を無効にすることです。「タスク: 自動タスクの管理」コマンドに移動し、この機能がオフになっていることを確認してください。この設定により、潜在的に悪意のある「フォルダーを開く」タスクが明示的な同意なしに実行されるのを防ぎ、密かなコード実行に対する重要な防御層を追加します。
ローカルの保護策を超えて、堅牢な多層防御戦略を実装してください。GitHub、AWS、Azureなどのすべてのサービスに対して、OIDCを活用した短命で最小特権のトークンを使用してください。これにより、盗まれた認証情報の価値が大幅に制限されます。さらに、GitHubワークフローなどのCIランナーに厳格なエグレスフィルタリングを課し、不正なデータ流出の試みをブロックすることで、たとえ攻撃が侵入しても、機密データが管理された環境から流出しないようにします。
よくある質問
Shai-Huludワームとは何ですか?
Shai-Huludは、ソフトウェアパッケージに感染する自己増殖型ワームです。npmトークン、クラウドキー、SSHキーなどの開発者認証情報を盗み出し、より多くのパッケージを汚染し、自動的に拡散します。
この新しいサプライチェーン攻撃はどのように変化しましたか?
新しい攻撃は、パッケージのインストールスクリプトを使用する代わりに、`.vscode/tasks.json`や`.claude/settings.json`のようなプロジェクト設定ファイルに悪意のあるコードを埋め込みます。このコードは、開発者がエディターでプロジェクトを開いたときに実行され、一般的な防御策を迂回します。
「`npm install --ignore-scripts`」フラグは、なぜこの攻撃に対して機能しないのですか?
`--ignore-scripts`フラグは、パッケージのインストール中にスクリプトが実行されるのを防ぐだけです。この攻撃ベクトルはインストールスクリプトを使用せず、フォルダーを開いたりコーディングセッションを開始したりするなどのエディターアクションを介してトリガーされるため、このフラグは効果がありません。
開発者が安全を保つために取れる最も重要な行動は何ですか?
開発環境の設定を実行可能コードとして扱ってください。クローンしたリポジトリ内の`tasks.json`のようなファイルを、プロジェクトを開く前に必ず検査し、エディターの設定で自動タスク実行を無効にしてください。
