脆弱性から勝利へ: CI/CD パイプラインの防御

全ての記事

自動化された CI/CD (継続的インテグレーション/継続的デリバリー) パイプラインは、開発をスピードアップするために使用されます。コードを取得し、マージ、ビルド、テストし、自動的に出荷するトリガーやスケジューリングがあるのは素晴らしいことです。ただし、速度と使いやすさを重視して構築されているということは、ほとんどのパイプラインは本質的にセキュリティを念頭に置いて構築されていないことを意味します。通常、パイプラインは依存関係をダウンロードするためにインターネットにアクセスし、運用環境にアップロードするためにさまざまなシークレットにアクセスする必要があるため、そのようなパイプラインが侵害されると、攻撃者は操作を中断したり、情報や秘密を抜き出す。

この記事で紹介されているすべてのストーリーは、著名な CI/CD ツールの侵害について説明しています。ほとんどの企業がそのようなツールに依存しているという事実は、他の多くの企業と同様に、 ソフトウェアサプライチェーン攻撃、悪者が必要とするのは、単一のターゲットを突破して広大な爆発範囲を獲得することだけです。
この攻撃ベクトルに内在する脆弱性を示す、過去数年間の著名な記事をいくつか見てみましょう。この記事の最後では、使用しているツールに関係なく、パイプラインを強化して保護するための推奨事項を必ず紹介します。

CircleCI 侵害

2023 年 XNUMX 月、継続的インテグレーションおよびデリバリー プラットフォームである CircleCI は、 セキュリティ侵害 これにより、攻撃者が会社のインフラストラクチャに不正にアクセスできるようになりました。この攻撃は、従業員を騙して資格情報を共有させるフィッシングメールによって開始され、攻撃者はその資格情報を使用して会社のシステムにアクセスしました。この従業員は 2FA を利用していましたが、攻撃者はその従業員が既にシステムにログインした後にセッション Cookie を取得することができ、これにより従業員になりすまし、最終的に CircleCI の実稼働システムのサブセットへのアクセスをエスカレートすることができました。

攻撃者は、名前、電子メール アドレス、請求先情報などの一部の顧客データにアクセスしました。同社は、コードや知的財産へのアクセスはなく、アカウントやデータへの不正アクセスを報告した顧客もいなかったと報告した。

CircleCI はこの侵害に迅速に対応し、調査を実施し、法執行機関やサイバーセキュリティの専門家と協力して攻撃の範囲を特定し、攻撃の発生を可能にした脆弱性を修復しました。同社はまた、すべての従業員と顧客の認証情報をリセットし、システムの監視を強化するなどの追加のセキュリティ対策を実施しました。

DevOps の混乱: Argo CD のセキュリティ侵害

Argo CD は、Kubernetes クラスターにアプリケーションを継続的にデプロイするための人気のあるオープンソース ツールです。 2022 年 XNUMX 月に、 Argo CD に新たな脆弱性が発見されました これにより、認証されていないユーザーが、ツールによって管理される Kubernetes アプリケーションに関する機密情報にアクセスできるようになります。この脆弱性は、Argo CD の API サーバーの設定ミスによって引き起こされ、権限のないユーザーが API へのリクエストを実行し、シークレット、設定、アプリケーションのメタデータなどの情報を取得できるようになりました。攻撃者がアプリケーションを作成または更新する権限を持ち、有効な YAML を含むファイルへのフル パスを知っているか推測できる限り、悪意のある Helm チャートを作成し、有益なデータが見つかるまで YAML ファイルを値として消費し続けることができます。通常はアクセスできないでしょう。

この脆弱性には CVSS スコア 7.5 (重大度高) が割り当てられ、バージョン 2.1.4 までの Argo CD のすべてのバージョンに影響を与えました。 Argo CD はバージョン 2.1.5 の脆弱性に対するパッチをリリースしており、ユーザーはできるだけ早くこのバージョンにアップグレードするよう推奨されています。

Argo CD は実稼働環境で重要なアプリケーションやインフラストラクチャを管理するためによく使用されるため、この脆弱性は特に懸念されると考えられました。機密情報が漏洩すると、攻撃者が機密データにアクセスしたり、アプリケーションの可用性やセキュリティに影響を与える可能性のあるその他の悪意のある行為を実行したりする可能性があります。

コードコーブ侵害の解明: 得られた教訓

Codecov は、CI/CD パイプライン内で使用されるコード カバレッジ追跡および分析ツールで、開発者がテストの有効性を測定および分析できるようにします。 Codecov で公開されているとおり セキュリティ更新プログラム

