Akamai Technologiesはこのほど、「What a Cluster: Local Volumes Vulnerability in Kubernetes|Akamai」において、オープンソースのコンテナオーケストレーションシステム「Kubernetes」に脆弱性を発見したとしてその詳細を公開した。この脆弱性はすでに修正されている。

  • What a Cluster: Local Volumes Vulnerability in Kubernetes|Akamai

    What a Cluster: Local Volumes Vulnerability in Kubernetes|Akamai

Kubernetesの脆弱性「CVE-2023-5528」

発見された脆弱性は「CVE-2023-5528」として追跡されており、その深刻度は重要(Important)と評価されている。この脆弱性を悪用されると、Kubernetesクラスタ内のすべてのエンドポイントにおいて、SYSTEM権限を使用してリモートから任意のコマンドを実行される可能性がある。なお、この脆弱性を悪用するには、クラスタに悪意のあるYAMLファイルを適用する必要がある。

YAMLはデータやオブジェクトを文字列にシリアライズするデータ形式。類似のものではJSONがある。Kubernetesではさまざまなオブジェクトの構造をYAML形式で指定する。永続ボリューム(persistentVolumes)の作成においてもYAMLファイルを使用するが、このときに指定するローカルパス(local.path)の処理に脆弱性が発見された。

Kubernetesは永続ボリュームの作成時にローカルパスへのシンボリックリンクを作成する。このとき「cmd.exe」から「mklink」コマンドを呼び出すことでシンボリックリンクを作成していた。そのため、ローカルパスを「パス\&コマンド&&\」のように指定することで、シンボリックリンクの作成と同時に任意のコマンドを実行させることが可能だった。

現在はシンボリックリンクを作成する関数(os.Symlink)を利用することで、この脆弱性を回避している。また、この脆弱性はWindowsのcmd.exeコマンドを使用するため、Windowsノードに対してのみ有効。それ以外のノードは影響を受けない。

対策

この脆弱性の影響を受ける製品およびバージョンは次のとおり。

  • kubelet v1.8.0およびこれ以降かつ修正前のバージョンまで

脆弱性を修正した製品およびバージョンは次のとおり。

  • kubelet v1.28.4およびこれ以降のバージョン
  • kubelet v1.27.8およびこれ以降のバージョン
  • kubelet v1.26.11およびこれ以降のバージョン
  • kubelet v1.25.16およびこれ以降のバージョン

Akamai Technologiesはこの脆弱性の影響を回避するため、該当する製品を運用している管理者に対して速やかにアップデートを実施することを推奨している。また、アップデートを実施できない管理者向けに、攻撃を検出してブロックするOPA(Open Policy Agent)ルールを公開しており、必要に応じて活用することが望まれている。