Awesome CI/CD Attacks
CI/CD Attacksを扱う資料や関連プロジェクトをまとめたAwesomeリストです。
目次
技法
独自性と有用性を備えたCI/CD攻撃技法のキュレーションリスト。
公開された機密データ
- (The) Postman Carries Lots of Secrets - 分かりにくいUI、フォーク、不十分なシークレットスキャンにより、Postmanの公開APIネットワークが数千のシークレットを漏えいさせます。
- All the Small Things: Azure CLI Leakage and Problematic Usage Patterns - 使用パターンによりAzure CLIがCI/CDログへシークレットを漏えいさせます。
- Anyone can Access Deleted and Private Repository Data on GitHub - フォークネットワークの一部である限りアクセスできます。
- Beyond S3: Exposed Resources on AWS - インターネットに公開されたEBS、RDS、AMI、Elasticsearchクラスター。
- CloudQuarry: Digging for secrets in public AMIs - 研究者が、複数業界に影響する公開AWS AMI内の認証情報、非公開リポジトリ、鍵500GBを発見しました。
- Employee Personal GitHub Repos Expose Internal Azure and Red Hat Secrets - 従業員の個人GitHubリポジトリが内部のAzure・Red Hatシークレットを公開します。
- Fortune 500 at Risk: 250M Artifacts Exposed via Misconfigured Registries - 機密の独自コードとシークレットを含むソフトウェアアーティファクトが、誤設定された公開レジストリから露出します。
- GitLab Secrets - 公開Git履歴からはアクセスできない、機密情報を含む可能性がある削除済みGitLabコミットを明らかにするツール。
- Hidden GitHub Commits and How to Reveal Them - 公開Git履歴からはアクセスできない、機密情報を含む可能性がある削除済みGitHubコミットを明らかにするツール。
- Holes in Your Bitbucket: Why Your CI/CD Pipeline Is Leaking Secrets - Bitbucket Secured Variablesがアーティファクトオブジェクトを通じてシークレットを漏らす問題。専用シークレットマネージャーとコードスキャンの利用を推奨します。
- Millions of Secrets Exposed via Web Application Frontends - JavaScriptとデバッグページを通じてWebアプリのフロントエンドから数百万のシークレットが公開されます。
- Publicly Exposed AWS Document DB Snapshots - Cinemark Brazilの公開AWS DocumentDBスナップショットが数百万件の顧客レコードを明らかにしました。
- Thousands of images on Docker Hub leak auth secrets, private keys - 研究者が、秘密鍵とAPIシークレットを漏えいする数千のDocker Hubイメージを発見しました。
初期コード実行
- ActionsTOCTOU (Time Of Check to Time Of Use) - 承認イベントを監視し、PRヘッド内のファイルをパラメーター指定のローカルファイルへ迅速に置き換えるツール。
- AWS Targeted by a Package Backfill Attack - 内部パッケージのコミット履歴を走査し、dependency confusionを実行します。
- Can you trust ChatGPT’s package recommendations? - 存在しないコーディングライブラリを生成する生成AIプラットフォームの傾向を利用してDependency Confusionを実行します。
- Can You Trust Your VSCode Extensions? - 人気のVSCode拡張機能になりすまし、気付かない開発者にダウンロードさせます。
- Deep dive into Visual Studio Code extension security vulnerabilities - VS Code拡張には、開発者マシンを侵害し得るコマンドインジェクション、パストラバーサル、zip slipの脆弱性があります。
- Dependency Confusion: How I Hacked Into Apple, Microsoft and Dozens of Other Companies - 研究者が社内企業名を持つ悪意あるパッケージを公開し、dependency confusionによりApple、Microsoftほかへアクセスしました。
- Dependency Confusions in Docker and remote pwning of your infra - 誤設定されたDockerミラーがプライベートイメージではなく悪意ある公開イメージを取得する際に、Docker dependency confusionが発生します。
- Erosion of Trust: Unmasking Supply Chain Vulnerabilities in the Terraform Registry - TerraformモジュールはDependency Lock Fileで保護されず、無害に見えるモジュールが悪意あるコードを導入し得ます。
- Fixing typos and breaching microsoft’s perimeter - コントリビューターになることでGitHubワークフローの承認要件を回避します。
- GitHub Dataset Research Reveals Millions Potentially Vulnerable to RepoJacking - 組織名変更により数百万のGitHubリポジトリがRepoJackingに脆弱で、コード実行につながる可能性があります。
- Gitloker attacks abuse GitHub notifications to push malicious OAuth apps - 攻撃者が偽のGitHub通知を用い、リポジトリアクセスを盗む悪意あるOAuthアプリの認可へ誘導します。
- Hacking GitHub AWS integrations again - OIDCを使用する誤設定パイプラインを攻撃します。
- How I hacked into Google’s internal corporate assets - Dependency Confusionのため、コード内の依存関係を見つけるさらなる方法。
- How to completely own an airline in 3 easy steps - インターネットからアクセスできる誤設定CIシステム。
- How We Hacked a Software Supply Chain for $50K - 対象のJavaScriptフロントエンドファイルを収集し、ASTでimport/require文を特定してNPM認証情報を含む公開コンテナを発見しました。
- Introducing MavenGate: a supply chain attack method for Java and Android applications - 長く放棄された公開・人気ライブラリが巨大プロジェクトで使われ続けています。ドメイン名の購入によりプロジェクトへのアクセスを乗っ取れます。
- Keeping your GitHub Actions and workflows secure Part 1: Preventing pwn requests - pull_request_targetワークフロートリガーと信頼できないPRの明示的checkoutの組合せは、リポジトリ侵害につながり得ます。
- Keeping your GitHub Actions and workflows secure Part 2: Untrusted input - GitHub Actionsのコマンドインジェクション。
- Malicious code analysis: Abusing SAST (mis)configurations to hack CI systems - 誤設定されたSASTツールを悪用してCIシステムで悪意あるコードを実行し、認証情報の窃取や悪意あるアーティファクトのデプロイを行えます。
- PPE — Poisoned Pipeline Execution - Poisoned Pipeline Execution(PPE)は、直接アクセスなしで攻撃者がCI/CDシステム上の悪意あるコードを実行できるようにします。
- Security alert: social engineering campaign targets technology industry employees - GitHubユーザーをフィッシングし、リポジトリのダウンロードと実行へ誘導します。
- The (In)security Landscape of AI-Powered GitHub Actions (Part 2/2) - AI搭載GitHub Actionsの脆弱性。攻撃者が信頼されたアプリになりすませる構文的権限検査とDependabot Deputy Confusion Injectionを扱います。
- The Monsters in Your Build Cache – GitHub Actions Cache Poisoning - 脆弱性・依存関係の欠陥を悪用し、キャッシュトークン窃取、退避を強制するキャッシュ充填、正規エントリーの悪意あるコードへの置換を行うことで、限定的な権限でもワークフローを侵害できます。
- Thousands of npm accounts use email addresses with expired domains - メンテナーのメールハイジャック。
- Understanding typosquatting methods - for a secure supply chain - typosquattingは、正規のものに似た名前の悪意あるパッケージを公開し、タイポを悪用して悪意あるコードを注入します。
- Vulnerable GitHub Actions Workflows Part 1: Privilege Escalation Inside Your CI/CD Pipeline - GitHub Actionsのworkflow_run権限昇格。
- What the fork? Imposter commits in GitHub Actions and CI/CD - GitHub Actionsの脆弱性により、フォークされたコミットがワークフローセキュリティ設定を回避できます。
- whoAMI: A cloud image name confusion attack - AWS AMIを使うDependency Confusion。
- WordPress Plugin Confusion: How an update can get you pwned - 未請求のWordPressプラグインは、プラグインディレクトリ経由の乗っ取りに脆弱です。
侵害後
-
From Self-Hosted GitHub Runner to Self-Hosted Backdoor - 攻撃者が誤設定ランナーと弱いPATセキュリティを悪用し、永続化、権限昇格、ラテラルムーブメントを行います。
-
Hacking Terraform State for Privilege Escalation - Terraform stateファイルの変更により、攻撃者はインフラを削除したりカスタムプロバイダー経由でコードを実行したりできます。
-
Hijacking GitHub runners to compromise the organization - ubuntu-latestタグを持つGitHubランナーを登録すると、GitHub提供ランナー用だったジョブへアクセスできます。
-
How We Discovered Vulnerabilities in CI/CD Pipelines of Popular Open-Source Projects - GitHub Actionsで全リポジトリ・組織シークレットを抽出します。
-
Invisible Ghost: Alarming Vulnerability in GitHub Copilot - 隠されたUnicode文字でGitHub Copilotの提案を操作します。
-
Leaking Secrets From GitHub Actions: Reading Files And Environment Variables, Intercepting Network/Process Communication, Dumping Memory - 脆弱なGitHub Actionsワークフローから、ファイル・環境変数の読取り、通信の傍受、ランナーメモリダンプなど複数の方法でシークレットを漏えいさせられます。
-
Living off the pipeline - 開発ツール(一般にCLI)が持つ、あまり知られていないRCE-by-design機能を棚卸しします。
-
Registering self-hosted CircleCI runner - 悪意あるランナー上で実行されるジョブのシークレット窃取に利用できます。
-
The GitHub Actions Worm: Compromising GitHub Repositories Through the Actions Dependency Tree - 新しいGitHub Actionsワームはアクション依存ツリーを悪用します。攻撃者はアクションを侵害してブランチプッシュまたはタグ上書きで依存アクションを感染させ、マルウェアを再帰的に拡散します。
防御回避
- #redteam tip: want to discretely extract credentials from a CI/CD pipeline? - ドラフトプルリクエストはリポジトリコントリビューターに通知されませんが、パイプラインは起動します。
- Abusing Repository Webhooks to Access Internal CI/CD Systems at Scale - CI/CDパイプラインを起動するリポジトリWebhookを悪用して内部システムへアクセスできます。
- Bypassing required reviews using GitHub Actions - GitHub Actionsが必須レビューを回避し、保護ブランチへの悪意あるコードプッシュを可能にします。
- Forging signed commits on GitHub - GitHub APIのバグにより署名済みコミットを偽造できました。内部Codespaces APIエンドポイントのregex欠陥を悪用して、GitHub Webフローの署名にもかかわらず任意ユーザーが署名したコミットを作成できました。
- GitHub comments abused to push malware via Microsoft repo URLs - 隠されたGitHubコメントリンク。
- How a Single Vulnerability Can Bring Down the JavaScript Ecosystem - パッケージを利用不能にするNPMレジストリへのキャッシュポイズニング攻撃。
- One Supply Chain Attack to Rule Them All – Poisoning GitHub’s Runner Images - actions/runner-imagesリポジトリ内の誤設定セルフホストランナーに関わるGitHub Actionsの重大脆弱性により、全GitHub・Azureホストランナーイメージが侵害され得ました。
- PR sneaking - GitHubプルリクエストへ悪意あるコードを忍び込ませる手法。
- Remove evidence of malicious pull requests on GitHub - アカウントのメールをブロックリスト登録済みドメインへ変更し、アカウントを自動停止させます。
- StarJacking – Making Your New Open Source Package Popular in a Snap - StarJackingは、攻撃者が悪意あるオープンソースパッケージを人気があるように見せかける技法です。
- The massive bug at the heart of the npm ecosystem - NPM Manifest Confusion。
- Trojan Source - 論理バグを挿入する代わりに、敵対者はソースコードファイルのエンコーディングを攻撃して脆弱性を注入できます。
- Unpinnable Actions: How Malicious Code Can Sneak into Your GitHub Actions Workflows - GitHub ActionsはコミットSHAに固定していても、Dockerイメージ、ロックされていないパッケージ、外部スクリプトといった可変依存関係経由で悪意あるコードを取り込む可能性があります。
- Why npm lockfiles can be a security blindspot for injecting malicious modules - 大きく機械生成され、徹底的にレビューされることが少ないlockfile(package-lock.jsonまたはyarn.lock)を通じて、悪意あるコードをnpmプロジェクトへ注入できます。
- Working as unexpected - ブランチ保護ルールのパターンに一致するGitHubブランチを作成し、pushで起動するワークフローファイルを置くことで環境シークレットへアクセスします。
- Zuckerpunch - Abusing Self Hosted GitHub Runners at Facebook - GitHub PR内のコミットを隠します。
ツール
- ADOKit - Azure DevOps Services Attack Toolkit。
- Gato - GitHub Attack Toolkit。
- Gato-X - GitHub Attack Toolkit - Extreme Edition。
- GH Archive - GitHubの公開タイムラインを記録・アーカイブし、さらに分析しやすくするプロジェクト。
- GHTorrent Project - クエリ可能なGitHub APIデータのオフラインミラー。チュートリアル。
- git-dumper - WebサイトからGitリポジトリをダンプします。
- GitFive - GitHubプロフィールを調査するOSINTツール。
- Grep.app - regexを使ってGitHubを検索します。
- Jenkins Attack Framework - ジョブの一覧表示、認証情報ダンプ、コマンド・スクリプト実行、APIトークン管理など、Jenkinsタスクを管理できるツール。
- Nord Stream - CI/CD環境内に保存されたシークレットを抽出するツール。
- pwn_jenkins - Jenkinsサーバーを攻撃するためのノート。
- Secrets Patterns Database - シークレット、APIキー、パスワード、トークンなどを検出する最大のオープンソースデータベース。
- Sourcegraph - 公開リポジトリ向けWebベースのコード検索・ナビゲーションツール。
- Token-Spray - Nucleiを用いてトークン検証を自動化します。
- zizmor - GitHub Actionsの静的解析。
事例研究
- 10 real-world stories of how we’ve compromised CI/CD pipelines - S3設定ミス、Jenkinsプラグインの欠陥、GitLabランナーの権限昇格、Kubernetes Podアノテーションの脆弱性、侵害された開発者ラップトップの悪用例を含みます。
- GitHub Actions Attack Diagram - Black Hat USA 2024とDEF CON 32で発表された公開脆弱性研究を含みます。
- Playing with Fire – How We Executed a Critical Supply Chain Attack on PyTorch - 研究者が悪意あるプルリクエストを通じ、PyTorchの重大な脆弱性を悪用してセルフホストランナー上でコードを実行しました。
類似プロジェクト
- Common Threat Matrix for CI/CD Pipeline
- Open Software Supply Chain Attack Reference (OSC&R)
- Risk Explorer for Software Supply Chains
- SDLC Infrastructure Threat Framework (SITF) - ソフトウェア開発ライフサイクルインフラを標的とする攻撃を分析・防御する包括的フレームワーク。