Zranitelnost v runc, která umožňuje uniknout z kontejnerů Docker a Kubernetes

V nástrojích pro spuštění izolovaných kontejnerů runc, používaném v Dockeru a Kubernetes, byla nalezena zranitelnost CVE-2024-21626, která umožňuje přístup k souborovému systému hostitelského prostředí z izolovaného kontejneru. Během útoku může útočník přepsat některé spustitelné soubory v hostitelském prostředí a tím dosáhnout provedení svého kódu mimo kontejner. V runtime crun a youki, které používají runc, stejně jako v LXC, problém neexistuje. Zranitelnost byla odstraněna v verzi runc 1.1.12.

V případě použití nástrojů Docker nebo Kubernetes může být útok proveden připravou speciálně zformátovaného obrazového kontejneru, po jehož nainstalování a spuštění lze z kontejneru získat přístup k externímu souborovému systému. Při použití Dockeru je možné zneužití prostřednictvím speciálně zformátovaného Dockerfile. Zranitelnost může být také zneužita v případě spuštění procesů v kontejneru pomocí příkazu „runc exec“ prostřednictvím propojení pracovního adresáře s prostorovým jmenem hostitelského prostředí.

Zranitelnost je způsobena únikem vnitřních souborových descriptorů. Před spuštěním kódu uvnitř kontejneru se v runc uzavírají všechny souborové deskriptory pomocí příznaku O_CLOEXEC. Nicméně po následném provedení funkce setcwd() zůstává otevřený souborový deskriptor, který odkazuje na pracovní adresář a pokračuje v dostupnosti po spuštění kontejneru. Bylo navrženo několik základních scénářů útoku na hostitelské prostředí pomocí zbývajícího souborového deskriptoru.

Například útočník může v obraze kontejneru uvést parametr process.cwd, který odkazuje na „/proc/self/fd/7/“, což povede k propojení pracovního adresáře k procesu pid1 v kontejneru, který se nachází v prostoru montování hostitelského prostředí. Tímto způsobem lze v obraze kontejneru nakonfigurovat spuštění „/proc/self/fd/7/../../../bin/bash“ a prostřednictvím provedení shell skriptu přepsat obsah „/proc/self/exe“, který odkazuje na hostující kopii /bin/bash.

Jiný typ útoku umožňuje útočníkovi, který je omezen uvnitř kontejneru, získat přístup k adresáři hostitelského prostředí, pokud jsou v daném kontejneru spouštěny privilegované procesy pomocí příkazu „runc exec” s volbou „—cwd”. Útočník může změnit cestu spouštěného procesu na symbolický odkaz ukazující na „/proc/self/fd/7/” a dosáhnout otevření „/proc/$exec_pid/cwd” pro přístup k souborovému systému na straně hostitele. Útočník může také dosáhnout přepsání spustitelných souborů na straně hostitelského prostředí tím, že spustí spustitelný soubor z hostitelského prostředí („/proc/self/fd/7/../../../bin/bash”) a následně přepíše soubor „/proc/$pid/exe”, který odkazuje na spuštěný soubor.

Kromě toho bylo v komponentách nástroje Docker identifikováno dalších pět zranitelností:

  • CVE-2024-23651 — závodní podmínka v balíčku BuildKit, používaném v Dockeru k převodu zdrojového kódu na sestavovací artefakty. Zranitelnost je způsobena použitím jedné sdílené montážní přípojky s cache v paralelně prováděných etapách sestavení („—mount=type=cache,source=”), což umožňuje přístup k souborům v hostitelském prostředí z montovaného kontejneru při zpracování speciálně navrženého Dockerfile. Zranitelnost byla odstraněna ve verzi BuildKit 0.12.5.
  • CVE-2024-23652 — chyba při odstraňování prázdných souborů vytvořených pro montážní přípojku při použití volby „—mount” umožňuje odstranit soubor mimo kontejner při zpracování speciálně navrženého Dockerfile. Zranitelnost byla odstraněna ve verzi BuildKit 0.12.5.
  • CVE-2024-23653 — chyba v implementaci API v BuildKit umožňuje provádět kontejner s vyššími oprávněními, bez ohledu na stav nastavení security.insecure. Zranitelnost byla odstraněna ve verzi BuildKit 0.12.5.
  • CVE-2024-23650 — škodlivý klient nebo frontend BuildKit může způsobit havárii na pozadí běžícího procesu BuildKit. Zranitelnost byla odstraněna ve verzi BuildKit 0.12.5.
  • CVE-2024-24557 — možnost otravy cache v Moby, komponentě pro stavbu specializovaných systémů kontejnerové izolace. Při zpracování speciálně navrženého obrazu kontejneru je možné vložit do cache data, která mohou být použita v následujících fázích sestavení. Zranitelnost byla odstraněna ve verzích Moby 25.0.2 a 24.0.9.

Zdroj: opennet.ru

Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery 🔥 Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery | ProHoster