LiteLLMサプライチェーン攻撃 ―バックドア化されたTrivy GitHub Actionを介したTeamPCP「SANDCLOCK」CI/CD認証情報窃取キャンペーン

Resecurityは、LiteLLMを巻き込んだサプライチェーンセキュリティ侵害の後、152.5GiBに及ぶデータを入手しました。このデータには、数千のドメインに関連する企業の窃取済み認証情報や設定データが含まれています。

2026年3月に発生したLiteLLMサプライチェーン侵害(TeamPCP/「SANDCLOCK」ステーラー)における攻撃者の被害者アーカイブを分析した結果、898のオーナー、2,038のリポジトリにまたがるGitHub Actions/CI-CDランナーから収集された41万5,427件のホスト上シークレット捕捉ファイルが確認されました。本稿では、Trivy→LiteLLMという攻撃連鎖、捕捉されたシークレットの構成、実際にマスキング処理を施した証拠、そして被害組織名を明らかにします。

レポートID
RES-CTI-2026-0814

発行日
2026年8月14日
機密区分
TLP:AMBER+STRICT
データセット
supplychain_victims.tar(152.5GiB)
捕捉ファイル
415,427件・898オーナー・2,038リポジトリ
捕捉日
2026年3月19日~24日
キャンペーン
LiteLLM/TeamPCP「SANDCLOCK」
侵入経路
バックドア化されたaquasecurity/trivy-action
作成者
Resecurity HUNTERユニット

1   エグゼクティブサマリー

Resecurityは、入手したアーカイブsupplychain_victims.tar(約152.5GiB)を分析しました。このアーカイブには41万5,427件のシークレット捕捉ファイルが含まれています。すべてのファイルは<YYYYMMDD>_<HHMMSS>_<µs>_127.0.0.1.txtという命名規則に従っており、”<name>”:{“value”:”<secret>”,”isSecret”:true}という形式のJSON風シークレットストアを保持しています。一律に127.0.0.1というタグが付いていることから、これらのシークレットは被害ホスト上のプロセス内でダンプされたものであることがわかります。つまり、ネットワーク経由で傍受されたのではなく、稼働中のCI-CDパイプラインのメモリから直接読み取られた環境変数・シークレット情報だということです。

このアーカイブは、TeamPCP「SANDCLOCK」認証情報窃取ツールを用いて実行したLiteLLMサプライチェーン攻撃に帰属するものです。既に公表されているインシデント報告(本データセットによっても裏付けられています)によれば、TeamPCPは2026年3月19日Trivy GitHub Action(aquasecurity/trivy-action。被害リポジトリの一覧にも登場します)をバックドア化し、LiteLLMのCIが汚染されたTrivyを自動的にインストールしたことで、LiteLLMのPyPI公開用トークンが窃取され、2026年3月24日に悪意あるlitellm==1.82.7/1.82.8が公開されるに至りました。侵害された各ランナー上では、このステーラーがroot権限へエスカレーションし、SSH鍵、クラウド認証情報、Kubernetesトークン、.envファイル、さらには/proc/<pid>/memからのメモリ上シークレットまでを一掃していました。これはまさに、これらのファイルに捕捉されていた内容と一致します。

付随する被害者一覧マニフェストには、2,038のリポジトリにまたがる898件の侵害されたGitHubオーナー(組織・アカウント)が列挙されています。被害を受けたオーナーには世界的な大手企業も含まれており、その中にはMicrosoftAzureIBMNVIDIAPayPal(Zettle)DeloitteBoschS&P GlobalElevance Health84.51°(Kroger)Adeo(Leroy Merlin)KärcherDrägerID.me1inchが挙げられます(詳細は第7章参照)。

