サプライチェーン攻撃キャンペーン「GhostAction」の新たな波が、認証情報を盗むGitHub Actionsワークフローを数万のリポジトリに送り込んでいます。
このワークフローは現在、CI/CDのシークレットに加えて、ソースコードやgit履歴に埋もれたクラウドやAIのキーも探し出します。
Socketによると、2026年10月7日以降、この悪意あるワークフローをコミットしたGitHubアカウントは500件以上に上ります。侵害されたコントリビューターを経由して到達した、組織所有のリポジトリもいくつか含まれています。
被害を受けたリポジトリには、uber/athenadriverや、スター数18,420のkitao/pyxelがあります。コミットメッセージは「Add security audit workflow」または「Update security audit workflow」となっています。
Cyber security news
このファイルは名称に反してセキュリティ機能を一切持たず、盗み出したデータをhxxp://193.32.204[.]199に送信します。
攻撃者はまずメンテナーの認証情報を入手します。Socketはその入手方法を確認できていません。次に、各リポジトリがすでに使用しているActionsシークレットの名前を抽出し、ペイロードにハードコードします。
最後に、このファイルをデフォルトブランチへ直接コミットします。ファイルは次回のプッシュ時に実行されます。このワークフローは、あらゆるブランチやタグへのプッシュに加え、手動実行(dispatch)でも起動します。
GitGuardianが2025年9月にGhostActionを初めて報告しました。このキャンペーンは327ユーザーの817リポジトリを標的とし、3,325件のシークレットを外部へ流出させました。以前の波では、Actionsシークレットとして保存された値しか盗まれませんでした。
今回の亜種は、すべてのブランチとタグを取得するfetch-depth: 0を追加し、さらにgit log -p –allを実行します。これにより、ペイロードはパッチ履歴全体を読み取れます。開発者が削除したつもりだった認証情報も露出してしまいます。
Socketが分析したところ、侵害されたメンテナーアカウント2件(henrywooとkitao)が、security-audit.ymlという名前のワークフローを346のリポジトリに短時間でコミットしていました。
GhostActionのサプライチェーン攻撃
ペイロードは13の正規表現パターンに一致するものを探します。対象は、AWSキー、Anthropic・OpenAI・OpenRouterのキー、GitHubとGitLabのトークン、Google APIキー、Slackトークン、SendGridキーなどです。
さらに、AKIAまたはASIAで始まるキーIDの前後2行ずつも取得します。40文字のシークレットキーは通常その近くにあるため、孤立した識別子ではなく、使用可能なAWSキーのペアを再構成できます。
GitGuardianのその後の集計では、このキャンペーンは3,000のユーザーおよび組織にまたがる3万件以上のリポジトリに及んでいます。
GitGuardianは、約1,900件の侵害されたアカウントと、公開リポジトリのCIで標的にされた3,174件のシークレットがこの攻撃によるものだとしています。10月8日から9日にかけて、約2万8,000件の新規リポジトリが一度に被害を受けました。
Socketは、kitao/pyxelを最も価値の高い標的と位置づけています。このリポジトリはPyPIとcrates.ioを通じて配布されており、ペイロードはCARGO_REGISTRY_TOKEN、PYPI_PASSWORD、PYPI_USERNAME、PERSONAL_ACCESS_TOKENの各シークレット名を指定していました。
Socketは、記事執筆時点で悪意あるパッケージのリリースを確認していません。henrywooの名前空間には、279のフォークに加え、pyllamaやchatllamaなどの機械学習プロジェクトもありました。こうしたプロジェクトの利用者は、AWSやAIのAPIキーを保有していることが多いです。
GitHubが大半の実行を承認待ちで保留した2026年9月の波とは異なり、今回は実行が通り、データが外部へ流出しました。GitHubは10月9日から、このワークフローの実行をブロックし始めました。
そのため、10月10日と12日の後続の波では、シークレットを抽出できませんでした。GitGuardianは、攻撃者が過去のキャンペーンで盗み、ローテーションされていないシークレットにも一部頼っていることを突き止めています。
防御側は、挿入されたファイル内のシークレット一覧を確認する必要があります。一覧に値が入っていれば、Actionsシークレットが露出したことを意味します。空であれば、影響はリポジトリの走査にとどまります。
名前が挙がったシークレットはすべてローテーションしてください。露出した個人用アクセストークンは、ローテーションではなく失効させてください。全履歴をスキャンして13種類の認証情報を探し、見つかったものはすべてローテーションします。
AWSキーについては、CloudTrailを確認してください。そのうえでワークフローを削除し、アカウントが侵害されたものとして扱い、フィッシング耐性のあるMFAを適用し、193.32.204[.]199をブロックしてください。
GitGuardianは、挿入に使われたGitHubの認証情報も失効させる必要があると強調しています。盗まれたトークンは、暗号資産マイニング事業者を含む他の攻撃者に再利用されることが多いためです。
侵害指標(IoC)
| ワークフローファイルのパス | コミットメッセージ |
|---|---|
.github/workflows/security-audit.yml |
Add security audit workflow |
.github/workflows/github_actions_security.yml |
Update security audit workflow |
注: IPアドレスやドメインは、誤って名前解決されたりハイパーリンクになったりするのを防ぐため、意図的に無害化(デファング)しています(例: [.])。無害化の解除は、MISP、VirusTotal、自社のSIEMなど、管理された脅威インテリジェンスプラットフォーム内でのみ行ってください。
サイバー脅威を被害が出る前に阻止し、MTTRを21分短縮します。ANYRUNのSandboxをSOCに統合しましょう。
Audit Security
翻訳元: https://gbhackers.com/ghostaction-supply-chain/