CICD-SEC-5

定義

パイプライン実行ノードは実行環境内外の多数のリソースとシステムにアクセスできます。パイプライン内で悪意のあるコードを実行する場合、攻撃者は不十分なパイプラインベースのアクセス制御 (PBAC) のリスクを利用して、パイプラインに付与されたパーミッションを悪用し、CI/CD システムの内外をラテラルムーブします。

解説

パイプラインは CI/CD の心臓部です。パイプラインを実行するノードはパイプライン構成で指定されたコマンドを実行し、そうすることで、さまざまな機密性の高いアクティビティを行います。

  • ソースコードにアクセスし、ビルドしてテストします。

  • 環境変数、ボールト、専用のクラウドベースの ID サービス (AWS メタデータサービスなど) 、その他の場所など、さまざまな場所からシークレットを取得します。

  • アーティファクトを作成、改変、デプロイします。

PBAC は各パイプライン (およびそのパイプライン内の各ステップ) が実行されるコンテキストを指す用語です。各パイプラインの機密性と重要性が高いことを考えると、各パイプラインをアクセスする必要があるデータとリソースを正確に制限することが不可欠です。理想的には、攻撃者がパイプラインのコンテキスト内で悪意のあるコードを実行できたとしても、潜在的な被害の範囲が最小限になるように各パイプラインとステップを制限すべきです。

PBAC にはパイプライン実行環境に関係する多くの要素に関連するコントロールが含まれています。

  • パイプライン実行環境内でのコード、シークレット、環境変数、その他のパイプラインへのアクセス。

  • 基盤となるホストや他のパイプラインノードへのパーミッション。

  • インターネットへのイングレスフィルタとエグレスフィルタ。

影響

パイプライン実行ノードのコンテキストで実行できる悪意のあるコードの一部は、それが実行されるパイプラインステージの完全なパーミッションを持っています。シークレットへのアクセス、基盤となるホストへのアクセス、当該パイプラインがアクセスする任意のシステムへの接続が可能です。機密データの漏洩、CI 環境内でのラテラルムーブメント (CI 環境外のサーバーやシステムにアクセスする可能性) 、悪意のあるアーティファクトのパイプライン (本番環境を含む) へのデプロイメントにつながる可能性があります。

攻撃者がパイプライン実行ノードを侵害したり、ビルドプロセスに悪意のあるコードを注入できるシナリオの潜在的な被害の程度は、環境における PBAC の粒度によって決まります。

推奨事項

  • 機密性のレベルが異なるパイプラインやさまざまなリソースへのアクセスを必要とするパイプラインには共有ノードを使用してはいけません。共有ノードは機密性のレベルが同じパイプラインにのみ使用すべきです。

  • CI/CD システムで使用されるシークレットは各パイプラインやステップが必要とするシークレットのみにアクセスできるようにスコープされるようにします。

  • 各パイプライン実行後に実行ノードを元の状態に戻します。

  • パイプラインジョブを実行する OS ユーザーには最小権限の原則に従って実行ノードの OS パーミッションが付与されるようにします。

  • CI と CD のパイプラインジョブはコントローラノードに対する制限付きパーミッションを持つべきです。必要に応じて、別の専用ノードでパイプラインジョブを実行します。

  • 実行ノードに適切なパッチが適用されるようにします。

  • ジョブが実行されている環境では実行ノードがネットワーク内の必要なリソースにのみアクセスできるように、ネットワークセグメンテーションを構成するようにします。可能であれば、ビルドノードにインターネットへの無制限なアクセスを付与しないようにします。

  • パッケージインストールの一部としてインストールスクリプトが実行される場合、それらのスクリプト用の別のコンテキストが存在するようにし、ビルドプロセスの他のステージで利用可能なシークレットやその他の機密性の高いリソースにできないようにします。

参考情報

  1. CI で使用される一般的なコードカバレッジツールである Codecov が侵害され、ビルドから環境変数を窃取するために使用されました。

    https://about.codecov.io/security-update/

  2. Amazon, Zillow, Lyft, Slack の NodeJS アプリは脅威アクターによって依存関係攪乱 (Dependency Confusion) 脆弱性の標的にされました。依存関係攪乱 (Dependency Confusion) 攻撃の被害を受けた組織では CI ノードで悪意のあるコードが実行され、攻撃者が環境内でラテラルムーブし、不十分な PBAC を悪用できました。

    https://www.bleepingcomputer.com/news/security/malicious-npm-packages-target-amazon-slack-with-new-dependency-attacks/

  3. Teleport の CI 実装に見つかった脆弱性により、インターネットからの攻撃者が Direct-3PE 攻撃を実行して特権コンテナを実行し、ノード自体のルート権限に昇格することが可能になり、シークレットの流出、悪意のあるアーティファクトのリリース、機密性の高いシステムへのアクセスにつながりました。

    https://goteleport.com/blog/hack-via-pull-request/

Last updated