runc において、コンテナからのエスケープを可能にする脆弱性(CVE-2024-21626)が発見されました。攻撃者はこの脆弱性を悪用してコンテナからエスケープし、ホストのファイルシステムにアクセスしたり、外部バイナリを実行したりすることが可能です。この脆弱性は、できるだけ早期に対応してください。
影響範囲
ACK Edge クラスターのうち、バージョン 1.20、1.22、1.24、または 1.26 を実行しており、かつ containerd ランタイムバージョンが 1.5.13 または 1.6.20 のもの。その他のバージョンには影響しません。
ノードプール ページで、対象のノードプール ID をクリックします。その後、基本情報 タブをクリックして、ノードプールのランタイムおよびランタイムバージョンを確認します。
-
新規に作成されたクラスターおよび既存クラスター内の新規ノードは、すでにアップグレード済みであり、本脆弱性の影響を受けません。
-
Docker ランタイムは、本脆弱性の影響を受けません。
対応ソリューション
修正スクリプト
影響を受けるノードに対して、以下のスクリプトをノード上で実行します。
クラスターおよびアプリケーションの安定性を確保するため、影響を受けるノードへの修正適用は、グレイスケールデプロイメントを用いてバッチ単位で実施してください。全ノード一括適用は行わないでください。
-
パブリックネットワーク経由アクセスノード
wget -qr https://ack-edge-cn.oss-rg-china-mainland.aliyuncs.com/runc-edge-cve.sh -O /tmp/runc-cve.sh && bash /tmp/runc-cve.sh -
専用回線経由アクセスノード
コマンド内でクラスターのリージョンを指定します。
export REGION=cn-hangzhou; wget -qr "https://aliacs-k8s-${REGION}.oss-${REGION}-internal.aliyuncs.com/public/pkg/edge/runc-edge-cve-internal.sh" -O /tmp/runc-cve.sh && bash /tmp/runc-cve.sh
期待される出力
-
以下の出力が表示された場合、現在の環境には CVE 脆弱性が存在せず、システムに変更は加えられていません。この出力は無視して構いません。
runc version is low, no cve, is safe -
以下の出力が表示された場合、環境に脆弱性が存在し、置き換えによる修正が完了しています。このシナリオでは、すべてのノードプールが脆弱性の影響を受ける可能性が極めて高くなります。グレイスケールデプロイメントを用いてノード単位で修正を適用し、サービスの状態をモニターしてください。
cve is fixed...ok
バージョン情報
修正後に runc ツールのバージョン情報を取得するには、以下のコマンドを実行します。
runc --version | grep commit | awk -F "-g" '{print $2}'
期待される出力:
390c7001-
修正スクリプトは、runc のバージョンを変更またはアップグレードしません。
-
この runc バージョンは ACK が保守管理しており、コミュニティ版の影響範囲内に含まれますが、脆弱性は既に 修正済み です。
ロールバック計画
適用後の動作が想定と異なる場合は、以下のコマンドをノード上で実行してロールバックし、runc を元のバージョンに復元できます。
runc_path=$(command -v runc)
cp -f ${runc_path}_bak ${runc_path}