CVE Vulnerabilities

CVE-2022-29162

Incorrect Default Permissions

Published: May 17, 2022 | Modified: Nov 07, 2023
CVSS 3.x
7.8
HIGH
Source:
NVD
CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
CVSS 2.x
4.6 MEDIUM
AV:L/AC:L/Au:N/C:P/I:P/A:P
RedHat/V2
RedHat/V3
5.6 LOW
CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:L/I:L/A:L
Ubuntu
LOW

runc is a CLI tool for spawning and running containers on Linux according to the OCI specification. A bug was found in runc prior to version 1.1.2 where runc exec --cap created processes with non-empty inheritable Linux process capabilities, creating an atypical Linux environment and enabling programs with inheritable file capabilities to elevate those capabilities to the permitted set during execve(2). This bug did not affect the container security sandbox as the inheritable set never contained more capabilities than were included in the containers bounding set. This bug has been fixed in runc 1.1.2. This fix changes runc exec --cap behavior such that the additional capabilities granted to the process being executed (as specified via --cap arguments) do not include inheritable capabilities. In addition, runc spec is changed to not set any inheritable capabilities in the created example OCI spec (config.json) file.

Weakness

During installation, installed file permissions are set to allow anyone to modify those files.

Affected Software

Name Vendor Start Version End Version
Runc Linuxfoundation * 1.1.2 (excluding)
Red Hat Enterprise Linux 8 RedHat container-tools:rhel8-8070020220929222448.39077419 *
Red Hat Enterprise Linux 8 RedHat container-tools:4.0-8070020220830101436.39077419 *
Red Hat Enterprise Linux 9 RedHat runc-4:1.1.4-1.el9 *
Red Hat OpenShift Container Platform 4.11 RedHat runc-3:1.1.2-1.rhaos4.11.el8 *
Runc Ubuntu bionic *
Runc Ubuntu devel *
Runc Ubuntu esm-apps/xenial *
Runc Ubuntu focal *
Runc Ubuntu impish *
Runc Ubuntu jammy *
Runc Ubuntu kinetic *
Runc Ubuntu lunar *
Runc Ubuntu trusty *
Runc Ubuntu upstream *
Runc Ubuntu xenial *

Potential Mitigations

  • Compartmentalize the system to have “safe” areas where trust boundaries can be unambiguously drawn. Do not allow sensitive data to go outside of the trust boundary and always be careful when interfacing with a compartment outside of the safe area.
  • Ensure that appropriate compartmentalization is built into the system design, and the compartmentalization allows for and reinforces privilege separation functionality. Architects and designers should rely on the principle of least privilege to decide the appropriate time to use privileges and the time to drop privileges.

References