CI/CDとは?仕組みとパイプラインを狙う攻撃手法を解説|サイバーセキュリティ.com

CI/CDとは?仕組みとパイプラインを狙う攻撃手法を解説



CI/CD(継続的インテグレーション/継続的デリバリー)とは、ソフトウェア開発において自動化を取り入れ、変更を常にテストして本番環境にリリースできる状態にしておくことで、リリースの頻度を高め、不具合の発見やユーザーからのフィードバックの反映をより迅速にするソフトウェア開発手法です。

本記事では、CI/CDの仕組みとツールに加え、パイプライン自体を狙う攻撃手法や、安全に運用するための対策までを解説します。

CI/CDとは

CI(継続的インテグレーション)とは

CI(Continuous Integration、継続的インテグレーション)とは、複数の開発者が行ったコードの変更を、頻繁に共通のリポジトリへ統合し、その都度自動でビルド・テストを行う開発手法です。

コードが変更されるたびに自動でテストが行われるため、不具合を早期に発見でき、品質の向上が期待できます。

CD(継続的デリバリー/デプロイメント)とは

CD(Continuous Delivery/Deployment、継続的デリバリー/デプロイメント)とは、CIによってテストされたコードを、いつでも本番環境にリリースできる状態に保つ、あるいは自動でリリースまで行う手法です。リリース作業も自動で行われるため、より迅速なリリースが可能になります。

CI/CDの仕組み

コードの変更からテスト・ビルドまでの流れ

開発者がソースコードの変更をリポジトリにプッシュすると、CI/CDツールがそれを検知し、自動的にビルドとテストの一連の処理(パイプライン)を実行します。テストに合格したコードは、次のステージへと進んでいきます。

自動テスト・自動リリースによる品質向上

手動でのテストやリリース作業には、確認漏れやヒューマンエラーがつきものです。CI/CDによって一連の作業を自動化することで、こうした人為的なミスを減らし、常に一定の品質でリリースを行える体制を構築できます。

CI/CDの主な機能・特徴

自動化によるリリース頻度の向上

リリース作業が自動化されることで、これまで週単位・月単位でしか行えなかったリリースを、日単位、あるいは1日に何度も行うことが可能になります。

早期の不具合検出

コードの変更ごとに自動テストが実行されるため、不具合が本番環境に到達する前の早い段階で発見・修正しやすくなります。

代表的なCI/CDツール

オンプレミス型

自社のサーバー上に構築するタイプのツールとしては、Jenkins、Concourse CI、Droneなどが広く知られています。

クラウド型

クラウドサービスとして提供されるツールとしては、Travis CI、CircleCI、Wercker、Codeship、AWS CodeBuild、GCP Cloud Buildなどが知られています。

GitHub Actionsのように、コード管理サービスと統合された形で提供されるツールも広く利用されています。

CI/CDパイプラインを狙う攻撃手法

CI/CDパイプラインは、ソースコードから本番環境までを直結する強力な権限を持っているため、侵害された場合の影響が非常に大きいという特徴があります。

Poisoned Pipeline Execution(PPE)

Poisoned Pipeline Execution(PPE)は、パイプラインの設定ファイルやビルドスクリプトに悪意のあるコードを混入させることで、パイプライン自体に不正な処理を実行させる攻撃手法です。

正規の開発者による通常の変更に見せかけて仕込まれることもあり、レビュー体制が不十分な場合は見過ごされやすいという特徴があります。

シークレット(APIキー・認証情報)の漏洩

CI/CDパイプラインは、デプロイ先のクラウド環境やAPIへアクセスするための認証情報(シークレット)を扱います。これらの管理が不適切だと、設定ファイルやログに平文で残ってしまったり、外部に漏洩したりするリスクがあります。

サードパーティ製プラグイン・依存関係の悪用

CI/CDツールの多くはプラグインによる機能拡張が可能ですが、信頼性の低いプラグインや、脆弱性を抱えた依存パッケージを利用していると、そこが攻撃の侵入経路になることがあります。

サプライチェーン攻撃とCI/CDの関係

SolarWinds事件に見るソフトウェアサプライチェーンへの影響

2020年に発覚したSolarWinds社のケースでは、同社のネットワーク監視製品「Orion」のビルドシステムが侵害され、正規のソフトウェア更新に悪意のあるコードが混入された状態で、多数の顧客企業に配布されました。

ビルド・配布のプロセスそのものが攻撃対象となった、ソフトウェアサプライチェーン攻撃の代表例として広く知られています。

一つの侵害が下流の利用者すべてに波及する構造

CI/CDパイプラインは、開発したソフトウェアを多数の利用者に配布する「入口」でもあります。そのため、パイプラインが一度侵害されると、そこから配布されるすべての成果物が汚染される可能性があり、被害は開発元だけでなく、そのソフトウェアを利用するすべての下流企業・ユーザーにまで及びます。

この「信頼された配布経路」を悪用される構造こそが、サプライチェーン攻撃の恐ろしさです。

CI/CDを安全に運用するための対策

シークレット管理のベストプラクティス

APIキーやパスワードといった認証情報は、コードや設定ファイルに直接書き込むのではなく、専用のシークレット管理サービスを利用して安全に保管・呼び出す運用が推奨されます。

DevSecOps・シフトレフトという考え方

セキュリティ対策を開発プロセスの後工程だけで行うのではなく、設計・実装といった早い段階から組み込んでいく「シフトレフト」の考え方、そしてそれを組織文化として実践する「DevSecOps」というアプローチが、近年重視されています。

パイプライン設定の最小権限化

パイプラインの各ジョブに付与する権限は、必要最小限にとどめることが基本です。また、パイプラインの設定ファイルへの変更は、必ず第三者によるレビューを経てからマージするといったルールを徹底することも有効です。

CI/CDのメリット・デメリット

CI/CDの導入には、リリース頻度の向上や品質改善といった多くのメリットがある一方、パイプライン自体が攻撃対象になりうるというデメリット・注意点も存在します。導入の際は、開発効率の向上とセキュリティ確保の両方を意識した設計が求められます。

まとめ

CI/CDは、ソフトウェア開発の自動化とリリース頻度の向上を実現する重要な手法であり、Jenkins・GitHub Actionsをはじめとする多様なツールによって支えられています。

一方で、ソースコードから本番環境までを直結するその強力さゆえに、Poisoned Pipeline Executionやシークレット漏洩といった攻撃手法の対象にもなりやすく、SolarWinds事件が示すようにサプライチェーン全体への被害拡大につながる恐れもあります。

シークレット管理やDevSecOpsといった考え方を取り入れながら、開発の効率化とセキュリティの両立を図ることが重要です。

SNSでもご購読できます。