SOC Prime Bias: 重大

12 Jun 2026 18:43 UTC

大規模なPyPIサプライチェーン攻撃がPythonスタートアップフックを介してクラウドクレデンシャルを収集

Author Photo
SOC Prime Team linkedin icon フォローする
大規模なPyPIサプライチェーン攻撃がPythonスタートアップフックを介してクラウドクレデンシャルを収集
shield icon

Detection stack

  • AIDR
  • Alert
  • ETL
  • Query

概要

Hadesキャンペーンとして知られる協調されたサプライチェーン作戦が、クラウド資格情報を盗むために26のPyPIパッケージを危険にさらしました。この攻撃はPython .pth ファイルを悪用してインタープリタ起動時に悪意のあるコードをトリガーし、Bun JavaScriptランタイムを使用してペイロードを実行します。それはAWS、GCP、Azure、Kubernetes、およびGitHubに関連する秘匿情報を複数のオペレーティングシステムで収集することを目的としています。

調査

Orca Securityは、バイオインフォマティクスおよび開発者ツーリングエコシステムに広がる37の悪意のあるホイールファイルを特定しました。彼らの分析は、マルウェアがBunをダウンロードして難読化されたJavaScriptペイロードを実行するクロスランタイム技術を明らかにしました。このキャンペーンはまた、Anthropic AIサービスへのおとりトラフィックを生成し、LLMベースのセキュリティレビューの効果を低下させるためのプロンプトインジェクション技術を使用します。

緩和策

組織は直ちに影響を受けたパッケージを削除するか、安全なバージョンに固定し、潜在的に露出した資格情報をすべて回転させるべきです。これにはクラウドアクセストークン、GitHub個人アクセストークン、SSHキー、およびDockerレジストリ資格情報が含まれます。セキュリティチームは、Linux、macOS、およびWindowsホスト上の既知の持続性アーティファクトを探すべきです。

対応

妥協が疑われる場合、被害システムを隔離して資格情報を回転させる前に、の gh-token-monitor デーモンによる恐喝のリスクを減らすために、資格情報を回転させるべきです。毒されたパッケージを実行した開発者のワークステーションやCI/CDランナーを再構築してください。攻撃者の命名パターンに合致する未承認のコミットや新しく作成されたリポジトリをGitHubリポジトリ内で確認してください。

"graph TB %% クラス定義セクション classDef technique fill:#99ccff %% MITRE ATT&CK技術 用の青 classDef tool fill:#cccccc %% ツールとソフトウェア 用の灰色 classDef action fill:#ff99cc %% 特定のアクションや行動 用のピンク classDef persistence fill:#ccffcc %% 持続性メカニズム 用の緑 %% ノード定義 %% 初期アクセスと実行フェーズ tech_supply_chain["<b>技術</b> – <b>T1195.001 サプライチェーンの妥協: ソフトウェア依存関係と開発ツールの妥協</b><br/>PyPI経由で配布された悪意のあるホイールファイル。"] class tech_supply_chain technique tech_user_exec["<b>技術</b> – <b>T1204.005 ユーザー実行: 悪意のあるライブラリ</b><br/>Pythonインタープリタの初期化中に *-setup.pth ファイルを通じてトリガーされる。"] class tech_user_exec technique tech_poison_pipeline["<b>技術</b> – <b>T1677 毒されたパイプラインの実行</b><br/>開発者およびCI環境で自動的にコードが実行される。"] class tech_poison_pipeline technique %% ペイロードと実行フェーズ tool_bun["<b>ツール</b> – <b>名前</b>: Bun JavaScript ランタイム<br/>難読化されたペイロードを実行するためにダウンロードされます。"] class tool_bun tool tech_ipc["<b>技術</b> – <b>T1559.003 プロセス間通信: XPCサービス</b><br/>難読化された_index.jsペイロードを実行するために使用されます。"] class tech_ipc technique payload_js["<b>ファイル</b> – <b>名前</b>: _index.js<br/>難読化されたJavaScriptペイロード。"] class payload_js tool %% 持続性フェーズ tech_persistence["<b>技術</b> – <b>持続性</b><br/>妥協されたシステムへのアクセスを維持。"] class tech_persistence technique tech_launch_daemon["<b>技術</b> – <b>T1543.004 システムプロセスの作成または変更: ランチデーモン</b><br/>Linuxではsystemdサービスを使用し、macOSではLaunchAgentsを使用。"] class tech_launch_daemon technique svc_monitor["<b>プロセス/サービス</b> – <b>名前</b>: gh-token-monitor.service<br/>持続性メカニズムの一例。"] class svc_monitor persistence %% 認証情報アクセスと情報漏洩フェーズ tech_cred_access["<b>技術</b> – <b>T1212 認証情報アクセスの悪用</b><br/>プロセスメモリをスクレイピングしてAWS、GCP、Azure、およびGitHubトークンを収集。"] class tech_cred_access technique tech_archive["<b>技術</b> – <b>T1560 集めたデータをアーカイブする</b><br/>盗まれた秘密をgzipで圧縮。"] class tech_archive technique tech_exfil["<b>技術</b> – <b>T1567.001 Webサービスによる情報漏洩: コードリポジトリへの情報漏洩</b><br/>暗号化されたデータを攻撃者が管理するGitHubリポジトリに送信。"] class tech_exfil technique %% コネクション %% サプライチェーンがユーザー実行をリード tech_supply_chain –>|リード先| tech_user_exec %% ユーザー実行が毒されたパイプラインをリード tech_user_exec –>|トリガー| tech_poison_pipeline %% 毒されたパイプラインがペイロード実行をトリガー tech_poison_pipeline –>|実行| tool_bun %% ツールがJSペイロードを実行にIPCを使用 tool_bun –>|使用する| tech_ipc tech_ipc –>|実行する| payload_js %% ペイロードが持続性にリード payload_js –>|確立| tech_persistence tech_persistence –>|実装| tech_launch_daemon tech_launch_daemon –>|作成| svc_monitor %% 持続性が認証情報アクセスを可能にする svc_monitor –>|可能にする| tech_cred_access %% 認証情報アクセスがアーカイブにつながる tech_cred_access –>|結果として| tech_archive %% アーカイブが最終的な情報漏洩にリード tech_archive –>|データを準備する| tech_exfil "

