Argo CD の脆弱性が FIX:Kubernetes アプリから機密情報が漏れてしまう

Argo CD vulnerability leaks sensitive info from Kubernetes apps

2022/02/04 BleepingComputer — Kubernetes へ向けたアプリケーションのデプロイに、数千の組織が使用している Argo CD の脆弱性により、パスワードや API キーなどの機密情報を開示する、攻撃が行われる可能性がある。この、CVE-2022-24348 として追跡されているパス・トラバーサルの欠陥は、Apiiro の Security Research Team により発見されたものであり、特権昇格/情報開示/横方向移動などの、攻撃につながる可能性がある。

脅威アクターたちはターゲットシステムに、悪意の Kubernetes Helm Chart の YAMLファイルをロードすることで、この脆弱性を利用し、他のアプリケーションから機密情報の抽出を可能にしている。下の図は、CVE-2022-24348 を活用した攻撃フローの仕組みを示している。

Source: Apiiro

攻撃を成功させるための前提条件は、アプリケーションを作成または更新する権限を持ち、有効な YAML を含むファイルのフルパスを知っているか、推測できるかという点である。これらの条件を満たすことで、悪意の Helm チャートを作成して、YAML を値ファイルとして消費し、最終的には通常はアクセスできないデータにアクセスできるようになる。

影響と対処法

Argo CD は、世界の何千もの組織で使用されているため、今回の脆弱性の発見は重要であり、開発者と管理者による早急な対応が必要となる。Argo CD の開発者は、悪意の行為者が chart フォルダ以外の Helm valueFiles を使用する可能性を想定し、2019年にリリースされた Ver 1.3.0 で導入された新チェック機構で、この問題に対処しようとした。

しかし、今回 Apiiro が発見したように、リストアップされた valueFiles を URI のように見せかけることで、パストラバーサル対策のチェックをバイパスする方法が存在していた。この特殊なパーサーは、ローカル・ファイルのパスを URI として扱い、HTTP リクエストを受け取ったと仮定して、追加のサニティ・テストを行わずに受け入れる。

Apiiro は、「この reposerver は、モノリシックで決定論的なファイル構造を使用しているため、他の全てのアウト・オブ・バウンドのアプリケーションは、明確で予測可能なフォーマットとパスを持っている。つまり攻撃者は、指定された values.yaml ファイルへの、連結されたダイレクトな呼び出しを組み立てられる。このファイルは、多くのアプリケーションが秘密の値などとして使用している」と説明している。

この影響で、同じリポジトリ上のファイルの内容が公開され、その内容が悪用され、悪意のアクティビティが実行されてしまう。Apiiro は 2022年1月30日に、この問題をベンダーに報告し、ほぼ即座に対応を得ている。

今日、Argo CD は、CVE-2022-24348 の修正を含むセキュリティ・アップデートをリリースし、Ver 2.3.0-rc4 となった。回避策は存在しないため、すべてのユーザーに対して、アップグレードが推奨されている。ベンダー側からの詳細情報については、Argo CD チームが GitHub で公開しているセキュリティ・アドバイザリを参照してほしい。

Argo CD を調べてみたら「Kubernetes 用の宣言型の GitOps Continuous Delivery ツールである。アプリケーションの定義/構成/環境は、宣言型でありバージョン・コントロールされる必要がある。 アプリケーションのデプロイメントとライフサイクルの管理は、自動化され、監査可能で、理解しやすいものである必要がある」と記されていました。また、「Argo CD で実装する Kubernetes のGitOps」という記事も参考になると思います。

%d bloggers like this: