ハッカー、GitHub Actionsをウェブホスティングサーバー攻撃用のグローバルボットネットに悪用

ハッカーが侵害されたGitHubリポジトリとGitHub Actionsワークフローを悪用し、ウェブホスティングサーバーをスキャン・攻撃する事実上のグローバルボットネットを構築していることが判明しました。主な標的はcPanelおよびWHM環境です。

Hacking& Cracking

このキャンペーンは、正規のPHP/DevOps開発者であるdinushchathurya氏に関連する10個のPackagist PHPパッケージ内で、悪意ある開発版が発見されたことで表面化しました。同氏の上流のGitHubリポジトリが侵害されていたのです。

これらのブランチベースの開発版は、攻撃者が制御する変更内容をGitHubから同期していましたが、悪意あるPHPコード自体は含まれていませんでした。ライブラリには静的な参照データと通常のルックアップ関数のみが含まれており、インストールフックやランタイムでのマルウェア動作は存在しません。

実際の攻撃ロジックは.github/workflows/配下に存在しており、脅威アクターはパッケージごとに55~62個のGitHub Actionsワークフローを追加し、影響を受けた全開発版を合わせると合計583個のワークフローファイルが確認されています。

重要な点として、Packagist経由でこれらのComposerパッケージをインストールしても、悪意あるワークフローが自動的にトリガーされることはありません。

GitHubは依存パッケージのvendorディレクトリ内にネストされたワークフロー定義を無視するため、リポジトリをクローンしても、開発者のワークステーション上でペイロードがローカル実行されることはありません。

実行が発生するのは、.github/workflowsをルートに持つ侵害済みリポジトリにプッシュが行われた場合、または誰かがワークフローを手動でディスパッチした場合のみです。その時点でGitHubは使い捨てのUbuntuランナーを起動し、攻撃者が用意した自動化処理に制御を渡します。

各悪意あるワークフローはubuntu-latest上で動作するよう設定されており、タイムアウトが延長されているほか、任意のブランチへのプッシュや手動トリガーで発火するようになっています。これにより、通常のCIイベントが事実上、攻撃実行の起点に変わってしまいます。

ワークフローが呼び出されると、ランナーのプロセッサアーキテクチャを検出し、攻撃者が制御するサーバー43[.]228[.]157[.]68から、冗長化されたcurlおよびwgetのロジックと緩い実行権限フラグを使って、該当するLinux用ペイロードをHTTP経由でダウンロードします。

Socketの研究者らによると、この攻撃はGitHubがホストするUbuntuランナーを、大規模なインターネットスキャン・攻撃・認証情報窃取のための使い捨て攻撃インフラとして再利用しているとのことです。

一方で、Packagist上のPHPパッケージは、実行経路としてではなく、あくまで上流侵害の兆候として機能していたに過ぎません。