攻撃フロー

シミュレーション実行

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

理由:このセクションでは、検出ルールをトリガーするために設計された敵の技術技法(TTP)の正確な実行を詳細に説明します。コマンドと説明はTTPを直接反映し、検出ロジックが期待する正確なテレメトリを生成することを目指します。抽象的または無関係な例は誤診につながります。

  • 攻撃の叙述とコマンド: 敵は、悪意のあるPyPIパッケージ(Hadesキャンペーン)を介して開発者のワークステーションを成功裏に侵害しました。Pythonスタートアップフックが実行され、ローカルのメモリ/キャッシュからAzure認証トークンを正常にスクレイピングしました。この活動の 検出 をAzure監査ログでシミュレートするために、説明フィールドに特定の文字列「Azure認証トークン」が含まれる監査ログエントリの生成をシミュレートします。これは、自動システムがそのような外部へのデータ漏洩を検出した際に報告するであろうイベントテレメトリを模倣します。

  • 回帰テストスクリプト: 実際のAzureバックエンドに特定の悪意のある説明文字列を生成させるのは容易ではないため、 テレメトリストリームにログを存在させる ことをシミュレートします(BASではワークスペースに合成ログを注入することでよく行われます)。

    # トークン漏洩検出のシミュレーションのための合成ログ注入
    # 対象文字列で 'Description' フィールドが埋められることをシミュレートします。
    $LogEntry = @{
        TimeGenerated = (Get-Date).ToString("yyyy-MM-ddTHH:mm:ssZ")
        OperationName = "TokenExfiltrationDetected"
        Result = "Success"
        Description = "マルウェア活動が検出されました:Azure認証トークンがローカルプロセスから抽出されました。"
        Identity = "malicious-python-hook@attacker.com"
    }
    
    Write-Host "検出ルールを検証するために合成テレメトリを注入中..."
    # 実際のBASでは、これはLog Analytics Data Collector APIを呼び出すでしょう
    # シミュレーション目的で、結果のログエントリを表します:
    $LogEntry | ConvertTo-Json
  • クリーンアップコマンド:

    # API経由で合成ログが注入された場合、特定の相関IDを削除
    # このシミュレーションでは、Azureテナントに持続的な変更は行われませんでした。
    Write-Host "クリーンアップ完了。持続的な敵のアーティファクトは残っていません。"