今回入手できたのはアーカイブの一部にとどまり、そこから回収可能だった1,073ファイルのサンプルから、Resecurityは2,146件のシークレット捕捉レコードを分類しました。最も多く見られたのはGitHub ActionsのGITHUB_TOKENで、サンプルファイルの約98%に存在していました。それ以外にも、GitHub Appの秘密鍵、AWS/GCP/Firebaseの認証情報、コンテナレジストリ(ECR/JFrog)トークン、SSH鍵、コード署名用パスワード、CI用Webhookなどが確認されています。本レポートでは、有効なシークレット値そのものは一切掲載していません。すべての事例は、実際に捕捉されたデータをもとに値をマスキング処理したもの(先頭・末尾のみ保持し、エントロピー部分を除去)です。

評価としては、これは深刻度が高~重大なソフトウェアサプライチェーン侵害です。窃取されたCI-CDトークンは、ソースリポジトリやパッケージレジストリへのプッシュ・公開権限を付与するものであり、下流の成果物を汚染する形で二次的なサプライチェーン拡散を引き起こすほか、クラウドアカウントの乗っ取りにもつながります。実際、このキャンペーン自体もTrivy→LiteLLMという経路でまさにこの手口によって拡散しました。本稿で名前が挙がったすべての組織は、関連する認証情報をすべて侵害済みとみなし、直ちにローテーションするべきです。

2   主要な調査結果

898
侵害されたオーナー数
2,038
リポジトリ数
415,427
捕捉ファイル数・152.5GiB
約98%
有効なGITHUB_TOKENを含むファイルの割合

概要

  • ホスト上でのシークレット収集。 41万5,427件の捕捉ファイルはすべて127.0.0.1というタグが付いており、稼働中のCI-CD/プロセスメモリから読み取られたもので、ネットワーク経由で傍受されたものではありません。
  • CI-CDトークンが大半を占める。 GitHub Actions組み込みのGITHUB_TOKENはサンプルファイルの約98%に出現しており、それぞれが実行中のリポジトリに対するスコープ付き書き込み権限を持っています。
  • 幅広い認証情報の混在。 GitHub Appの秘密鍵、AWS/GCP/Firebaseの認証情報、ECR/JFrogレジストリトークン、SSH鍵、署名用パスワードなど、クラウドとレジストリ全体が侵害される恐れがあります。
  • 898オーナー・2,038リポジトリを確認。 被害者一覧マニフェストには、Microsoft、Azure、IBM、NVIDIA、PayPal、Deloitte、Bosch、S&P Global、Elevance Health、84.51°、Adeo、Kärcher、Dräger、ID.me、1inchといった大手企業に加え、米国GovCloudのAWSテナントも名を連ねています。
  • 二次的なサプライチェーンリスク。 窃取された公開・プッシュ用トークンにより、下流のパッケージや成果物を汚染できてしまいます。これは、こうしたキャンペーンが自己増殖する際の典型的な手口です。
  • より大規模な流出の一部。 今回の152.5GiBアーカイブは、TeamPCPがLiteLLM/Trivyキャンペーン(2026年3月)で集めた被害者情報を集約したものです。

3   インシデントの概要 ― Trivy→LiteLLM攻撃連鎖

これはTeamPCPに帰属する連鎖型のソフトウェアサプライチェーン攻撃であり、「SANDCLOCK」認証情報窃取ツールを配布するものです。信頼され広く利用されているセキュリティツールであるTrivy GitHub Actionがバックドア化されました。数千の組織のCIパイプラインがTrivyを自動的にインストールしていたため、汚染されたActionはそれらのGitHub Actionsランナー内で実行され、手の届く範囲のすべてのシークレットを一掃しました。本アーカイブに一律含まれる127.0.0.1.txtの捕捉ファイルは、このステーラーが実行ごとに残した戦利品ファイルです。

