本ブログは、Microsoft guidance regarding credentials leaked to GitHub Actions Logs through Azure CLI の抄訳版です。最新の情報は原文を参照してください。
概要
マイクロソフト セキュリティ レスポンス センター (MSRC) は、Azure コマンドライン インターフェイス (CLI) が GitHub Actions ログを通じて認証情報を含む機密情報を公開する可能性がある脆弱性を確認しています。Palo Alto Networks Prisma Cloud の研究者は、Azure CLI コマンドを使用して機密データを表示し、継続的インテグレーションおよび継続的デプロイメント (CI/CD) ログに出力できることを発見しました。マイクロソフトは、CI/CD ログを通じて機密情報が不用意に公開されるのを防ぐため、Azure CLI を最新バージョン (2.54) に更新し、お客様には以下のガイダンスに従うことを推奨しています。最近 Azure CLI コマンドを使用したお客様には、Azure ポータルにてアップデートが可能である旨を通知しました。
Prisma Cloud からの報告を受け、マイクロソフトは Azure Pipelines、GitHub Actions、および Azure CLIを含むさまざまな製品で、より強固なシークレット リダクションを実装するためにいくつかの変更を行いました。この発見は、顧客が機密情報をリポジトリや CI/CD パイプラインに記録しないようにする必要性があることを浮き彫りにしました。セキュリティ リスクを最小化することは、マイクロソフトとお客様の共有の責任です。マイクロソフトは、シークレットが出力されるのを防ぐのに役立つAzure CLI のアップデートを公開しており、お客様はワークロードを保護するための措置を積極的に行ってください。
この脆弱性の詳細については、セキュリティ アップデートガイド (CVE-2023-36052) を参照してください。
Azure Pipelines、GitHub Actions Logging、Azure CLIの変更について
マイクロソフトは、今回の Azure CLI コマンドの変更に加え、今後も機密情報の漏洩につながる不用意な使用に対して Azure CLIをさらに強化するために変更をしていく予定です。その一例として、App Service ファミリーのサービス (Web Apps、Functions など) の更新コマンドの出力にシークレットが表示されないようにする新しいデフォルト設定の実装が挙げられます。このデフォルト設定は、Azure CLI の最新バージョン (2.53.1 以上) にアップデートした場合のみに適用され、Azure CLI の以前のバージョン (2.53.0 以下) には適用されません。詳細については、Azure CLI のリリースノートを参照してください。Azure CLI のレスポンスに含まれるシークレット値をワークフローの後続部分で使用している場合、この変更が一部の自動化されたワークフローに影響を与える可能性があることに注意してください。しかし、自動化にはより安全なオーサリングパターンがありますので、ぜひバージョンアップをご検討ください。更新された App Service コマンドのサンプルは、以下で確認することができます。今後も引き続き調査を行い、Azure CLI の更新を行い、CVE-2023-36052 のコマンドリストを更新していきます。
az webapp config appsettings set
az webapp config appsettings delete
さらに、GitHub Actions と Azure Pipelinesのクレデンシャル再編集機能を拡張し、ビルドログの認識可能なキーパターンをより多く特定してマスクできるようになりました。この再編集は、正確さとパフォーマンス上の理由から、特定のキーのセットをターゲットにするように設計されており、マイクロソフトが発行したキーが誤って一般向けのログに紛れ込んでしまった場合に、それを捕捉することを目的としています。現時点では、冗長化されるパターンは包括的なものではなく、出力やログに秘密として設定されていない変数やデータがマスクされている可能性があることに注意してください。マイクロソフトは、潜在的な秘密の強固なパターンを含むように、この保護を最適化し、拡張する方法を継続的に模索しています。
Azure CLI による不用意な機密情報の漏洩を避けるための顧客ガイダンス
上述したように、セキュリティリスクの最小化はマイクロソフトとお客様の共有の責任です。マイクロソフトは、クラウドワークロードを開発および管理する際に、ベストプラクティスに従うことをお客様に推奨しています。シークレット管理に関しては、不注意に機密情報の漏洩を避けるために、お客様が実施可能な手順がいくつかあります:
- Azure CLI を常に最新リリースにアップデートし、最新のセキュリティアップデートを適用する。
- Azure CLI の出力をログや一般にアクセス可能な場所に公開しない。 出力値を必要とするスクリプトを開発する場合は、スクリプトに必要なプロパティをフィルタリングします。Azure CLI における出力形式に関する情報 を確認し、環境変数をマスクするための推奨ガイダンスを実行してください。
- キーとシークレットを定期的にローテーションする。 一般的なベストプラクティスとして、お客様は、ご自身の環境に最適な周期でキーとシークレットを定期的にローテーションすることが推奨されます。Azureにおけるキーとシークレットの考慮事項については、こちらの記事を参照してください。
- Azure サービスのシークレット管理に関するガイダンスを確認する。
- GitHub Actionsのセキュリティ強化に関する GitHub のベスト プラクティスを確認する。
- GitHub リポジトリにおいて、公開する必要がない限り、非公開に設定されていることを確認する。
- Azure Pipelines のセキュリティに関するガイダンスを確認する。
謝辞
マイクロソフトは、Prisma Cloud から報告された調査結果を基に調査する機会を得たことに感謝し、マイクロソフトバグ報奨金プログラム の条件の下で安全なセキュリティ研究を実践してくれたことに感謝します。私たちは、すべての研究者がCVD (Coordinated Vulnerability Disclosure : 協調的脆弱性開示) の下でベンダーと協力し、セキュリティ研究を実施する際に顧客データに影響を与えないよう、侵入テストの実施規則を遵守することを推奨します。
Prisma Cloud Blog on Azure CLI Leakage and Problematic Usage Patterns