「1 年 2021 月 XNUMX 日木曜日、何者かが当社のサービスに不正アクセスしたことを知りました。 Bashアップローダー スクリプトを作成し、許可なく変更しました。 Codecov の Docker イメージ作成プロセスのエラーにより、攻撃者がアクセスを取得し、Bash Uploader スクリプトを変更するために必要な認証情報を抽出できました。」

Bash Uploader は、顧客がコード カバレッジ レポートを Codecove プラットフォームにアップロードするために使用します。このアクセスにより、攻撃者は、アップロード プロセス中にユーザーのシステムから環境変数、認証トークン、その他の機密データを収集する悪意のあるコードを追加することにより、Bash Uploader スクリプトを変更しました。このデータは、攻撃者が制御するリモート サーバーに送信されました。

Codecove によると、この侵害は同社の顧客ベースの約 1% に影響を及ぼし、その中にはテクノロジー、金融、ヘルスケア業界の大手企業が含まれていました。同社は、顧客コードやコードカバレッジレポートは侵害中に変更されなかったが、ユーザー認証トークンやその他の機密情報が侵害された可能性があることを確認した。

Codecove は直ちに措置を講じて悪意のあるコードを削除し、影響を受けた顧客に認証トークンをリセットするなどのセキュリティ対策を講じるよう警告しました。同社はまた、この事件の調査を開始し、法執行機関やサイバーセキュリティの専門家と連携して攻撃元を特定した。

どうすればパイプラインを守ることができるでしょうか?

パイプラインを示すイメージ

データセンターの建物内の冷却塔のセット。

