単一のタグへの目立たない編集が、ありふれたセキュリティ監査ツールを秘密のバックドアに変えてしまいました。悪意のある行為者がXygeniの公式GitHub Actionに侵入し、ビルドサーバー上で任意のコマンドを実行できるフル機能のリモートコマンドシェルを埋め込みました。StepSecurityの専門家たちは、2026年3月3日に発生したこのインシデントを詳細に記録しています。
身元不明の攻撃者がXygeniプロジェクトのメンテナー認証情報を不正に取得し、その後xygeni/xygeni-actionリポジトリに悪質なコードを注入しました。このリポジトリは137以上の異なるリポジトリで使用されている公式GitHub Actionです。最大の危険性は、攻撃者がユーザーの動作ファイルを変更しなかったという事実にありました。代わりに、彼らはv5バージョンタグをこっそり悪質なコミットを指すようにリダイレクトしました。結果として、ワークフロー内でxygeni/xygeni-action@v5を指定していたプロジェクトは、無意識のうちに埋め込まれたバックドアを実行してしまいました。
悪質なコードは「スキャナーバージョンテレメトリー収集」という名称の通常のステップに巧妙に偽装されていました。スクリプトはaction.yml設定ファイルにこっそり追加され、スキャナーのインストールとメインの診断スイープの間にシームレスに埋め込まれました。一見すると、この操作は非常に無害に見えました。ツールのバージョン情報を出力するだけのように見えたのです。実際には、このコードは隠されたリモートコマンドシェルを起動していました。
起動時に、このActionはIPアドレス91.214.78.178に位置するコマンド&コントロールサーバーに登録され、ホスト名、ユーザー名、オペレーティングシステムのバージョンを送信してから、新しいコマンドのための無限のポーリングサイクルを開始しました。取得されたコマンドはeval関数を使用して実行され、その後の出力は暗号化して圧縮され、敵対サーバーに流出されました。このスクリプトはバックグラウンドで完全に動作し、主要なセキュリティ監査が中断されることなく進行することを保証し、疑いを一切起こさせませんでした。
わずか3分間の動作ウィンドウの中で、悪意のある行為者はビルドサーバー全体で任意のコマンドを実行する力を持っていました。潜在的な被害の範囲は、環境変数の盗難(特にGitHubトークンと暗号化されたアクセスキーを含む)、ソースコードの不正閲覧、ビルドアーティファクトの悪質な置き換えを含んでいました。
この侵入は、プルリクエスト経由で実行された単純なコードインジェクションよりもはるかに策略的でした。実際、同じ悪質なペイロードを含む3つの異なるプルリクエストがリポジトリ内に出現しましたが、単一の承認もされませんでした。代わりに、攻撃者は単にv5タグを悪質なコミットに付け替えました。このようなタグはいつでも無限に変更可能であり、圧倒的多数のユーザーが自分の設定内でこの正確なメジャーバージョン番号を指定しています。
この悪質なアーキテクチャの欠陥のため、数千のプロジェクトが自分のファイルに単一の変更を加えることなく、悪質なコードの実行を無意識に開始する可能性がありました。オペレーティングシステムの設定は、uses: xygeni/xygeni-action@v5という文字列を無邪気に表示し続けていましたが、その背後にあるActionのコードは深刻に改変されていたのです。
リポジトリのフォレンジック記録は、これらの悪質な変更が組織内部から発生したことを明らかにしています。プルリクエストは3つの異なるソースから生成されました:メンテナーアカウントnico-car、[email protected]という署名を持つ従業員認証情報、およびGitHubサービスアプリケーションxygeni-onboarding-app-dev[bot]です。これらのすべての操作は、痛ましいほど短い20分間のウィンドウ内で発生しました。このような迅速で組織された一連のイベントは、内部の不正な行為者の策略ではなく、認証情報またはアクセスキーの致命的な危険にさらされていることを強く示唆しています。
プロジェクトのリーダーシップは悪質なプルリクエストをすぐに閉鎖し、汚染されたワークフローをリポジトリから削除しました。残念ながら、v5タグは依然として感染したコミットに結合されたままでした。3月9日の時点で、ユーザーはバージョンv6.4.0に緊急に移行するか、または変更可能なタグの代わりに特定のコミットハッシュに設定を永続的に固定することを強く勧められています。
Xygeniへの攻撃は、GitHub Actions供給チェーン内に存在する深刻な脆弱性をもう一度露呈させました。バージョンタグは本質的に変更可能です。したがって、単一のタグの付け替えは、そのActionを使用しているすべてのユーザーのための基礎となるコードを秘密裏に置き換える破滅的な能力を持っています。2025年にtj-actions/changed-filesAction への攻撃中に非常に類似した戦術が以前に使用されました。その事件では、悪意のある行為者が数千のリポジトリの暗号化シークレットへのアクセスを不正に取得しました。このような危機的状況における最高の防御姿勢は、GitHub Actionsを一時的なタグではなく、変更不可能なコミット識別子に固定することを要求しています。コミットは遡及的に変更することができないため、タグ操作によるコードの悪質な置き換えは絶対的な不可能性となるのです。