Три критичні уразливості runC: ризик container escape у Docker та Kubernetes

CyberSecureFox 🦊

У провідному OCI-рантаймі runC, на якому працюють Docker, Kubernetes та інші сумісні платформи, виявлено три критичні уразливості: CVE-2025-31133, CVE-2025-52565 і CVE-2025-52881. Їх експлуатація може дозволити зловмиснику записувати дані на хості з правами root, тобто здійснити container escape і зруйнувати модель ізоляції між контейнером і хост-системою.

Що сталося: три CVE в OCI-рантаймі runC

Про проблеми повідомив інженер SUSE і член ради Open Container Initiative Aleksa Sarai. runC — еталонна реалізація специфікації OCI, що відповідає за низькорівневий запуск контейнерів: створення процесів і просторів імен, монтування файлових систем, конфігурацію cgroups та інші механізми контролю ресурсів і ізоляції.

Які версії вразливі та де вже є виправлення

За опублікованими даними, перша і третя уразливості стосуються усіх версій runC, тоді як друга впливає на збірки, починаючи з 1.0.0-rc3. Патчі включено до релізів runC 1.2.8, 1.3.3 і 1.4.0-rc.3 (та новіших). Рекомендовано терміново оновитися через дистрибутиви, Docker Engine або containerd, які постачають runC як залежність.

Вектор атак і вплив на Docker/Kubernetes

За оцінкою фахівців Sysdig, для успішної експлуатації нападнику зазвичай потрібна можливість запускати контейнери з кастомними параметрами монтування. Такий доступ часто реалізується через шкідливі образи і спеціально підготовлені Dockerfile із небезпечними комбінаціями mount-опцій. Наслідок — потенційний запис на хості з правами root, що напряму загрожує кластерам Kubernetes і вузлам з Docker.

Ознаки експлуатації та що моніторити

Станом на момент публікації повідомлень про активну експлуатацію немає. Водночас команди безпеки мають відстежувати аномалії монтування, підозрілі операції з символьними посиланнями (symlink) та незвичні копіювання між контейнером і хостом — саме такі події часто супроводжують спроби обходу ізоляції.

Як знизити ризики: практичні кроки для DevOps і SecOps

1) Негайне оновлення. Перейдіть на runC 1.2.8/1.3.3/1.4.0-rc.3 або новіші версії. Переконайтеся, що оновлені також Docker Engine, containerd і дистрибутиви Kubernetes, які тягнуть runC транзитивно.

2) Ввімкніть user namespaces. Запускайте контейнери з user namespace, не делегуючи контейнеру root-хоста. Така модель DAC в Unix істотно обмежує доступ до критичних файлів і зменшує площу ескалації.

3) Використовуйте rootless-контейнери. За можливості обирайте rootless-режим. Навіть у випадку компрометації процеси контейнера не матимуть привілеїв на рівні хоста.

4) Обмежте небезпечні політики. Мінімізуйте privileged-контейнери, забороняйте або жорстко контролюйте hostPath-монтування, надлишкові capabilities (зокрема CAP_SYS_ADMIN) і кастомні mount-опції. У Kubernetes застосовуйте Pod Security Admission, профілі seccomp і AppArmor, а також read-only root ФС там, де це можливо.

5) Підвищте спостережуваність. Включіть детектування symlink-операцій і нетипових монтувань у EDR/Runtime Security. Використовуйте підписування образів, верифікуйте ланцюжок постачання (SBOM, підписи артефактів) і обмежуйте запуск образів із недовірених джерел.

Чому це критично для хмар і CI/CD

runC — системоутворювальний компонент більшості контейнерних платформ, тож його уразливості мають ланцюговий ефект. Галузь уже переживала подібні інциденти — достатньо згадати CVE-2019-5736, після якого багато команд переглянули принцип мінімальних привілеїв і підходи до ізоляції. Поточні CVE знову підкреслюють потребу в суворих політиках запуску та безперервному моніторингу у Kubernetes і CI/CD-конвеєрах.

Зволікати з оновленням неприпустимо: встановіть патчі runC, ввімкніть user namespaces, перейдіть на rootless там, де дозволяє архітектура, посильте політики доступу й видимість подій виконання. Чим швидше буде закрито технологічний борг, тим менший ризик успішного container escape і пов’язаних інцидентів у виробничих кластерах.

Залишити коментар

Цей сайт використовує Akismet для зменшення спаму. Дізнайтеся, як обробляються дані ваших коментарів.