新たなGhostActionキャンペーンが拡大し、侵害されたGitHubアカウントは500超に達しました。2026年10月7日以降、数万件のリポジトリに悪意あるワークフローが仕込まれています。
Socketが10月9日に公表した更新情報によると、攻撃の目的は認証情報の窃取です。GitHub Actionsのシークレット、クラウドの認証情報、そしてソースコードやリポジトリ履歴に埋め込まれたAIサービスのAPIキーが狙われています。
当初分析された10月8日の集中的な攻撃では、メンテナーのアカウントhenrywooとkitaoが侵害され、346件のリポジトリが影響を受けました。
GhostAction攻撃者、500超のGitHubアカウントを侵害
標的にはuber/athenadriverやkitao/pyxelが含まれていました。コントリビューターの権限を通じて、アカウントの侵害が組織所有のプロジェクトにまで波及しうることを示しています。Socketは、攻撃者が最初のメンテナー認証情報をどのように入手したかを特定できていません。
攻撃者は「Add security audit workflow」などのコミットメッセージを付け、.github/workflows/security-audit.ymlをリポジトリのデフォルトブランチに直接コミットしていました。
Securityincident response
このワークフローは安心感を与える名前とは裏腹に、認証情報を収集します。ブランチやパスの制限なしにpushイベントで実行され、workflow_dispatchによる手動実行にも対応しています。
攻撃者はデプロイに先立ち、既存のワークフローを調べて参照されているActionsシークレットを特定し、その名前を再利用可能なペイロードに組み込んだとみられます。
Pyxelでは、このワークフローがCARGO_REGISTRY_TOKEN、PERSONAL_ACCESS_TOKEN、PYPI_PASSWORD、PYPI_USERNAMEを狙っており、GitHub、PyPI、crates.ioにまたがって情報が漏えいする恐れがありました。ペイロードが均一で、展開が短時間に集中していることから、列挙と挿入が自動化されていると考えられます。
新たな亜種では、従来のActionsシークレット窃取の仕組みに加えて、リポジトリのスキャン段階が追加されています。
actions/checkout@v4をfetch-depth: 0で使用し、全ブランチとタグの履歴を取得します。その上で、作業ツリー内のファイルとgit log -p --allのパッチ出力を調べます。履歴バッファの上限は20万行です。
13種類の認証情報パターンが対象で、AWSのアクセスキーID、シークレットキー、セッショントークンのほか、Anthropic、OpenAI、OpenRouterのAPIキー、GitHubとGitLabのトークン、Google、Slack、SendGridの認証情報を網羅しています。
履歴スキャンにより、現在のファイルからは削除されていても、到達可能なコミットに残っているシークレットが見つかる可能性があります。ペイロードはさらに、AWSアクセスキーIDの前後2行ずつも取得します。
この前後の文脈から、近接して記載されたシークレットアクセスキーが露出し、攻撃者は単独の識別子ではなく、実際に使える認証情報の組み合わせを復元できます。収集されたデータとリポジトリ識別子は、平文のHTTP POSTでhxxp://193.32.204[.]199/?c=monamiへまとめて送信されます。
Socketの確認によると、影響を受けたリポジトリでワークフローは実際に実行されており、Pyxelは公開用認証情報が狙われた最も明確な例です。ただし研究者らは、この活動に起因する悪意あるPyPIやcrates.ioのリリースは確認していません。
防御側は、仕込まれたワークフローの削除、実行ログの確認、侵害されたアカウントのアクセス権の取り消し、漏えいした認証情報のローテーションを行う必要があります。対応では、Actionsシークレットだけでなく、過去の漏えいを含むコミット済みの認証情報も対象とすべきです。
Socketはこのほか、パッケージリリースの監査、AWS CloudTrailのアクティビティの確認、送信先アドレスのブロック、プッシュ保護付きシークレットスキャンの有効化を推奨しています。影響を受けたフォークは、Actionsを有効にする前に点検するよう勧めています。組織全体のチェックは、アカウントの権限に沿って進めるべきです。
| カテゴリ | インジケーター | 説明 |
|---|---|---|
| ワークフローファイルのパス | .github/workflows/security-audit.yml |
セキュリティ監査を装った悪意あるワークフローファイル。 |
| ワークフローファイルのパス | .github/workflows/github_actions_security.yml |
別の悪意あるワークフローファイルのパス。 |
| コミットメッセージ | Add security audit workflow |
悪意あるワークフローの挿入に関連するコミットメッセージ。 |
| コミットメッセージ | Update security audit workflow |
悪意あるワークフローの更新に関連するコミットメッセージ。 |
| コミットメッセージ | Add Github Actions Security workflow |
ワークフロー挿入に関連する別のコミットメッセージ。 |
| リクエストボディのマーカー | REPO= |
窃取リクエストのボディ内でリポジトリを識別する。 |
| リクエストボディのマーカー | AKIA_CTX_START |
収集したAWS認証情報の前後文脈の開始位置を示す。 |
| リクエストボディのマーカー | AKIA_CTX_END |
収集したAWS認証情報の前後文脈の終了位置を示す。 |
| ネットワーク — C2のIPアドレス | 193.32.204[.]199 |
認証情報の窃取に使われる攻撃者管理下の送信先。 |
注記: IPアドレスやドメインは、誤って名前解決されたりハイパーリンク化されたりするのを防ぐため、意図的に無害化(例:[.])しています。無害化の解除は、MISP、VirusTotal、SIEMなど管理された脅威インテリジェンスプラットフォーム内に限ってください。
16,000以上のSOCチームがANY.RUNを活用し、脅威調査を効率化して手作業を削減しています。 チームで試してみる