攻撃者がGitHub Actionsワークフローを悪用、来歴署名付きnpmマルウェアを公開

攻撃者がGitHub Actionsのワークフローを悪用し、来歴署名(provenance-signed)付きの悪意あるnpmパッケージを配布していたことが確認されました。ソフトウェアサプライチェーンの脅威が大きくエスカレートしたことを示す事例です。

2026年7月14日、Microsoft Threat Intelligenceは、広く利用されているnpm組織「@asyncapi」が組織的に侵害されていたことを突き止めました。攻撃者は信頼されたCI/CDパイプラインを悪用し、正当な暗号学的来歴情報を持つバックドア入りパッケージを公開していました。

今回の攻撃で影響を受けたのは、@asyncapi/specs(6.11.2-alpha.1および6.11.2)、@asyncapi/[email protected]、@asyncapi/[email protected]、@asyncapi/[email protected]という、AsyncAPIの4つのコンポーネントにまたがる5つのパッケージバージョンです。

これらのパッケージは開発ワークフローに深く組み込まれており、しばしば推移的依存関係(transitive dependency)として利用されているため、開発者のマシン、CI/CDパイプライン、本番システムにまで影響範囲が大きく広がる恐れがあります。

postinstallなどのライフサイクルフックに依存する従来型のnpmサプライチェーン攻撃とは異なり、今回のキャンペーンではモジュールのインポート時に悪意あるコードが実行されました。

この手法は、侵害済みモジュールがインポートされた実行時にペイロードが発動するため、「npm install –ignore-scripts」のような一般的な緩和策を回避できてしまいます。

この侵入は、asyncapi/generatorリポジトリを標的とした悪意あるプルリクエストに端を発しています。

pull_request_targetを使用する設定不備のあるGitHub Actionsワークフローにより、攻撃者が用意したコードが特権的なコンテキスト内で実行できる状態になっていました。

これにより、asyncapi-botに紐づくパーソナルアクセストークンが漏えいし、リリースブランチへの不正なコミットが可能になりました。

これらのパッケージは[email protected]の名義で公開されており、正当な来歴証明(provenance attestation)を含んでいたため、暗号学的なレベルでは正規のリリースと見分けがつかない状態でした。

Image

この手法は、SLSA(Supply-chain Levels for Software Artifacts)のようなソフトウェアサプライチェーンのフレームワークで指摘されている新たなリスクを裏付けるものです。上流のCI/CDパイプラインが侵害されると、来歴情報の完全性そのものが損なわれかねないという点です。

Microsoft Threat Intelligenceの分析によると、攻撃者はその後、GitHubのOpenID Connect(OIDC)による信頼済みパブリッシング機構を悪用し、release-with-changesets.ymlやif-nodejs-release.ymlといった正規のワークフローを通じて悪意あるパッケージを公開していました。

悪用されたGitHub Actions

注入されたペイロードは、「Miasma」と呼ばれる高度な多段型マルウェアフレームワークを展開するものでした。インポートと同時に実行が始まり、ハードコードされたコンテンツ識別子を使ってIPFSから第2段階のペイロード(sync.js)を取得する、独立したNode.jsプロセスが生成されます。

この第2段階のペイロードは、HKDF-SHA256やAES-256-GCMを含む多層の暗号処理によって難読化・暗号化が施されています。

Image

復号が完了すると、Miasmaランタイム(M-RED-TEAM v6.4と識別)が初期化されます。このランタイムは、コマンド&コントロール通信、永続化の仕組みに加え、IPFS、Nostr、Ethereum、BitTorrent DHTを活用した分散型のフォールバックチャネルに対応しています。

今回のキャンペーンでは、認証情報の窃取や横展開といった高リスクの機能の多くが無効化されていましたが、このフレームワークには環境変数やクラウド認証情報、開発者向けツールから機密データを抽出できるモジュールが含まれており、既知の攻撃手法(TTP)と合致しています。

Microsoft Defenderは、これらの悪意あるコンポーネントを「Trojan: JS/MiasmStealer.SC」および「Trojan:Script/Supychain.A」として検知します。振る舞い検知では、不審なNode.js子プロセス、永続化の痕跡、そしてポート8080、8081、8091を経由した85.137.53.71へのC2通信もカバーしています。

組織に対しては、影響を受けたバージョン(推移的依存関係を含む)を直ちに削除し、@asyncapi/specs 6.11.1や@asyncapi/generator 3.3.0といった安全なバージョンに戻すことが推奨されています。

そのほかの対処策として、npmおよびYarnのキャッシュのクリア、OS別のNodeJSディレクトリ内でのsync.jsの捜索、侵害された環境からアクセス可能なすべての認証情報のローテーションが挙げられます。

セキュリティチームはGitHub Actionsの設定も見直すべきです。特に、信頼できないコードに対してpull_request_targetを安全でない形で使用しないこと、そしてトークンやシークレットに最小権限のアクセス制御を徹底することが求められます。

Cloudsecurity solutions

今回のインシデントは、攻撃者の戦略における重大な転換を浮き彫りにしています。信頼されたCI/CDパイプラインと署名付きアーティファクトそのものが、下流の利用者を狙う武器として使われているのです。

2024年のXZ Utilsバックドア事件や、今なお続く依存関係の混同(dependency confusion)を狙ったキャンペーンなど、類似のサプライチェーン侵害の事例は、ビルド時点の完全性チェックだけでなく、実行時の振る舞い監視の必要性を改めて裏付けています。

攻撃者が信頼された自動化の仕組みやIPFSのような分散型インフラをますます悪用するようになる中、防御側もシグネチャベースの対策にとどまらず、パイプラインの堅牢化、アーティファクトの検証、実行時の異常検知を包含した包括的なサプライチェーンセキュリティの実践へと進化していく必要があります。

侵害指標(IoC)

パッケージ バージョン 注入されたファイル Tarball SHA-256
@asyncapi/specs 6.11.2-alpha.1 index.js d425e4583cc6185d41e95c45eda00550045a5d1919b9a012236a4520d009dbd7
@asyncapi/specs 6.11.2 index.js 9b2e65db653ca8575c9b10eefb9a80c6006404812c2ec212bf5675e3c690233b
@asyncapi/generator 3.3.1 lib/templates/config/validator.js bfaeb987faa6de2b5a5eb63b1233d055215b09b0349a9394f2175fd7cdf385e4
@asyncapi/generator-components 0.7.1 lib/utils/ErrorHandling.js 082d733db0687dcd768104972b065d4b58cb1e6043688c6c20fa3702337f36ab

注: IPアドレスおよびドメインは、誤って名前解決やハイパーリンク化されるのを防ぐため、意図的に無害化(defang)して表記しています(例: [.])。再有効化(re-fang)は、MISP、VirusTotal、SIEMなど管理された脅威インテリジェンス基盤内でのみ行ってください。

2026年、AI SOCに求められる機能とは? 完全チェックリスト AI SOC機能チェックリストをダウンロード

翻訳元: https://gbhackers.com/github-actions-abused/

ソース: gbhackers.com