A severe vulnerability affecting the CRI-O container engine for Kubernetes could be exploited to escape the container and gain root access to the host, CrowdStrike reports.
CRI-O is a lightweight container runtime for Kubernetes with support for OCI (Open Container Initiative) compatible runtimes.
Tracked as CVE-2022-0811 (CVSS score of 8.8), the vulnerability exists due to the lack of proper validation for kernel parameters passed to the pinns utility. The issue was introduced in CRI-O version 1.19, when sysctl support was added to the container engine.
Referred to as cr8escape, the security hole could be exploited by an attacker to “escape from a Kubernetes container and gain root access to the host and be able to move anywhere in the cluster,” CrowdStrike said.
Exploitation requires rights to deploy a pod on a Kubernetes cluster that uses the CRI-O runtime.
In addition to malware execution, the security defect could allow an attacker to perform other actions on the host, including data exfiltration and lateral movement across pods.
According to CrowdStrke, which has published proof-of-concept (PoC) code targeting the flaw, the potential impact of this vulnerability is widespread, given the broad, default use of CRI-O by many platforms. Thus, users are advised to update CRI-O immediately, to prevent potential attacks.
The flaw was resolved with the release of CRI-O versions 1.22.3, 1.21.6, 1.20.7, and 1.19.6.
“This version contains a fix to a critical security vulnerability, CVE-2022-0811. Users are encouraged to upgrade to this version to protect against this vulnerability,” the CRI-O team notes for each of these iterations.
Mitigation steps include blocking pods that contain sysctl settings with values containing “+” or “=”, blocking all sysctls, or employing a pinns wrapper to strip the “-s” option – thus preventing pods from modifying kernel parameters. Although not recommended, a downgrade to CRI-O version 1.18 or earlier could also prevent exploitation.