先月出会ったのは この記事 ダークリーディングより。とても見慣れたものでした。この記事で説明されている GitHub クロスワークフローのアーティファクトポイズニングの脆弱性が、GitHub のクロスワークフローに酷似していることに気づくのに、それほど時間はかかりませんでした。 キャッシュポイズニング 2022 年 XNUMX 月に報告した脆弱性。
GitHub ワークフロー - GitHub CI/CD パイプラインの主要コンポーネント
GitHub ワークフローは、CI/CD パイプラインの一部として実行する必要がある特定のアクションを定義するために使用されます。これらは、GitHub リポジトリ内の特定のイベントによってトリガーできる自動プロセスです。このようなイベントとしては、コードがリポジトリにプッシュされたとき、プル リクエストがオープンまたはクローズされたとき、または新しいリリースが公開されたときなどが挙げられます。
ワークフローは、ワークフローがトリガーされたときに実行する必要があるアクションを指定する YAML ファイルを使用して作成されます。このようなアクションは、開発者によって記述されることもあれば、10,000 を超える既製のアクションがダウンロードして使用できる GitHub のマーケットプレイスから全体的に取得されることもあります。
ワークフローは 1 つ以上のジョブで構成され、一連のステップとして定義されます。ステップには、テストの実行、コードのデプロイ、パッケージの公開など、さまざまなアクションを含めることができます。
GitHub ワークフローは、開発者がワークフローを自動化および合理化し、時間と労力を節約し、ソフトウェア開発プロセスの信頼性を向上させるのに役立つ強力なツールですが、組み込みの欠陥がないわけではありません。
GitHub ワークフローを使用する場合、潜在的なセキュリティ問題がいくつか発生する可能性があります。一般的なものをいくつか示します。
- 不正アクセス: 適切に構成または保護されていないワークフローは、未承認のユーザーによってアクセスされ、トリガーされる可能性があります。これにより、任意のコードを実行したり、その他の不正なアクションを実行したりする可能性があります。
- 機密漏洩: ワークフローでは、外部リソースにアクセスしたり、特定のアクションを実行したりするために、API キーやパスワードなどのシークレットの使用が必要になることがよくあります。これらの秘密が適切に保護されていない場合、漏洩する可能性があり、セキュリティ侵害につながる可能性があります。
- 不安定な依存関係s: 外部ライブラリまたは依存関係に依存するワークフローは、それらの依存関係が安全でない場合、攻撃に対して脆弱になる可能性があります。依存関係を定期的に確認して更新し、依存関係が安全であることを確認することが重要です。
- 入力検証とサニタイズが欠如している注:入力を適切に検証しないワークフローは、任意のコードを実行したり、その他の不正なアクションを実行するために悪用される可能性があります。
上記の記事で説明されている 2 つのクロスワークフローの脆弱性を詳しく見てみましょう。
クロスワークフローアーティファクトポイズニング
GitHub ワークフロー アーティファクトは、CI/CD パイプラインで行われた作業の成果物です。通常、各ワークフローはそのようなアーティファクトを保存するための独自のバケットを取得しますが、場合によっては、ワークフローが他のワークフローによって作成されたアーティファクトにアクセスする必要があることがあります。 GitHub では、ワークフローが異なるワークフローのストレージ/アーティファクトに完全にアクセスすることはできません。これを回避するために、基本的なフィルタリングに基づいてアーティファクトをダウンロードできる GitHub 承認の API があります。問題は、API がフォークされたリポジトリによってアップロードされたアーティファクトとベース リポジトリによってアップロードされたアーティファクトを区別しないことです。つまり、フォークされたリポジトリによって作成された潜在的に汚染されたアーティファクトをアップロードすることは、現実的な、そして現在の危険であることを意味します。
この問題を修正するために、GitHub はアーティファクトのダウンロード時に追加情報とアーティファクト メタデータの提供を開始しました。この情報は、作成者が正しいアーティファクトをダウンロードしていることを確認できるように設計されています。クロスワークフロー アーティファクトの基本的な問題は、現時点では GitHub では問題とはみなされていません。この問題の詳細については、以下を参照してください。 記事 上記の通り。
クロスワークフローキャッシュポイズニング
GitHub では、アーティファクトとパッケージをキャッシュして CI/CD パイプラインを高速化できます。必要なアーティファクトやパッケージをワークフローごとに何度もダウンロードする代わりに、それらをキャッシュして別のワークフローで使用できます。
キャッシュはワークフロー間で共有されるため、変更権限のあるキャッシュを使用するワークフローで 1 回の違反が発生するだけで、その後のすべてのワークフローでの使用に対してそのキャッシュが汚染される可能性があります。キャッシュはダウンロードする新しいアーティファクトまたはパッケージがある場合にのみ更新されるため、単一の汚染されたキャッシュが長期間アクティブになり、そのパイプラインで実行されるソフトウェア ビルドの無数の反復に影響を与える可能性があります。
GitHub は、潜在的に汚染されたキャッシュの問題を問題とは考えていません。キャッシュは便利な機能であり、ワークフロー間でキャッシュを共有できる機能は、現時点ではバグや完全なセキュリティ問題とはみなされていません。この問題の詳細については、以下を参照してください。 記事 上記の通り。
その他のあまり知られていない GitHub の脆弱性とそれに対する防御方法
GitHub は、世界で最も人気のあるソース管理管理 (SCM) システムの 1 つです。そのため、CI/CD パイプライン、アクション、ワークフローを使用してソフトウェアを構築および配布するためにも広く使用されています。
GitHub はコード共有と共同開発を促進するために作成されたということを覚えておく必要があります。元々はオープンソース開発者向けに設計されており、エンタープライズおよび組織のアカウント機能が後に追加されました。本質的に、セキュリティはシステムの主要な懸念事項ではありませんでした。を行う必要があるという事実 特別なセットアップ GitHub でアカウントのセキュリティ機能を有効にすることで、Git を使用することで本質的に安全性が高まるという考えは単なる幻想であることを意味します。
今月後半、Scribe が主催する予定です ツァチ・ゾーンステイン, Checkmarx のソフトウェア サプライ チェーン責任者がウェビナーで、GitHub におけるこのようなソフトウェア サプライ チェーンの潜在的な落とし穴について話しました。
このあまり知られていない種類の脆弱性とその防御方法について詳しく知りたい場合は、このオンデマンドを聞いてください。 ウェビナー。
このコンテンツは、エンドツーエンドのソフトウェア サプライ チェーン セキュリティ ソリューションの大手プロバイダーである Scribe Security によって提供されており、ソフトウェア サプライ チェーン全体のコード成果物とコード開発および配信プロセスに最先端のセキュリティを提供しています。 詳しくはこちら。