# 段階 詳細
1 ツールのバックドア化 TeamPCPは2026年3月19日にTrivy GitHub Action(aquasecurity/trivy-action)を侵害
2 CI経由での拡散 LiteLLMのCI(および898オーナーのパイプライン)が汚染されたTrivy Actionを自動インストール
3 公開用トークンの窃取 このActionがLiteLLMのPyPI公開用トークンを窃取
4 パッケージの汚染 2026年3月24日に悪意あるlitellm==1.82.7/1.82.8がPyPIに公開
5 各ランナーでの情報収集 SANDCLOCKがroot権限へエスカレーションし、printenv、.env、SSH鍵、クラウド認証情報、K8sトークン、/proc/<pid>/mem上のメモリ内シークレットをダンプ
6 外部への持ち出し 実行ごとのシークレットが<ts>_127.0.0.1.txtに書き込まれ、約152.5GiBの被害者アーカイブへと集約

この攻撃連鎖は、本データセットによっても裏付けられています。バックドア化されたaquasecurity/trivy-actionは被害リポジトリのマニフェストに直接登場しており、捕捉データはGitHub Actionsに紐づくもの(ファイルの約98%にsystem.github.tokenが含まれる)で、ランナーの識別子にはactions-runner-controller(arc-prod-…-runner)やGitHub提供ランナーへの参照が見られます。これは報告されているセルフホスト型・ホスト型双方のCI環境と一致しています。

GITHUB_TOKENが重要な理由。 GitHub Actionsの各ジョブには、自動的に生成され、そのリポジトリへの書き込み権限を持つGITHUB_TOKENが付与されます。これが大規模(41万件超の実行)に収集された場合、短命なトークンであるとはいえ、コードのプッシュ、パッケージの公開、リリースの改ざん、リポジトリシークレットの読み取りといった行為を行うための広い時間的猶予が生まれます。これはまさに、サプライチェーン侵害が下流の利用者へと連鎖していく典型的な仕組みです。

4   入手したデータセット ― 範囲と構造

このアーカイブを展開すると、タイムスタンプ付きの.txt捕捉ファイル415,427件からなる単一のextracted/ディレクトリになります(マニフェスト:tree.txt)。ファイルサイズは平均して小さめ(中央値418B)ですが、19万7,410件は50KBを超え、最大では約30MBに達するものもあります。このサイズの分布は、最小限のビーコンや空の実行結果と、シークレットを完全に含む捕捉データとの違いを反映しています。捕捉件数は3月19日~20日に集中し、22日には減少した後、23日~24日に再び増加しています。

図1 ― 日付別の捕捉件数

日付別の捕捉件数 ― 415,427件

第1波(3月19~20日)小康状態(3月22日)第2波(3月23~24日)

捕捉ファイル数

125k100k75k50k25k0k

マニフェスト全体(415,427件)における日別の捕捉ファイル数。3月19~20日(ピーク)と3月23~24日という2つの収集の波が見られます。

図2 ― 捕捉ファイルのサイズ分布

捕捉ファイルのサイズ分布

ファイルサイズの区分別分布(マニフェスト全体)。50KB超および10~50KB(濃い色)の群がシークレットを含む捕捉データであり、500B未満のファイルの大半は、ほぼ空に近い最小限の実行記録です。

項目 内容
アーカイブ supplychain_victims.tar(152.5GiB/163.78GB)
構造 extracted/ → 415,427 × *.txt
命名規則 <date>_<time>_<µs>_127.0.0.1.txt
レコード形式 “<name>”:{“value”:”<secret>”,”isSecret”:true}
捕捉期間 2026年3月19日~2026年3月24日
日別件数 19日:129,633・20日:111,209・22日:7,975・23日:82,228・24日:85,480
分析対象サンプル 1,073ファイル(一部回収分)→2,146件のシークレットレコード

5   捕捉されたシークレット ― その構成

1,073ファイルのサンプル全体から、Resecurityはキー名ベースで2,146件のシークレットレコードを分類しました(値については構造的なマスキング以上の検証は行っていません)。その構成は圧倒的にGitHub CI-CDの認証関連情報が中心で、価値の高いクラウド認証情報やレジストリ認証情報がロングテールとして続いています。

図3 ― 捕捉されたシークレットの種類

