Notice on Fixing the Docker Command Injection Vulnerability (CVE-2019-5736)
Description
Runtimes such as Docker and containerd that sit on top of runC have a security vulnerability. This vulnerability allows attackers to obtain the file descriptor handled in runC of the host and overwrite the host runC binary by leveraging the ability to execute a command as root within a new container with a specific image or an existing container that can be attached with docker exec.
The runC vulnerability CVE-2019-5736 has been fixed in Huawei Cloud CCE.
Type |
CVE-ID |
Severity |
Discovered |
Fixed by Huawei Cloud |
---|---|---|---|---|
Code execution |
High |
2019-02-11 |
2019-02-12 |
For details about CVE-2019-5736, see https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2019-5736.
Impact
Attacker-controlled images implant malicious functions into a malicious dynamic library such as libseccomp.so.2 and let execution commands point to /proc/self/exe.
When runC is performing a dynamic compilation, it loads the dynamic link library from the attacker-controlled container images and consequently the malicious dynamic library is loaded. Running the /proc/self/exe (runC) will execute the malicious program in the malicious dynamic link library. Because the malicious program inherits the file handle opened by runC, runC on the host may be replaced by the file handle.
Then, executing runC-related commands allows for container escape.
The impact of this vulnerability is as follows:
- The runC is the core component of Docker containers and this vulnerability in runC affects most containers. The impact of this vulnerability is often observed in multi-tenant clusters. If multiple users share nodes, any of the users may exploit this vulnerability to control the nodes and attack the entire cluster through penetration.
- CCE
The Kubernetes clusters created by CCE are tenant-specific and cannot be shared by multiple tenants. Therefore, this vulnerability has little impact on Kubernetes clusters.
CCE uses Huawei Docker containers, which are free from this vulnerability because the runC uses static compilation.
- Cloud Container Instance (CCI)
CCI uses Huawei Kata container engine to ensure that multiple containers on a single node are hypervisor isolated. CCI does not use runC containers and therefore this vulnerability does not affect CCI.
Solution
- CCE
The runC vulnerability CVE-2019-5736 has been fixed in Huawei Cloud CCE.
- On-premises Kubernetes or open source container engine
- Upgrade Docker to version 18.09.2. If the current Docker version is an open source version earlier than v17.06, the upgrade may interrupt container services. This is because significant changes (including architectural decoupling and restructuring) were made to open source Docker versions later than 17.06. To minimize the container service downtime, intensively verify the upgrade plan before starting the upgrade and perform a rolling upgrade node by node.
- Upgrade only the runC. For Docker versions 17.06 and earlier, upgrading runC will not interrupt services. Currently, runC has no vulnerability-fixing version. If you want to upgrade runC separately, you can compile it by yourself.
- The official Docker patch uses the system call provided by Linux kernel v3.17 or later. The patch may not work with certain old versions of Linux kernel. If the patch does not work, upgrade Linux kernel to v3.17 or later. The security patch provided by Huawei Cloud CCE evolves out of the official Docker patch and has been verified to work well on multiple versions of Linux kernel.
Feedback
Was this page helpful?
Provide feedbackThank you very much for your feedback. We will continue working to improve the documentation.See the reply and handling status in My Cloud VOC.
For any further questions, feel free to contact us through the chatbot.
Chatbot