Podatność w containerd pozwala na ominięcie zabezpieczenia Kubernetes runAsNonRoot, gdy kontener jest uruchamiany z dyrektywą User zawierającą dużą liczbę, której nie da się sparsować jako 32-bitowa liczba całkowita. W efekcie kontener może działać z uprawnieniami roota (UID 0), mimo że polityka powinna temu zapobiegać.
▸ Pokaż oryginał (EN)
containerd is an open-source container runtime. In versions prior to 1.7.32, 2.0.9, 2.2.4 and 2.3.1, containers launched with a numeric User directive that cannot be parsed as a 32-bit integer are incorrectly treated as a username, leading to runAsNonRoot evasion. If a crafted image provides an /etc/passwd file mapping this large numeric string to root, the container ultimately runs as root (UID 0). This allows the Kubernetes runAsNonRoot restriction to be bypassed, causing unexpected behavior for environments that require containers to run as a non-root user. This issue has been fixed in versions 1.7.32, 2.0.9, 2.2.4 and 2.3.1.
Gdy dyrektywa User w konfiguracji kontenera zawiera wartość numeryczną przekraczającą zakres 32-bitowej liczby całkowite, containerd błędnie traktuje ją jako nazwę użytkownika zamiast jako identyfikator UID. Spreparowany obraz może dostarczyć plik /etc/passwd, w którym taka duża wartość numeryczna jest odwzorowana na konto root. W rezultacie containerd uruchamia proces kontenera jako UID 0, czyli root, omijając mechanizm runAsNonRoot.
Atakujący kontrolujący obraz kontenera może doprowadzić do uruchomienia kodu z uprawnieniami roota wewnątrz kontenera, omijając politykę runAsNonRoot wymuszoną przez Kubernetes. Może to prowadzić do privilege escalation oraz naruszenia integralności i poufności danych dostępnych z poziomu kontenera.
Należy zaktualizować containerd do wersji 1.7.32, 2.0.9, 2.2.4 lub 2.3.1 zgodnie z używaną gałęzią produktu. Szczegóły dostępne w referencjach producenta: https://github.com/containerd/containerd/security/advisories/GHSA-fqw6-gf59-qr4w
containerd w wersjach wcześniejszych niż 1.7.32, 2.0.9, 2.2.4 oraz 2.3.1
CVSS:4.0/AV:L/AC:L/AT:P/PR:N/UI:P/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:XLinuxfoundation Containerd
APPLinuxfoundation1.7.27 – 1.7.32 (bez)2.0.4 – 2.0.9 (bez)2.1.0 – 2.2.4 (bez)2.3.0 – 2.3.1 (bez)
Powiązane podatności
containerd CRI plugin: brak walidacji etykiet obrazu umożliwia RCE na hoście
containerd: nieautoryzowane wstrzyknięcie CDI przez metadane checkpoint
containerd: odczyt dowolnego pliku hosta przez niezwalidowany symlink w checkpoint
containerd is an open-source container runtime. Versions 0.1.0 through 1.7.28, 2.0.0-beta.0 through 2.0.6, 2.1...
containerd is a container runtime. A time-of-check to time-of-use (TOCTOU) vulnerability was found in containe...