最新バージョンはpreinstallフェーズで悪意のあるコードも実行し、最初の波よりも大きく高速だと研究者は述べています。
Shai-Huludの認証情報窃取型自己増殖ワームの新バージョンがオープンなnpmレジストリを通じて拡大しており、リポジトリからパッケージをダウンロードする開発者は直ちに対応する必要があります。
Wiz Inc.の研究者は月曜日に、先週末のキャンペーン初期段階で、収集された被害者データを含む新しいGitHubリポジトリが30分ごとに1000件追加されていたと述べました。また、JFrogの研究者は181個のパッケージが侵害されていることを特定しました。
現在のキャンペーンでは新たな亜種が導入されており、Wizの研究者はこれをShai-Hulud 2.0と呼び、preinstallフェーズで悪意のあるコードを実行することで「ビルドや実行環境での潜在的な被害範囲が大幅に拡大している」と述べています。
この脅威は侵害されたパッケージ管理者アカウントを利用して、正規のnpmパッケージのトロイの木馬化バージョンを公開します。インストールされると、マルウェアは開発者やCI/CDの秘密情報をGitHubリポジトリに流出させ、さらにユーザーが所有するすべてのnpmパッケージに悪意のあるペイロードを挿入します。攻撃者は流出した秘密情報を使って被害者のITシステムに侵入し、さらなるマルウェアをインストールすることも可能です。
JFrogによれば、この新しい亜種は流出用リポジトリ名をランダムに生成し、セキュリティチームが漏洩した秘密情報を追跡・削除するのを困難にしています。また、新たなペイロードには権限昇格、DNSハイジャック、被害者のマシンからデータを削除する機能などが追加されています。
Zapier、ENS Domains、PostHog、Postmanなど、開発者に人気のパッケージも複数侵害されています。
ReversingLabsの研究者も、侵害されたパッケージのリストにはAsyncAPI関連パッケージ、特に@asyncapi/specs(累計1億回以上、週平均140万回ダウンロード)が含まれていると指摘しています。研究者によれば、このパッケージが今回の攻撃波の「ペイシェントゼロ」(最初に感染したパッケージ)と考えられています。
第二波はより大規模かつ高速
侵害の兆候を探している開発者やセキュリティチームは、新しい亜種がsetup_bun.jsとbun_environment.jsという2つの新たなペイロードファイルを追加している点に注意すべきです。
「このワームの再出現は、npmエコシステムにとって依然として現在進行形かつ深刻な脅威であることを示しています」とJohannes Ullrich氏(SANS Institute研究部長)は述べています。「CSOは、自社ソフトウェアで使用しているコンポーネントの監視や、CI/CDパイプラインの強化によって、悪意のあるコードが実行された場合の耐性を高める必要があります。」
Shai-Huludは9月に初めて登場し、週200万回以上ダウンロードされるcolorライブラリを含む多数のnpmライブラリが悪意のあるバージョンに置き換えられていたことが発覚しました。
最初のShai-Huludの波は、すでにWizがこれまでに見た中で最も深刻なJavaScriptサプライチェーン攻撃の一つでしたと、Merav Bar氏(同社の脅威研究者・レポート共著者)はCSOに語っています。「この新たな波はさらに大規模かつ高速です。約350人のGitHubユーザーによる25,000以上の攻撃者作成リポジトリが存在し、30分ごとに約1,000リポジトリ増加しています。マルウェアは開発者やクラウドの認証情報を窃取し、preinstallフェーズで実行され、開発マシンやCI/CDパイプラインにも影響します。この規模・スピード・アクセス範囲の組み合わせが、高いインパクトを持つキャンペーンとなっています。」
侵害を前提に
11月21日~23日の期間中に影響を受けたパッケージを取得した場合、自身の環境が露出していると想定すべきだと彼女は述べています。対策としては、ワークステーション上のnpmキャッシュのクリア、node_modulesの削除、クリーンなバージョンからの再インストール、悪意のあるリリース前のバージョンへのピン止め、存在していたトークンや秘密情報(GitHub PAT、npmトークン、SSHキー、クラウド認証情報など)のローテーションが含まれます。
GitHub/npmで強力な多要素認証(MFA)を有効化し、開発者個人アカウントで予期しない新規リポジトリやワークフローファイルが作成されていないか監視することも重要だと彼女は付け加えています。
Shai-Huludの第二波は驚くことではないと、MorphisecのサイバーセキュリティアドバイザーBrad LaPorte氏は述べています。「最初の攻撃は、preinstallスクリプトがいかに簡単に武器化されうるかを示しました。この波は、そうした警告が無視された場合に何が起こるかを証明しています。より大規模で破壊的なペイロード、そして数時間で数千のリポジトリを感染させる自動化です。」
リポジトリへの推奨事項
攻撃者が悪意のあるパッケージを容易にアップロードできないようにするため、npmは公開プロセスを厳格化する必要があるとLaPorte氏は述べています。これには、新規アカウントの本人確認をパッケージ公開前に徹底すること、短期間に複数の悪意あるパッケージをアップロードできないようレート制限を実装すること、パッケージ管理者の不審な活動(急激な公開数の増加や説明のつかない大きな変更など)を監視することが含まれます。
「Shai-Huludの事例から見て、根本的な問題はnpmそのものではありません」とWizのBar氏は述べています。「オープンソースレジストリが今や高インパクトな配布ハブとして機能しており、攻撃者は開発者がそこに寄せる信頼を悪用しています。その文脈で最も重要なのは、パッケージの公開・更新方法に関するガードレールを強化し続けることです。これは、侵害された管理者アカウントによる悪意のあるバージョンの公開を難しくし、異常な公開行動への可視性を高め、下流ユーザーがパッケージバージョンの安全性を迅速に理解できるようにすることを含みます。これらは単一のレジストリへの批判ではなく、エコシステム全体の防御策ですが、Shai-Huludのような攻撃がより自動化・広範化する中で、オープンソースコミュニティ全体が進むべき方向性を示しています。」
SOCRadarのCISOであるEnsar Seker氏は、Shai-Huludは典型的なパッケージ侵害ではないと警告しています。「これは開発サプライチェーンに埋め込まれたワームです。攻撃者がコンパイル済みバイナリや実行環境を狙うのではなく、ソフトウェアのビルドや出荷に使われる開発プロセスそのものへと標的をシフトしていることを示しています。『npmを使っていないから安全だ』と考える組織はありません。下流の依存関係や開発ツールチェーンも発射台になり得るのです。」
これまでnpmは、パッケージ作成者の認証や公開後のパッケージ改変防止に注力してきたとSANS InstituteのUllrich氏は述べています。しかし、これは悪意のある人物による悪意あるパッケージの公開を防ぐものではありません。最近、npmはデフォルトのアクセストークン有効期間をさらに短縮し、レガシーな「クラシックトークン」の廃止も始めました。「npmは明白な悪意あるコンテンツの自動スキャンを導入する必要があるかもしれませんが、意味のある解決策の実装は困難でしょう。」
セキュリティチーム・開発者への推奨事項
Wizは、npmを利用するアプリケーション開発チームを持つ組織のセキュリティチームや、npmおよびGitHubを利用する個人開発者に以下を推奨しています:
- 各開発者のnpmキャッシュをクリアする;
- 依存関係を既知のクリーンなバージョンにピン止めする、または11月21日以前のビルドにロールバックする;
- npmトークン、GitHub PAT、SSHキー、クラウドプロバイダー認証情報を失効・再生成する;
- 開発者およびCI/CD(継続的インテグレーション/継続的デリバリー)アカウントに対してフィッシング耐性の多要素認証を強制する。
GitHubやCI/CD環境内では、「Shai-Hulud」という説明が付いた新規リポジトリの検索、不正なワークフローやhuludに言及する不審なコミットの確認、組織内での新規npm公開の監視を行うべきです。
長期的な保護のため、CSOやITリーダーはCI/CD環境でのライフサイクルスクリプト(postinstall、preinstall)の制限・無効化、ビルドシステムからの外部ネットワークアクセスを信頼できるドメインのみに制限、開発者が短命かつスコープ限定の自動化ログイントークンのみを使用していることの確認が推奨されます。
翻訳元: https://www.csoonline.com/article/4095578/new-shai-hulud-worm-spreading-through-npm-github.html