
2025年11月24日、Aikido Securityは、現在Shai-Huludと呼ばれている脅威アクターによる新たな悪意あるパッケージ群に関する記事を公開しました。この悪意あるコードは、自身が存在するローカルホストから認証情報を収集しようとします。その後、取得した認証情報を使用して、ユーザーの認証情報マネージャーからさらに別の認証情報を収集しようとします。収集されたすべての出力は公開GitHubリポジトリに送信され、それらのリポジトリには「Sha1-Hulud: The Second Coming」という説明が付けられています。
最初に確認された標的はZapierで、その後、ENS、AsyncAPI、PostHog、Postman、その他のベンダーへの影響も確認されました。Aikidoの報告によると、全体で492個のパッケージが侵害され、月間ダウンロード数は合計1億3,200万件にのぼります。
マルウェアの初期化
このマルウェアは、ライブラリのリポジトリ内に2つの部分として組み込まれています。1つ目はマルウェアのローダーで、setup_bun.js内に保存されています。この悪意あるコードは、ライブラリが読み込まれた際にロードされ、実際の悪意あるコードを含む高度に難読化されたスクリプトであるbun_environment.jsを実行します。
悪意あるスクリプトをライブラリに組み込むため、このスクリプトはpackage.jsonファイル内にpre-installスクリプトとして含められていました。これにより、ライブラリに対する処理が行われる前に、悪意あるコードが実行されます。
このマルウェアは、悪意あるコードの実行にbunを使用しているようです。そのため、JSスクリプトには_bunという接尾辞が付いています。setup_bun.jsはbunがインストールされているかを確認し、インストールされていない場合は、bun.shで提供されているインストールスクリプトを使用してこのツールをインストールします。
その後、bunがbun_environment.jsを実行し、すべての悪意あるタスクが実行されます。
悪意あるbun
bun_environment.jsは、約10MBに及ぶ非常に大きなJSコードのファイルです。このコードは高度に難読化されており、変数名や関数名などのコード要素がHEX値に置き換えられているようです。また、このコードには、オブジェクト名をHEXから人間が読める形式に解決する関数(function a0_0x4cc3)も含まれています。
この関数は、a0_0x1bc8関数内の文字列配列_0x259634を参照します。この配列には、指定されたHEX値に対応する文字列値が含まれています。その値の中には、流出先リポジトリの説明である「Sha1-Hulud: The Second Coming」も含まれています。
この関数を使用することで、スクリプト内で難読化されている文字列を解決できます。
コードの最後の部分は、コードのメイン関数として動作します。まず、このコードがCI/CD環境で実行されているかどうかを検出し、それに応じてタスクを実行します。
- JSON
_0x4b3fc6で定義されたSecrets Managerの認証情報を窃取する - 環境変数から認証情報を窃取する
- TruffleHogをダウンロードし、侵害されたマシン上で実行して保存済みの認証情報を検出する
- GitHub Actions Artifactsを検索し、results.jsonファイルに出力する
- AWS、Azure、GCPの認証情報をダウンロードする:
- 後で
systemInfo.jsonに保存されるシステム情報を取得する
要求されたすべてのデータは、以下のファイルに保存されます。
- cloud.json:クラウドプロバイダーの認証情報(AWS、Azure、GCP)
- contents.json:リポジトリの内容とソースコード
- environment.json:環境変数とシステム情報
- truffleSecrets.json:TruffleHogスキャナーによって検出されたシークレット
- actionsSecrets.json:GitHub Actionsのシークレット
- results.json:GitHub Artifacts
- systemInfo.json:現在のシステムに関する情報
この(GitHub)Actionに関するDiscussion
脅威アクターが追加している最後のマルウェア要素は、悪意あるGitHub Actionです。このActionは、Discussionが作成されるとすぐに、標的マシン上でコマンドを実行します。このマルウェア要素は、discussion.yamlファイルに保存されています。GitHub Actionsでは直接的な変数補間が行われるため、runフィールド内にデータが指定されている場合、そのデータはコマンドとみなされます。これは、この記事で説明されているとおりです。
攻撃者が行う必要があるのは、実行したい悪意あるコマンドを含むGitHub Discussionをリポジトリ上に作成することだけです。すると、そのコマンドが侵害されたマシン上で実行されます。このActionにはruns-on: self-hostedフィールドが含まれているため、コマンドはライブラリがインストールされているマシン上で実行されます。
悪意あるGitHub Actionを通じて侵害されたマシンを管理できるようにするため、このスクリプトは被害者のマシン上にGitHub Actions runnerをダウンロードして設定します。runnerはSHA1HULUDという名前で、マシンのOSに応じて定義されたパスに配置されます。このAction runnerはDiscussion GitHub Actionを実行し、侵害された標的を管理します。
- Linux:
$HOME/.dev-env/ - Windows:
%USERPROFILE%\.dev-env\ - macOS:
$HOME/.dev-env/
データ流出
すべての情報が取得されると、マルウェアはリポジトリを作成します。
現在、このスクリプトによって侵害された認証情報を使用して作成されたリポジトリは23,000件以上あり、新しいリポジトリも継続的に出現しています。
攻撃を緩和するための次のステップ
侵害されたライブラリの所有者は、悪意あるバージョンとリリースを削除しており、悪意あるライブラリの削除を推奨しています。また、マルウェアの痕跡がないか、影響を受けた可能性のあるマシンを調査することも推奨されます。
setup_bun.jsbun_environment.jscloud.jsoncontents.jsonenvironment.jsontruffleSecrets.jsondiscussion.yamlformatter_*.yml
インストールされている可能性のある悪意あるライブラリと、それらを含むpackage.jsonファイルを検索し、該当するバージョンを削除してください。
システム全体で、SHA1HULUDの値またはGitHub Actionディレクトリである.dev-envを含むすべての項目を検索してください。
マルウェアに関連していると思われるプロセスはすべて停止し、調査する必要があります。
AWS、Azure、GCPのすべての認証情報、およびGitHub PATをリセットし、現在保有している認証情報によって実行されるアクションを監視してください。また、「Sha1-Hulud: The Second Coming」という説明を含むリポジトリをオンラインで検索することも推奨されます。そこに認証情報が含まれている可能性があります。
エクサフォースが対応を支援します
エクサフォースは、Shai-Huludや過去のNPM侵害のようなサプライチェーン攻撃に対して、エンドツーエンドの可視化と検出を提供します。GitHubからSBOMを直接取り込むことで、エクサフォースは顧客環境全体に存在する悪意ある、または想定外のパッケージバージョンを特定できます。お客様は、これらをデータエクスプローラーで視覚的に確認したり、エクサボット検索を活用して自然言語で問い合わせたりできます。
エクサボット検索では、侵害されたパッケージは見つかりませんでした。
エクサフォースは、依存関係のリスクも事前にフラグ付けできます。たとえば、新しすぎるために必要な審査期間をまだ経ていないパッケージを検出できます。これにより、信頼できないバージョンがアプリケーションに追加されるのを防ぎます。また、エクサフォースは既知の悪意あるパッケージバージョンも特定し、それらが攻撃ベクトルとなる前に削除できるようにします。
新しすぎるパッケージや既知の悪意あるパッケージを検出する事前防御
エクサフォースは、不審なファイル、通常とは異なるGitHub Actionの作成、認証情報の悪用の兆候など、GitHub Actionsにおける異常なワークフロー動作も監視します。盗まれたシークレットがお客様の環境に対して使用された場合、当社の異常検出エンジンが不正な認証やリポジトリアクティビティをリアルタイムで強調表示します。
完全に検索可能なワークフローのインベントリ
このマルウェアが出現した際、エクサフォースのMDRチームは直ちに、影響を受けたパッケージ、悪意あるGitHub Actions、顧客データが含まれる公開リポジトリがないか、すべての顧客環境を確認しました。複数のお客様が影響を受けたパッケージを参照していましたが、いずれも安全なバージョンに固定されていたため、侵害は回避されました。
結論
最近では、悪意あるパッケージが脅威アクターに好まれる手法になっているようです。その主な理由は、ワームのような挙動、大量のダウンロード数、そして開発者がそれらのライブラリに寄せる信頼にあります。そのため、ライブラリは監視される必要があり、危険な侵害手法となり得るため、個々のライブラリを脅威として考慮する必要があります。
この攻撃の標的になっていないこと、またはすでに制御下に置かれていることを願いつつ、潜在的な侵害がないか、環境とエンドポイントを監視することを推奨します。






