2025年9月15日、あるエンジニアがNPMリポジトリに対するサプライチェーン攻撃を発見しました。従来のNPM攻撃とは異なり、このキャンペーンでは新種の自己増殖型マルウェア(ワームとも呼ばれる)が用いられ、拡散を継続しました。本稿執筆時点で、人気の@ctrl/tinycolorやCrowdStrikeが所有する複数のリポジトリを含む、約200の感染パッケージが特定されています。
実行されると、この新種のワーム(Shai-Huludと命名)は認証情報を窃取して外部へ送信し、さらに自身をコピーできる追加のNPMパッケージを探します。悪性コードはまた、プライベートリポジトリをパブリックにすることで、GitHub上のデータを漏えいさせようとします。
Sysdig Threat Research Team(TRT)は、発見以来このワームの進行状況を監視してきました。迅速な対応により、新たに侵害されるパッケージ数は大幅に減速しています。本稿執筆時点では数時間にわたり新規パッケージは確認されていませんが、状況は変化する可能性があります。
この新種ワームの仕組み、オープンソースのFalcoおよびSysdig Secureでの検知方法、そして次に取るべき対応を見ていきましょう。
Shai-Huludワームはどのように動作するのか?
このワームは、侵害されたNPMパッケージのpost-installフェーズで実行され、巨大なbundle.jsスクリプトを動かします。
...
"scripts": {
...
"postinstall": "node bundle.js"}
...
このコードはLinuxおよびmacOSマシンを標的とし、NPMパッケージレジストリ内で自身を拡散させると同時に、認証情報などの機微情報を盗むために複数の処理を並列で実行します。
悪性NPMパッケージがインストールされると、Shai-Huludはローカルシステムの探索を行います。GitHubやNPMの認証情報に加え、AWSおよびGCPの認証情報など、マシン上の機微な情報を探し始めます。次に、マルウェアは自身の拡散を試み、他のエコシステムの侵害を狙います。
GitHubの認証情報が見つかった場合、ワームはGitHubユーザーとその認証情報(ghp_*およびgho_*トークン)を用い、ユーザーが所有するリポジトリを反復処理します。そして、「push」アクションで起動される悪性GitHub Actionsを介して永続化し、関連するシークレットを窃取します。認証情報の受け取りには https://webhook[.]site が使用されます。このサイト自体は本質的に悪性ではありませんが、無料で利用でき、収集データのドロップボックスとして攻撃者に悪用されることがよくあります。
悪性コードが実行する別の悪質な動作として、ユーザーがアクセスできる組織が所有するすべてのリポジトリを列挙します。これらのリポジトリがプライベートである場合、ユーザーの認証情報と元データを用いて、内容を含む新しいパブリックリポジトリを作成します。新しいパブリックリポジトリ名は元と同一で、末尾に-migrationサフィックスが追加されます。
マルウェアのワーム部分はNPMエコシステムに関与します。マルウェアが有効なNPM認証情報を見つけると、getPackagesByMaintainer()関数を呼び出し、キー所有者がメンテナしているパッケージ一覧を取得し、詳細を取得したうえで月間ダウンロード数でソートします。
次に、Shai-Huludはパッケージ一覧を用いてupdatePackage()関数を呼び出します。この関数は、メンテナのパッケージへ悪性の「bundle.js」コードを拡散し、postinstallフェーズでそのスクリプトを実行させます。元のpackage.jsonは改ざんされ、「bundle.js」を実行するようにされます。このコード片こそが、最初の24時間でワームの拡散が非常に速く増殖し、約200パッケージに影響が及んだ理由です。
trufflehogバイナリがダウンロードされ、ファイルシステム内の他の機微な認証情報を探索するために使用されます。また、見つかったシークレットが正当なものかどうかを検証します。
Trufflehogは、シークレットを発見するために使われる人気のオープンソースセキュリティツールです。以下は、ファイルシステム内の機微データを探すために使用されるコマンドです。
trufflehog filesystem . –json –results=verified
Shai-Huludには、AWSおよびGCPの認証情報を探すコードも含まれており、ローカルのファイルシステムと、Instance Metadata Service(IMDS)の各エンドポイントの両方を探索します。
最後に、これまでのデータがすべて収集されると、悪性JavaScriptはGitHubユーザーが認証済みかどうかを再度確認します。認証済みであれば、「Shai-Hulud」という名前の新しいGitHubリポジトリを作成し、先に見つかった認証情報をbase64エンコードしたJSONファイルとしてアップロードします。
Shai-Huludの多くの手法は、8月末に報告されたNx攻撃と似ています。しかし、類似点がある一方で、ここで最も興味深いのは、マルウェアが大きく進化し、NPMエコシステム内で自己複製する能力を獲得したことです。
Shai-Huludをどのように検知するか?
Sysdig Secureの脅威検知
このマルウェアは、実行時に複数の不審な実行を行います。
Sysdig Secureの顧客は、Sysdig Runtime Behavioral Analyticsポリシーに属する観測ルールReverse Shell Redirects STDIN/STDOUT Using UNIX Socketを活用できます。このルールは、trufflehogバイナリのダウンロード、展開、実行権限の付与といった、JSアプリケーションによって生成される不審な実行を検知できます。
さらに、ルールSuspicious Domain Contacted During Package Installは、GitHub Actionsランナーがwebhook[.]siteへ到達した際にもトリガーします。
GitHub脅威検知にもSysdig Secureを利用している顧客では、窃取された認証情報に応じて、次のルールがトリガーする可能性があります:
- Create Public Github Repository
Falco
Falcoの顧客で、GitHubプラグインなどのFalcoプラグインを導入している場合、GitHubに対する脅威検知も行えます。このGitHubルールは不審なGitHubリポジトリ名を検知し、前述の「Shai-Hulud」に一致する新しいGitHubリポジトリ名、ならびに以前のs1ngularity/nx攻撃で使用された「s1ngularity-repository」の検知に役立ちます。
- rule: Create Suspicious Public Repository
desc: Detect the creation of a new public repository
condition: github.type=repository and github.action=created and github.repo.public=true and (github.repo.name="Shai-Hulud" or github.repo.name contains “s1ngularity-repository” or github.repo.name endswith “-migration” )
output: A new public repository was created (repository_name=%github.repo.name repository_url=%github.repo.url repo_owner=%github.owner org=%github.org user=%github.user)
priority: WARNING
source: github
tags: [github]
Sysdig TRTが推奨する対応
- 環境内で影響を受けたパッケージが使用されていないかを検索し、検出された場合は既知の安全なバージョンへロールバックしてください。
- 可能な限りバージョン固定(version pinning)を活用してください。
- 本番環境で、またはパイプラインを通過する過程でサードパーティ製ソフトウェアパッケージがインストールされるすべての領域が、ランタイムセキュリティ制御によって監視され、把握されていることを確認してください。
- 影響を受けた場合、アクセスされた可能性のあるすべての認証情報をローテーションしてください。
- 開発者エコシステム全体にわたる検知または封じ込めの制御が不足している場合、npmをブロックすることで状況を限定できます。
- GitHubで不審なアクティビティや、最近作成されたリポジトリがないか確認してください。
- また、エンジニア個々のコンピュータでTruffelHogの実行やwebhook[.]siteへの外向き接続がないかも確認するとよいでしょう。
結論
サプライチェーン攻撃は増加傾向にあります。サードパーティパッケージの悪性活動を監視することは、これまで以上に重要です。悪性コードはさまざまな方法で隠され得るため、ランタイム脅威検知を用いることが、これらの攻撃を捕捉するうえで極めて重要です。FalcoとSysdig Secureはいずれもランタイムの可視性と検知を提供し、Sysdig Secureはさらに追加の検知と、環境が悪性パッケージの影響を受けているかを容易に示せるインベントリシステムを提供します。






