6月24日、Novee Securityによる調査が公開され、認証不要の無料GitHubアカウントを持つ者なら誰でも信頼されたワークフローを乗っ取り、オープンソースのサプライチェーンを侵害できるCI/CDの脆弱性が報告された。

寄生菌にちなんで「Cordyceps」と名付けられたこの脆弱性は、Microsoft、Google、Apache、Python、Cloudflareなど、大小さまざまな数十の組織に存在したとされる。侵入テスト企業は約30,000件の高影響リポジトリをスキャンした結果、654件が悪用可能とフラグを立て、300件が完全に悪用可能であることを確認した。

ワークフローをロックダウンすることは露出を減らすための賢明な第一歩だが、より根本的な問題には対処していない。つまり、多くの開発者がCI/CDパイプラインを重要なサプライチェーンリスクとは考えていないことだ。

その認識を変える必要がある。Endor Labsの上級セキュリティ研究者であるPeyton KennedyThe New Stackに対し、次のように語っている。「1つのミスによる被害は大きい傾向にあります。パイプラインはソースコード、シークレット、ソフトウェアのリリース能力を握っているため、1つの足掛かりで下流に大きく影響を及ぼす可能性があるからです」

通常のコードレビューでCI/CDのリスクが見逃される理由

Cordycepsが通常のコードレビューをすり抜けられた理由について、Novee Securityの設立エンジニア兼セキュリティ研究者であるElad Megedは、ほとんどの開発チームがCI/CDワークフローのYAMLをセキュリティ上重要なコードとして扱っていないとThe New Stackに語った。

「これらのワークフローは、多くの開発者の頭の中では『単なる設定』ですが、実際にはコマンドを実行し、認証情報を扱い、パッケージを公開し、リリースの判断を下します」と彼は言う。「ワークフローのロジックにバグがあれば、アプリケーションコードのバグと同程度に危険になり得ます」

SOLID Software Solutions LTDの上級AngularコンサルタントであるSonu Kapoorも、Cordycepsのような欠陥が通常のコードレビューを回避できる主な理由は、ほとんどの開発者が見ていない場所に潜んでいる点だと同意している。

「ワークフローのロジックにバグがあれば、アプリケーションコードのバグと同程度に危険になり得ます」

チームはワークフローが正しくビルド、テスト、デプロイされるかどうかを確認するかもしれないが、ワークフローに関する重要なセキュリティ上の問いを見落としがちだ。「誰がこのワークフローをトリガーできるのか、どのような権限が与えられるのか、シークレットは利用可能か、信頼できないプルリクエストのデータが特権的なステップに影響を与え得るか。これこそが本当のリスクが隠れている場所です」と彼は述べている。

問題は開発者だけではない。セキュリティスキャナーもこうした攻撃経路を見逃す可能性がある。通常、スキャナーは既知の危険なパターン(特定の危険な文字列や設定など)しか探さないからだ。しかし、KennedyはThe New Stackで、Cordycepsのような弱点は異なる形を取ると説明する。「それは、信頼できない入力が強力なアクションに到達する経路であり、その経路が危険かどうかは、スキャナーが単に一致させるのではなく、理解しなければならないコンテキストに依存します」

つまり、キーワードを単に特定してフラグを立てるのではなく、スキャナーはワークフローに外部入力がどこから入るのか、そのワークフローがどのような権限を持っているのか、入力が下流にどのような影響を与え得るのかを追跡・理解するところまで踏み込む必要がある。

開発者にとっての意味:CI/CDをサプライチェーンの一部として考える

Cordycepsは最近の警告のひとつに過ぎない。3月には、脅威アクターのTeamPCPがAqua SecurityのTrivyスキャナーを、数百万人の開発者に対する武器に変えた

どちらの事件も、CI/CDパイプラインがもはや単なる設定ではなく、ソフトウェアサプライチェーンの最前線の重要な一部であり、開発者がより注意を払う必要がある対象であることを示す警告だ。

重要な問いかけは「このワークフローは安全か?」だけではない。「信頼できない入力が低権限の場所から高権限のアクションへ移動できるか?」だ。

KennedyはThe New Stackに対し、CI/CDワークフローのレビュー方法を変えることから始めると語っている。

「パイプラインを、本物の認証情報と本物の到達範囲を持つ本番システムとして扱い、他の本番環境の対象に与えるのと同じ真剣さで臨むことです」

具体的には、各レビューを3つの問いに基づいて行うよう助言している。ワークフローをトリガーしたものは何か?実行時にどのような権限を持っていたか?外部入力はそれらの権限を使って何に到達できるか?

Megedは、開発者がCI/CDワークフローを攻撃者の視点で考えることを提案している。つまり、最終目標から逆算して考えるというものだ。彼はThe New Stackで次のように述べている。「重要な問いかけは『このワークフローは安全か?』だけではない。『信頼できない入力が低権限の場所から高権限のアクションへ移動できるか?』だ」

YOUTUBE.COM/THENEWSTACK

Tech moves fast, don't miss an episode. Subscribe to our YouTube channel to stream all our podcasts, interviews, demos, and more.

Group Created with Sketch.