containerd コミュニティは最近、containerd の Container Runtime Interface(CRI)実装に関連する脆弱性 CVE-2022-31030 を発見しました。この脆弱性により、コンテナー内のプログラムが ExecSync API の呼び出し中に無制限にメモリを消費できるようになり、その結果、コンテナーが実行されているノードの利用可能なすべてのメモリを containerd が消費する原因となります。攻撃者はこの脆弱性を悪用して DoS 攻撃を開始できます。DoS 攻撃は、システムが exec メカニズムを使用してプローブまたはライフサイクルフックを実行するときに開始できます。
CVE-2022-31030 は、中程度の重大度と評価されています。
初回公開日:2022 年 7 月 5 日
更新日:2025 年 5 月 19 日(影響を受ける範囲の説明を絞り込み)
影響を受ける範囲
以下の containerd バージョンが影響を受けます。
≤ V1.5.12
v1.6.0 - v1.6.5
この脆弱性は、以下の containerd バージョンで修正されています。
v1.5.13
v1.6.6
containerd ランタイムを使用するノードプール内のノードのみがこの脆弱性の影響を受けます。
この脆弱性の詳細については、「CVE-2022-31030」をご参照ください。
軽減
クラスター内の既存ノードの containerd バージョンを更新し、信頼できないユーザーからのアプリケーションのデプロイ権限を取り消すには、次の操作を実行します。
kubectl drainコマンドを実行して、更新する必要があるノードをドレインします。systemctl stop kubeletコマンドを実行して、ノード上の kubelet を停止します。systemctl stop containerdコマンドを実行して、ノード上の containerd を停止します。containerd の最新の RPM パッケージをインストールします。
systemctl start containerdコマンドを実行して、containerd を起動します。systemctl start kubeletコマンドを実行して、kubelet を起動します。ノードの containerd バージョンを更新した後、
kubectl uncordonコマンドを実行して、ノードをスケジュール可能状態に変更します。他のノードの containerd バージョンを更新する場合は、手順 2 以降の手順を繰り返します。