前述したように、CI/CD パイプラインは速度と自動化を目的として構築されており、必ずしもセキュリティを目的としたものではありません。評判の高い大手企業 3 社がいずれも何らかの攻撃の被害に遭い、顧客の情報が漏洩する可能性があるという事実は、自社のパイプラインとデータの脆弱性を示しています。
どのようなツールや CI/CD プラットフォームを使用しているかに関係なく、セキュリティを強化し、悪意のある攻撃者がパイプラインやネットワークにアクセスした場合に起こり得る被害を軽減するために、いくつかのことを行うことができます。

  • 脅威モデリング – 脅威モデリングは、システムまたはアプリケーションに対する潜在的なセキュリティ脅威を特定し、それらの脅威を軽減するための適切な対策を設計するための構造化されたアプローチです。演習として、誰かがあなたのパイプラインにアクセスしたと想像してください。彼らは現在どのような環境にアクセスできるのでしょうか?彼らはどのようなシークレットとキーを参照して使用できるのでしょうか?彼らはあなたのコードを変更することができますか?影響テスト? Web からファイルをプルしますか、それともリバース シェルを実行しますか?パイプラインをサニタイズし、ネットワーク アクセスを適切にセグメント化したと考えている場合でも、最悪のシナリオを認識するために、想像して確認することは害にはなりません。パイプライン プラットフォームやツール内の目に見えるところに、どのような秘密やアクセス オプションが隠されているかに驚かれるかもしれません。
  • ネットワークセグメンテーション – ネットワークのセグメンテーションは、大規模なネットワークを、それぞれ独自のセキュリティ制御とポリシーを持つ、より安全な小さなサブネットワークまたはセグメントに分割する手法です。ネットワークのセグメンテーションの目的は、潜在的なセキュリティ侵害の範囲を制限し、攻撃の潜在的な影響を最小限に抑えることで、ネットワーク全体のセキュリティを強化することです。ネットワークをより小さなセグメントに分割すると、攻撃者の横方向の移動が制限され、不正アクセスやデータ漏洩のリスクが軽減されます。
    フィッシング攻撃の人気が高まっているため、開発者や他の従業員がそのような詐欺の被害に遭う可能性があります。私たちは皆人間です。開発者の資格情報が悪意のある攻撃者によって使用される可能性があると仮定すると、圧倒的多数の開発者が単独で機密情報を抽出したり、本番イメージに悪意のあるコードを埋め込んだりできるようなアクセス権を持たないようにする必要があります。あるいは、製品コードの独自バージョンを競合なしでプッシュするだけです。各個人が自分の作業に必要な最小限のアクセス権を持っていることを確認するのは時間がかかり、全員に管理者アクセス権を与えればそれで終わりという誘惑が強いです。ダークサイドに誘惑されないでください。ゼロトラストと最小限の権限のルールに従ってください。
  • 監視と警告 – 最後の点に続き、開発者にフィッシングやその他のソーシャル エンジニアリング詐欺にうんざりするよう徹底的に訓練したとしても、依然として侵害が発生する可能性があります。いつ、どのようにしてそれを知るかはわかりませんが、少なくともそれについて知る準備をしておく必要があります。ほとんどのパイプライン環境は一時的なものであるため、ジョブが完了すると、自分でそのような痕跡を作成しない限り、何が起こったのかを示す痕跡は見つかりません。
    各 PR、マージ、ビルド、完了したテストなど、パイプライン内で起こっているすべてのことを必ず記録してください。問題により確認が必要な場合に備えて、ユーザーの情報もログに記録されていることを確認してください。構成ファイルまたは環境自体に対する変更もログに記録する必要があります。ここでの目標は、侵害に対して明確な事後分析を行って、何がどのように起こったのかを明らかにできるようにすることです。どのイベントがアラートを必要とするかを事前に決定し、適切な人がそのアラートを確実に受け取ることができるようにします。無駄なアラートや誤ったアラートを人々に大量に送信しないように注意してください。アラート疲労を引き起こし、アラートを無視したり、推奨よりもはるかに遅れて応答したりするだけです。明らかに、これらのログには公開秘密や鍵が含まれていてはなりません。これが次の箇条書きにつながります。
  • シークレット管理 – 何らかのシークレット管理ツールを使用していることを確認してください。少なくとも、侵害が発生した場合にシークレットとパスワードをローテーションするのが容易になります。また、システム上で行われたログからパイプライン内で見つかったオープン シークレットとアクセス キーを編集する作業も実行する必要があります。いかなる時点においても、権限のない者がそのような情報にアクセスしてはなりませんし、絶対に変更することもできません。
    組織がクラウドベースのサービス、コンテナ化されたアプリケーション、およびさまざまなシステムやアプリケーション間でのシークレットの安全な共有と管理を必要とするその他の分散環境への依存が高まるにつれて、シークレット管理の重要性がますます高まっています。
  • 最小特権と組み合わせた RBAC 原則を使用する – 役割ベースのアクセス制御 (RBAC) の原理は、組織内でユーザーに割り当てられた役割または職務に基づいてシステム リソースへのアクセスを提供することです。 RBAC では、ユーザーには、ファイル、フォルダー、アプリケーションなどのさまざまなシステム リソースに対するアクセス許可とアクセス権を定義するロールが割り当てられます。一方、最小権限の原則は、職務を遂行するために必要な最小限のアクセス権と特権をユーザーに付与する慣行です。これは、ユーザーが特定のタスクを実行するために必要なリソースのみにアクセスでき、それ以上にはアクセスできないことを意味します。 RBAC と最小権限は、補完的なセキュリティ原則として一緒に使用されることがよくあります。 RBAC では、ユーザーには、職務を実行するために必要なリソースへの適切なレベルのアクセス権を持つロールが割り当てられ、最小特権の原則により、ユーザーは特定のタスクを実行するために必要な最小限のレベルのリソースにのみアクセスできるようになります。これらの原則を組み合わせることで、不正アクセスやデータ侵害のリスクを最小限に抑え、安全で適切に管理されたシステムを維持することができます。追加のセキュリティとして、システム内の重要なアクションを実行するために複数のユーザーの承認が必要になるように設定できます。このアプローチは開発作業を大幅に遅らせる可能性があるため、注意して行う必要があります。ただし、メイン ブランチの削除や依存関係リストの変更などの重要な更新の場合は、適切なアクセス権を持つ少なくとも 2 人が承認する必要があるようにする必要があります。

楽しみにしています

作業をスピードアップするために CI/CD やその他の自動化ツールの使用をやめる人はいないでしょう。私たちは、コード更新の高速化を常に追求する世界に住んでいます。必要なのは、セキュリティを意識した方法で実行し、その過程でコードと運用環境が危険にさらされていないことを確認することだけです。

あなたができる最も重要なことの 1 つは、許可されていない人がアクセスした場合に何が起こるかを少し考えることです。危険性と、パイプラインやネットワーク内のさまざまな場所が脆弱であることに気づいたら、潜在的な漏洩をふさぐための適切な措置を講じることができると私は信じています。

Scribe は、ソフトウェア サプライ チェーンのセキュリティ会社であり、そのプラットフォームは、開発プロセスとパイプラインで何が行われているかについての透明性を提供するように設計されています。 Scribe がパイプラインの保護にどのように役立つかについて詳しく知るには お問い合わせ.

このコンテンツは、エンドツーエンドのソフトウェア サプライ チェーン セキュリティ ソリューションの大手プロバイダーである Scribe Security によって提供されており、ソフトウェア サプライ チェーン全体のコード成果物とコード開発および配信プロセスに最先端のセキュリティを提供しています。 詳しくはこちら。