Ранливост во runc што овозможува бегство од контејнерите Docker и Kubernetes

Во пакетот алатки runc за водење изолирани контејнери што се користат во Docker и Kubernetes, беше пронајдена ранливост CVE-2024-21626, која овозможува пристап до датотечниот систем на околината на домаќинот од изолиран контејнер. За време на нападот, напаѓачот може да презапише некои извршни датотеки во околината на домаќинот и на тој начин да постигне извршување на неговиот код надвор од контејнерот. Во runtime crun и youki, кои користат runc, како и во LXC, проблемот не се појавува. Ранливоста беше поправена во runc 1.1.12.

Кога користите Docker или Kubernetes алатки, може да се изврши напад со подготовка на специјално дизајнирана слика на контејнер, по чија инсталација и лансирање може да се пристапи до надворешен FS од контејнерот. Кога користите Docker, можно е да работите преку специјално дизајнирана Dockerfile. Ранливоста може да се експлоатира и ако процесите се лансираат во контејнер користејќи ја командата „runc exec“ со врзување на работниот директориум со именскиот простор на околината на домаќинот.

Ранливоста е предизвикана од истекување на внатрешни дескриптори на датотеки. Пред да извршите код во контејнерот, runc ги затвора сите дескриптори на датотеки користејќи го знамето O_CLOEXEC. Меѓутоа, последователните извршување на setcwd() оставаат отворен дескриптор на датотека што укажува на работниот директориум и останува достапен по стартувањето на контејнерот. Предложени се неколку основни сценарија за напад на околината на домаќинот користејќи го преостанатиот дескриптор на датотеката.

На пример, напаѓачот може да наведе параметар process.cwd во сликата на контејнерот што покажува на „/proc/self/fd/7/“, што би резултирало со врзување за процесот pid1 во работниот директориум на контејнерот, кој се наоѓа во околината на домаќинот простор за монтирање. Така, на сликата на контејнерот, можете да го конфигурирате стартувањето на „/proc/self/fd/7/../../../bin/bash“ и, преку извршување на скрипта на школка, да ја презапишете содржината на „/proc/self/exe“, што се однесува на копијата на домаќинот од /bin/bash.

Друга варијанта на напад му дозволува на напаѓачот ограничен во контејнер да добие пристап до директориумот на околината на домаќинот ако привилегирани процеси се извршуваат во наведениот контејнер користејќи ја командата runc exec со опцијата --cwd. Напаѓачот може да ја замени патеката на започнатиот процес со симболична врска што покажува на „/proc/self/fd/7/“ и да постигне отворање на „/proc/$exec_pid/cwd“ за пристап до FS од страната на домаќинот. Напаѓачот исто така може да постигне препишување на извршни датотеки на страната на околината на домаќинот со организирање на стартување на извршната датотека од околината на домаќинот („/proc/self/fd/7/../../../bin/ bash“) и потоа презапишување на датотеката „ /proc/$pid/exe“, што се однесува на датотеката што работи.

Дополнително, идентификувани се уште пет пропусти во компонентите на пакетот алатки Docker:

  • CVE-2024-23651 е состојба на трка во пакетот BuildKit што го користи Docker за конвертирање на изворниот код во артефакти за градба. Ранливоста е предизвикана од употребата на една заедничка точка за монтирање со кеш (“-mount=type=cache,source=”) во истовремено извршените фази на градење, што овозможува, при обработката на специјално дизајнирана Dockerfile во BuildKit, пристап до датотеки во околината на домаќинот од контејнерот за изградба. Ранливоста е поправена во BuildKit 0.12.5.
  • CVE-2024-23652 Грешка при бришење празни датотеки создадени за точка за монтирање при користење на опцијата „--mount“ овозможува бришење на датотека надвор од контејнерот при обработка на специјално изработен Dockerfile. Ранливоста е поправена во BuildKit 0.12.5.
  • CVE-2024-23653 Недостаток во имплементацијата на API во BuildKit дозволува извршувањето на контејнерот да се случува со зголемени привилегии, без оглед на состојбата на поставката security.insecure. Ранливоста е поправена во BuildKit 0.12.5.
  • CVE-2024-23650 Злонамерен клиент или преден BuildKit може да предизвика пад на процесот на BuildKit во заднина. Ранливоста е поправена во BuildKit 0.12.5.
  • CVE-2024-24557 е можно труење со кеш во Moby, компонента за изградба на специјализирани системи за изолација на контејнери. Со обработка на специјално дизајнирана слика на контејнер, можете да ги кеширате податоците што може да се користат во следните чекори за изградба. Ранливоста е поправена во Moby 25.0.2 и 24.0.9.

Извор: opennet.ru

Купете доверлив хостинг за сајтови со DDoS заштита, VPS VDS сервери 🔥 Купете сигурен веб-хостинг со DDoS заштита, VPS VDS сервери | ProHoster