侵害されたGitHub Actionがワークフロー認証情報を盗む

広く使用されているGitHub Action「actions-cool/issues-helper」が、攻撃者に支配されたドメインに機密のCI/CDシークレットを露出させるサプライチェーン攻撃により、侵害されました。

この攻撃は、Gitタグの微妙で強力な操作に基づいています。可視的なコミット履歴を変更する代わりに、攻撃者はすべてのリリースタグを、リポジトリの正当なブランチに属さない「偽造コミット」(1c9e803として識別される)に移動させました。

ほとんどのGitHub ワークフローはアクションをv3などのタグで参照するため、次の実行時にこれらのワークフローは自動的に悪意のあるコードをプルしました。特定の信頼できるコミットSHAにピン留めされたワークフローのみが影響を受けませんでした。

さらなる調査により、2番目のリポジトリ「actions-cool/maintain-one-comment」も同じ手法を使用して侵害されたことが明らかになりました。

両方のリポジトリはタグを悪意のあるコミットに解決し、同じペイロードを実行するようになっており、組織的な攻撃キャンペーンを示しています。両方の場合における流出エンドポイントは、盗まれた認証情報の受け取り役として機能するドメイン「t.m-kosche.com」です。

Stepsecurityのセキュリティ研究者たちは、リポジトリ内のすべての既存タグが悪意を持って不正なコミットを指すように再割り当てされたことを確認しており、アクションのすべてのバージョン付き参照を認証情報盗難の配信メカニズムに効果的に変えています。

GitHub Actionsランナー内で実行されると、悪意のあるペイロードはメモリから直接シークレットを収集するために設計された一連のステップを実行します。

bunJavaScriptランタイムをダウンロードすることから始まり、その後アクションのコードを実行するために使用されます。ペイロードは、python3を含むサブプロセスを生成し、sudoを使用して権限を昇格させて制限されたメモリ領域にアクセスします。

最も重大なステージは/proc/<pid>/memから読み取ることであり、特にRunner.Workerプロセスのメモリ空間をターゲットにしています。

GitHub Actionワークフロー盗難

このプロセスは、ワークフロー実行中に復号化されたシークレットを処理する責任があります。このメモリをスクレイピングすることで、攻撃者はAPIトークン、認証情報、環境シークレットなどの機密データをプレーンテキスト形式で抽出できます。

Image

データはtrやgrepなどのコマンドラインツールを使用してフィルタリングされ、「”isSecret”: true」とマークされた値を分離します。

シークレットを収集した後、ペイロードはt.m-kosche.comへのアウトバウンドHTTPSリクエストを開始し、盗まれたデータを送信します。

このネットワーク活動は、StepSecurityのHarden-Runnerプラットフォームを使用した制御されたテスト実行を通じて観察され、確認されており、疑わしいプロセスと異常なネットワーク接続がリアルタイムでフラグが立てられました。

このインシデントは、GitHub Actionsが通常どのように使用されるかの重大な弱点を浮き彫りにしています。タグベースの参照は便利ですが、リポジトリの整合性が損なわれた場合、静かにリダイレクトされる可能性があります。

対照的に、アクションを不変のコミットSHAにピン留めすることは、検出なしでは変更できないため、より強いセキュリティ保証を提供します。

StepSecurityはインシデントに対応して複数の防御層を実装しました。その侵害されたアクションポリシーは、実行開始前に影響を受けたアクションを参照するワークフローをブロックし、悪意のあるコードが実行されるのを防ぎます。

さらに、Harden-Runnerグローバルブロックリストが更新され、攻撃者のドメインへのすべてのアウトバウンド接続が拒否され、ペイロードが実行される場合でもデータ流出を効果的に停止します。

別の重要な緩和策は、ワークフローがソースリポジトリ内の有効なブランチまたはタグに対応していないコミットを参照する場合を識別する偽造コミット検出の導入です。

Image

この検出メカニズムは、この攻撃で使用された技術を直接ターゲットにし、同様の侵害に対する早期警告を提供します。

このインシデントは、CI/CDパイプラインは現代のソフトウェアサプライチェーンにおいて高価値なターゲットであることの厳しい思い出しとなります。

組織は、ワークフローを監査し、タグベースのアクション参照をピン留めされたSHAに置き換え、予期しないプロセス実行やアウトバウンドネットワークトラフィックを含む異常なランナーの動作を監視することを強くお勧めします。

侵害の指標(IOCs)

影響を受けるGitHub Actions

  • actions-cool/issues-helper すべてのタグ(合計53個)が偽造コミットに移動
  • actions-cool/maintain-one-comment すべてのタグ(合計15個)が偽造コミットに移動

流出ドメイン

  • t.m-kosche.com Runner.Worker メモリから収集されたエンコードされた認証情報を受け取ります。Harden-Runnerグローバルブロックリストに追加されました。

注: IPアドレスとドメインは意図的に無効化されています(例:[.])。誤った解決またはハイパーリンク化を防ぐためです。MISP、VirusTotal、またはSIEMなどの制御された脅威インテリジェンスプラットフォーム内でのみ再有効化してください。

翻訳元: https://gbhackers.com/compromised-github-action/

ソース: gbhackers.com