このサーバーはx86、x86_64、ARM、ARM64の各バイナリ用に個別の/api/dl/*パスを公開しており、攻撃者はリポジトリ上のワークフロー自体を変更することなくペイロードを差し替え・更新できるようになっています。

GitHub Actionsをグローバルボットネットに変える手口

回収されたAMD64用ペイロード(SHA-256: 22f7…81f1)は、露出したcPanelおよびWHMのエンドポイントに対してCVE-2026-41940を悪用するよう構成されたインターネット規模のスキャナーを実行し、さらに侵害済みシステム上のGitデータ、環境変数、設定ファイル、シークレット情報を列挙します。

監視対象となる出力ファイルには、AWS認証情報、GitHubおよびGitLabトークン、OpenAIおよびGoogleのAPI認証情報、Stripeキー、SendGridおよびMailgunの認証情報、データベース情報、SSH関連データ、Gitリモート情報、そしてリモートコード実行の結果が含まれます。

Programming

このようにGitHub Actionsを悪用することで、攻撃者はGitHubのCI/CDコンピューティングリソースを事実上乗っ取り、分散型のスキャン・攻撃部隊として利用しているのです。

これらのランナーは短命なボットとして動作し、ウェブ・ホスティングの制御プレーンサービスに一般的に関連するポートを探査し、脆弱なcPanel/WHMインスタンスに対する認証バイパスを試みます。

クラウドキー、決済処理業者のトークン、メールサービスのAPIキー、データベースのログイン情報、SSH関連データ、ソースコード管理トークンといった価値の高い認証情報を組織的に収集します。これらはさらなるリポジトリ侵害や、より広範なソフトウェアサプライチェーンへの被害拡大に再利用される恐れがあります。

これらのワークフローは、状況を継続的に報告し、窃取したデータをチャンク単位でストリーム送信する、堅牢な指令・制御(C2)およびデータ流出用のチャンネルを実装しています。

ハートビートループは30秒ごとに/api/github-heartbeatへ実行状況の更新を送信し、リポジトリを識別すると同時に最新のスキャナーログの1行を埋め込みます。これにより攻撃者は、数千規模の同時稼働ランナーをほぼリアルタイムで監視できます。

並行して、ワークフローは攻撃結果や認証情報を集約する出力ファイルをtailし、/api/github-resultsに対して繰り返しPOSTリクエストを発行します。

1回のリクエストで最大数千行の新規データを送信しつつ、オフセットを追跡することで重複送信を回避し、スキャナーが失敗したり途中で終了したりした場合でも最終的なデータ収集が確実に行われるようにしています。

回収した複数のワークフローから照会された、このキャンペーン特有のDNSHookコールバックホスト名を調査することで、DNSルックアップを介したコマンド実行を確認でき、GitHubのコードベースへの精度の高い足がかりが得られました。

このDNSHook識別子でGitHubのコード検索を行ったところ、無関係な複数のリポジトリにまたがる約6,100件の一致するワークフローファイルが見つかりました。また、C2アドレス、スキャナーの引数、認証情報のファイル名、ハートビートエンドポイント、データ流出ロジックを手がかりにしたより広範な検索では、およそ15,000~16,000件の一致するファイルが見つかっています。

Programming

これらの数字は、確認された被害者アカウント数ではなく、一致したファイル数を表している点に注意が必要です。1つのリポジトリが多数の複製ワークフローをホストしている場合もあれば、一部のインフラは侵害されたプロジェクトではなく攻撃者が制御するステージング環境である場合もあるためです。

それでもなお、無関係な複数のリポジトリにまたがって特徴的なコードが繰り返し確認されたことは、1人のPHPメンテナーの範囲をはるかに超えた広範なキャンペーンの存在を裏付けており、GitHub Actionsが分散攻撃インフラとして武器化されていることを示しています。

AI主導の攻撃がActionsの設定不備を突く動きも見られており、CI/CDパイプライン自体が、もはや単なる開発者向けツールではなく、価値の高い攻撃対象となっている実態を浮き彫りにしています。

この攻撃による下流への影響は、主にインターネットに公開されたウェブホスティング環境に及びます。cPanelおよびWHMに対するCVE-2026-41940の悪用に成功すると、複数の顧客アカウント、ホスティングされているウェブサイト、バックエンドのデータベース、メールボックス、アプリケーションの設定情報が露出する恐れがあります。

リポジトリの所有者にとっては、この悪用は意図せぬ形でのスキャン・攻撃活動への加担、リソース不正使用によるアカウント制裁の可能性、そして活動中の攻撃ワークフローをホストしていることに伴う評判の毀損につながります。

今回のインシデントは、tj-actions/changed-filesなど人気のサードパーティActionの侵害や、「HackerBot-Claw」のようなキャンペーンをはじめとする、近年のサプライチェーンおよびCI/CD攻撃で見られてきたGitHub Actions悪用の広範なパターンと一致するものです。

dinushchathuryaのGitHubアカウントが停止されたことで、攻撃経路の1つは遮断されましたが、一致するワークフローや生き残っているフォーク・ミラー、そして稼働中のC2インフラの存在から見て、このGitHub Actionsボットネットキャンペーンは今なお進行中であり、世界規模で分散しているものとして扱うべきです。

侵害指標(IOC)

カテゴリ 指標 説明
C2インフラ 43[.]228[.]157[.]68 指令・制御(C2)用IPアドレス
C2エンドポイント 43[.]228[.]157[.]68:80 HTTP経由のC2(ポート80)
ペイロード配信URL hxxp://43[.]228[.]157[.]68:80/api/dl/386 x86用ペイロード
ペイロード配信URL hxxp://43[.]228[.]157[.]68:80/api/dl/amd64 x64用ペイロード
ペイロード配信URL hxxp://43[.]228[.]157[.]68:80/api/dl/arm ARM用ペイロード
ペイロード配信URL hxxp://43[.]228[.]157[.]68:80/api/dl/arm64 ARM64用ペイロード

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

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

MachineLearning & Artificial Intelligence

翻訳元: https://gbhackers.com/github-actions-into-a-global-botnet/

ソース: gbhackers.com