捕捉されたシークレットの種類

GitHub Actionsトークン(GITHUB_TOKEN)

2,100

その他のGit/PAT/レジストリトークン

10

CI用Webhook/レジストリURI

3

シークレットレコード数(対数スケール) ― サンプル1,073ファイル中2,146件

シークレット種類の構成比(サンプル、対数スケール)。GitHub Actionsトークンが大半を占める一方、GitHub Appの鍵、AWS/GCP/Firebase、レジストリ、SSH/署名関連情報といったロングテール部分が、1件あたりの影響度としては最も大きくなっています。

シークレット種類(キー名) サンプル件数 影響
system.github.token / github_token 約2,100 実行中はリポジトリに対するスコープ付き書き込み(プッシュ/公開/リリース)が可能
GH_ACTIONS_APP_PRIVATE_KEY / *_APP_ID 24 GitHub App ID ― 組織・リポジトリへの持続的なアクセス
GH_PAT / GIT_TOKEN / QS_/FKT_トークン 10 個人用/レジストリ用トークン ― 持続的なアクセス
AWS_* / WORKLOADS_DEV_AWS_* / role 6 AWSアカウントへのアクセス(キー、引き受けたロール)
GCP_SERVICE_ACCOUNT / WIP / Firebase 3 GCP/Firebaseプロジェクトへのアクセス
ECR_REPOSITORY_URI / *_WEBHOOK_URL 3 レジストリへのプッシュ先;CI用Webhookの悪用
SSH_KEY / SIGNING_PASSWORD 2 ホストへのアクセス;成果物のコード署名の悪用

6   証拠 ― マスキング済み捕捉サンプル

以下は、シークレットの値をマスキングした状態で再現した実際の捕捉レコードです。実際の種類を示す接頭辞と末尾の文字は保持しつつ(先頭******末尾)、エントロピー部分はすべて除去しているため、事例として真正性を保ちながらも、悪用可能な認証情報は一切開示していません。キー名および非シークレット部分の構造は変更していません。値は実際のサンプルファイルから抽出したものです。

 EXHIBIT A — REAL CAPTURE RECORDS (VALUES MASKED)  ·  *_127.0.0.1.txt
  "github_token":            {"value":"ghs_**********9wDB", "isSecret":true},   // 40-char GH Actions token
  "system.github.token":     {"value":"ghs_**********9wDB", "isSecret":true},
  "GH_ACTIONS_APP_ID":       {"value":"2*****0",           "isSecret":true},
  "GH_ACTIONS_APP_PRIVATE_KEY":{"value":"----**********--","isSecret":true},  // 1,702-char RSA key
  "GH_PAT":                  {"value":"gith**********BfpL", "isSecret":true},   // 93-char PAT
  "AWS_ROLE_TO_ASSUME":      {"value":"arn:aws:iam::26******39:role/GithubAutomationPrisma…","isSecret":true},
  "WORKLOADS_DEV_AWS_ACCESS_KEY_ID":{"value":"AKIA**********5ED","isSecret":true},
  "ECR_REPOSITORY_URI":      {"value":"07******86.dkr.ecr.us-gov-west-1.amazonaws.com/****","isSecret":true},
  "GCP_SERVICE_ACCOUNT":     {"value":"gcp-****@felix-shared-services.iam.gserviceaccount.com","isSecret":true},
  "JFROG_AUTH_TOKEN":        {"value":"eyJ2**********hxiw", "isSecret":true},   // 759-char JWT
  "SECURITY_CI_ERRORS_WEBHOOK_URL":{"value":"https://hooks.slack.com/****","isSecret":true},
  "SIGNING_PASSWORD":        {"value":"xJRp**********EHL6", "isSecret":true}

取り扱い上の注意。 マスキングでは悪用不可能な接頭辞・末尾のみを残していますが、実際のアーカイブには完全な形の有効なトークンや秘密鍵が保存されています。現在も有効な認証情報として取り扱い、暗号化して保管し、アクセスログを記録し、決して再共有しないでください。参照されているシークレットはすべて侵害済みとみなし、ローテーションを実施してください。

7   影響を受けた組織とリポジトリ

被害者一覧マニフェスト(owners.txt、repos.txt)には、2,038のリポジトリにまたがる898件の異なる侵害済みGitHubオーナーが列挙されています。その分布はロングテール型で、631のオーナーは影響を受けたリポジトリが1件のみである一方、最も影響が大きいオーナー(Cencosud-Cencommerce)は64件に及びます。特に注目すべきは、このオーナー一覧に世界的な大手企業や規制対象業種の組織が含まれている点です。

図4 ― リポジトリ数で見た侵害オーナー上位

リポジトリ数上位15オーナー(898オーナー・2,038リポジトリ中)

DraegerSoftwareDevelopment

16

侵害されたリポジトリ数

侵害されたリポジトリ数が最も多い15オーナー(898オーナー・2,038リポジトリ中)。ロングテール型の分布で、631オーナーは影響を受けたリポジトリが1件のみである一方、最上位のオーナーは64件に及びます。

7.1  注目すべき被害組織名(オーナー/リポジトリのマニフェストで確認済み)

組織 業種 リポジトリ例(オーナー/リポジトリ名)
Microsoft テクノロジー microsoft/fabric-terraform-quickstart
Microsoft Azure クラウド Azure/karpenter-provider-azure
IBM テクノロジー IBM/mcp-context-forge
NVIDIA テクノロジー NVIDIA/garak
FedEx 物流 FedEx/*
John Deere 製造業 JohnDeere-Tech/*
TomTom テクノロジー/地図 tomtom-internal/trivy-scan
PayPal(Zettle) フィンテック PayPal-Zettle/tf-modules
Deloitte プロフェッショナルサービス Deloitte-ConvergeConsumer/*、Deloitte-UK-Converge/*
Bosch 産業機器/IoT bosch-energy-manager/hc-emma-backend
S&P Global 金融データ spglobal-innersource/*(16リポジトリ)
Elevance Health ヘルスケア ACT-ElevanceHealth-Sydney-Modernization/monorepo
84.51°(Kroger) 小売/データ 8451LLC/stratum-auto-insights-poc
Adeo(Leroy Merlin) 小売 adeo/*(20リポジトリ)
Kärcher 産業機器 karcher-digital/*(36リポジトリ)
Dräger 医療機器 DraegerSoftwareDevelopment/*(16リポジトリ)
ID.me 本人確認サービス IDme/*(23リポジトリ)
Cencosud 小売(中南米) Cencosud-Cencommerce/*(64リポジトリ)
1inch 暗号資産/DeFi 1inch/fusion-solana-resolver

注記。 ここに掲載したオーナー名は、防御的な通知を可能にする目的で、流出データ自体のマニフェストから転載したものです。これらは、当該オーナー配下のリポジトリが今回の情報収集に巻き込まれたことを示すものであり、それ単独で各組織の被害の深刻度を確定するものではありません。名前が挙がった各オーナーは、ビルドログのフォレンジック調査を通じて個別に検証を行う必要があります。Microsoft、ヘルスケア(Elevance)、金融データ(S&P Global)、本人確認(ID.me)、さらには米国GovCloudのテナントが含まれていることは、本キャンペーンの深刻度と通知の緊急性を大きく高める要素です。

7.2  クラウドテナントとシークレットに紐づく識別子(サンプルより)

オーナー名だけでなく、捕捉されたの中には、特定のテナントを特定できるクラウド識別子も含まれていました。

指標(サンプルより) 種類 影響を受けた組織/テナント
GHAPP_VASION_READ_REPOS_APP_* GitHub App(組織スコープ) Vasion
DIAGRID_BOT_APPLICATION_* GitHub App(組織スコープ) Diagrid
…@felix-shared-services.iam.gserviceaccount.com GCPサービスアカウント GCPプロジェクト「felix-shared-services」
projects/455268596916/…/shared-p-wip-github GCPワークロードアイデンティティプール GCPテナント(プロジェクト455268596916)
492684252576 / 756016341984 / 833816692833 .dkr.ecr.us-east-1 AWS ECR(アカウントID) AWSテナント3件(us-east-1)
071032557399.dkr.ecr.sa-east-1 AWS ECR(アカウントID) AWSテナント(南米)
073638633986.dkr.ecr.us-gov-west-1 AWS GovCloud ECR AWS GovCloudテナント(米国政府)
QS_ / FKT_ / LOCO_接頭辞 組織スコープのシークレット名 その他未特定のテナント

7.3  影響を受けたオーナー ― サンプル(898件中45件、リポジトリ数順)

オーナー(リポジトリ数) オーナー(リポジトリ数) オーナー(リポジトリ数)
Cencosud-Cencommerce(64) karcher-digital(36) alianza-dev(29)
BuiltTechnologies(26) cais-group(25) Wynshop(24)
IDme(23) mcp-servers(22) adeo(20)
YAtechnologies(20) emma-platform(19) NSXBet(19)
apkappa-pal(18) spglobal-innersource(16) GumGum-Inc(16)
DraegerSoftwareDevelopment(16) uneycom(15) sc-soluciones(15)
risk-bsy(15) greenqloud(15) PrinterLogic(15)
FedEx(15) mntv-ds(14) Multiplier-Core(14)
liebherr(13) VectraAI-Engineering(13) EAS-Test(13)
tarkenag(12) siloamhospitals(11) guestyorg(11)
energypool(11) CHECK24(11) corp-ais(10)
bengo4com(10) agriness-team(10) timescale(9)
qc(9) leasebase(9) datavisyn(9)
VFGroup-VBIT(9) ThryvLabs(9) IT-GAIA(9)
GitHub-EDP(9) Deloitte-ConvergeConsumer(8) DTS-GDA-BI-Platform(8)

7.4  影響を受けたリポジトリ ― サンプル(2,038件中30件)

リポジトリ(オーナー/リポジトリ名) リポジトリ(オーナー/リポジトリ名)
aquasecurity/trivy-action reviewdog/action-trivy
microsoft/fabric-terraform-quickstart Azure/karpenter-provider-azure
IBM/mcp-context-forge NVIDIA/garak
FedEx/eai-3531981-cdb-customer-service FedEx/eai-3535360-yos-ui
JohnDeere-Tech/change-request-api JohnDeere-Tech/isg-dc-data-import-tool-server
tomtom-internal/trivy-scan PayPal-Zettle/tf-modules
Deloitte-ConvergeConsumer/AgenticGateway Deloitte-ConvergeConsumer/CustomerGrowth
bosch-energy-manager/hc-emma-backend spglobal-innersource/capitaliq-foundation
8451LLC/stratum-auto-insights-poc adeo/DP4P-Product-Event-Fusion
1inch/fusion-solana-resolver 1inch/ts-nestjs-modules-lib
IDme/account-api IDme/anaconda
DraegerSoftwareDevelopment/OSS-app-cockpit adeo/cc–bigquery-scheduled-queries
karcher-digital/kap-ak-b2bec-cluster-config karcher-digital/kap-ak-b2bec-infrastructure
Cencosud-Cencommerce/be-easy-cl-ccom-promotions Cencosud-Cencommerce/Liquibase-Redshift
Azure/dalec-build-defs spglobal-innersource/cess-atlassian-tools-foundation

上記の1行目(aquasecurity/trivy-action、reviewdog/action-trivy)は、この攻撃連鎖の起点となった汚染済みビルドツール関連のリポジトリであり、それ以外は自らのCIが当該バックドア化Actionを実行してしまった被害リポジトリです。全リストは898オーナー・2,038リポジトリに及びます。

集計範囲と手法に関する注記。 オーナー数・リポジトリ数(898/2,038)は、流出データ自体の被害者一覧マニフェストから取得したものであり、本データセットにおいて信頼できる数値です。クラウドテナントの識別子およびシークレット種類の構成比は、回収できた1,073ファイル(全捕捉データの約0.26%)のサンプルから導き出したものです。シークレットおよびテナントごとの完全な対応関係を把握するには、約152.5GiBのアーカイブ全体を解析する必要があります。展開済みの完全なデータセットが提供されれば、Resecurityはその包括的なマッピングを作成することが可能です。

8   影響とリスク評価

リスクの側面 深刻度 根拠
二次的なサプライチェーン拡散 重大(CRITICAL) 窃取されたプッシュ・公開用トークン(GITHUB_TOKEN、Appキー、レジストリトークン)により、下流のパッケージ・成果物の汚染が可能
ソースコード・CI-CDの侵害 重大(CRITICAL) リポジトリおよびパイプラインへの書き込みアクセス;シークレットの持ち出しやワークフローの改ざん
クラウドアカウントの乗っ取り 重大(CRITICAL) AWS(GovCloud含む)、GCP、Firebaseの認証情報により、横展開やデータアクセスが可能
コンテナレジストリの汚染 高(HIGH) ECR/JFrogトークンにより、悪意あるイメージがプッシュされ本番環境で利用される恐れ
コード署名の悪用 高(HIGH) 署名用パスワードにより、信頼された成果物の偽造が可能
持続的なアクセス 高(HIGH) GitHub Appの秘密鍵やPATは、短命なGITHUB_TOKENよりも長く有効なまま残る
政府系テナントへの影響 高(HIGH) 米国GovCloudアカウントが含まれており、規制・国家安全保障上の機微性が高い

9   帰属分析とTTP(MITRE ATT&CK、推定)

データセットの構造および関連キャンペーンに関する公開情報をもとに評価したものであり、被害者側のテレメトリで確認されたものではありません。
戦術 技術(ID) 関連性
初期アクセス T1195.001/.002 ソフトウェア依存関係・ツールの侵害 被害者側CIが自動インストールしたバックドア化Trivy GitHub Action;汚染されたlitellm PyPIパッケージ
権限昇格 T1068 権限昇格を目的とした脆弱性の悪用 侵害されたランナー上でSANDCLOCKがroot権限へエスカレーション
実行 T1059 コマンド・スクリプト実行(CIランナー) 悪意あるコードがCI/CDジョブのコンテキスト内で実行
資格情報アクセス T1552.001/.007 保護されていない認証情報(ファイル、CI/CD環境変数・トークン) プロセス環境変数、マウントされたシークレット、GITHUB_TOKENを読み取り
収集 T1114 / T1530 ローカルでの捕捉 シークレットをローカルの127.0.0.1捕捉ファイルへ書き込み
持ち出し T1567 Webサービス経由での持ち出し 捕捉ファイルを集約し攻撃者のストレージへ持ち出し
影響 T1195 下流の汚染;T1657 金銭的窃取 二次的なサプライチェーン攻撃やクラウド悪用を可能にする

10   侵害指標(IoC)と検知のガイダンス

種類 値/ガイダンス
アーティファクトの命名規則 CIランナー/ビルドホスト上の<YYYYMMDD>_<HHMMSS>_<µs>_127.0.0.1.txt
ホスト上の兆候 ビルド中に環境変数のシークレットを列挙する想定外のローカルファイル
レコードの特徴 ディスクに書き込まれる”<name>”:{“value”:”…”,”isSecret”:true}形式のシークレットストアダンプ
捕捉期間 2026年3月19日~24日(この期間に合わせてビルドログを確認)
調査対象 ― GitHub GITHUB_TOKEN/Appの異常な動作:想定外のプッシュ、パッケージ公開、リリースの編集、シークレットの読み取り
調査対象 ― クラウド CIのIPからの異常なAWS(GovCloud含む)/GCP/Firebase API利用;新規のECRイメージプッシュ
調査対象 ― レジストリ 見慣れない送信元からの想定外のJFrog/ECRへのプッシュや認証

11   推奨対応

▪ 即時対応(0~72時間)

  • 該当するすべての認証情報をローテーションする。 GitHub Appの秘密鍵、PAT、AWS/GCP/Firebaseの認証情報、ECR/JFrogトークン、SSH鍵、署名用パスワードを失効・ローテーションし、セッションを無効化してください。短命なGITHUB_TOKENは自動的に失効しますが、それとともに露出した持続的なシークレットは失効しません。
  • サプライチェーンへの拡散有無を監査する。 2026年3月19日~24日の期間におけるリポジトリへのプッシュ履歴、パッケージ/レジストリへの公開、リリースの編集内容を確認し、下流の成果物の整合性を検証するとともに、依存関係のピン留め・検証を行ってください。
  • 悪意あるコンポーネントを特定する。 CI/CDのビルドログを調べてトロイの木馬化された依存関係やActionを特定し、削除・ブロックしたうえで、信頼できるソースから再ビルドしてください。
  • 影響を受けたテナントおよび当局へ通知する。 GovCloudテナントおよび規制対象データを優先的に扱い、クラウドプロバイダーと連携し、該当する場合は各国のCERTとも協力してください。
  • クラウド側の被害範囲を封じ込める。 OIDC/ワークロードアイデンティティの信頼関係を制限し、IAMロールの条件を厳格化し、該当アカウントに異常検知アラートを設定してください。

▪ 短期対応(2~6週間)

  • 静的なキーではなくOIDCフェデレーションを用いた、短命かつ最小権限のCIシークレットを導入する。GITHUB_TOKENはデフォルトで読み取り専用とし、必要なジョブごとに権限を昇格させる。
  • 依存関係のピン留め、来歴・証明(SLSAビルド等)の実施、Actionの許可リスト化を徹底し、ランナーを隔離する。
  • リポジトリおよびレジストリ全体にシークレットスキャンとプッシュ保護を導入し、ランナー上でのローカルシークレットダンプファイルを検知するDLPを追加する。
  • 組織のトークンやクラウド識別子について、ダークウェブ・流出情報の継続的な監視体制を構築する。

12   Resecurityについて&免責事項

Resecurityは、企業や政府組織向けにダークウェブ監視、デジタルリスク保護、CTI(サイバー脅威インテリジェンス)サービスを提供するサイバーセキュリティ・脅威インテリジェンス企業です。本レポートはResecurityのHUNTER脅威インテリジェンスユニットが作成しました。

本レポートは、防御目的、状況把握、および被害者への通知を目的としてのみ提供されるものです。調査結果は、攻撃者の被害者アーカイブおよびそのマニフェストの分析に基づいており、LiteLLM/TeamPCP(「SANDCLOCK」)サプライチェーン攻撃に関する既存の公開インシデント報告と照合しています。攻撃連鎖に関する記述は、その公開報告の内容を反映したものです。 

Resecurityは、有効な認証情報を一切再現していません。すべての事例は、実際に捕捉されたデータをもとに値をマスキング処理したもの(先頭・末尾のみ保持し、エントロピー部分を除去)です。オーナー数・リポジトリ数(898/2,038)は流出データのマニフェストから取得したものであり、シークレットおよびテナントごとの詳細は、回収できた1,073ファイルのサンプルから導き出したものです。組織の識別情報は、防御的な通知を可能にする目的でのみ掲載しており、名前が挙がった組織はいずれも犯罪的なサプライチェーン侵害の被害者であって、いかなる過失も含意するものではありません。本稿の内容は法的助言に該当するものではありません。 

翻訳元: https://www.resecurity.com/blog/article/the-litellm-supply-chain-attack-teampcp-sandclock-cicd-credential-harvesting-campaign-via-a-backdoored-trivy-github-action

ソース: resecurity.com