В инструменте Docker Compose обнаружена критическая уязвимость типа path traversal (обход пути), позволяющая злоумышленникам записывать произвольные файлы на хост-системы через специально созданные OCI-артефакты. Уязвимость, получившая идентификатор CVE-2025-62725, была обнаружена в начале октября 2025 года и имеет высокий уровень опасности с оценкой 8.9 по шкале CVSS.
Детали уязвимости
Проблема затрагивает все версии Docker Compose до v2.40.2 и ставит под угрозу миллионы развертываний по всему миру - от сред разработки до корпоративных CI/CD-конвейеров и облачной инфраструктуры. Уязвимость связана с недавно добавленной поддержкой OCI-based Compose артефактов, которая позволяет разработчикам получать и включать файлы Compose из удаленных реестров.
Хотя эта функция улучшает портативность конфигураций, она создала опасный пробел в проверке путей к файлам. Когда Compose обрабатывает удаленные OCI-слои, он доверяет аннотациям, которые указывают, куда должны записываться загруженные файлы. Злоумышленник может создать эти аннотации с последовательностями обхода пути, которые позволяют выйти за пределы предназначенного каталога кэша и записать файлы в любое место на хост-системе.
Особую опасность представляет тот факт, что пользователям не нужно явно запускать контейнеры для активации уязвимости. Кажущиеся безобидными команды, такие как "docker compose ps" или "docker compose config", заставляют Compose получать и реконструировать удаленные OCI-артефакты, автоматически активируя уязвимость без ведома пользователя. Для успешной атаки злоумышленнику достаточно обманом заставить жертву выполнить любую команду Compose в каталоге, содержащем вредоносный файл docker-compose.yaml.
В демонстрационном примере атаки злоумышленник может внедрить свой SSH-ключ в файл authorized_keys целевой системы, получив немедленный удаленный доступ. Это может произойти без запуска каких-либо контейнеров и без явных операций записи со стороны пользователя. Цепочка атаки проста, но чрезвычайно эффективна.
Код, содержащий уязвимость, не нормализовал и не проверял пути перед записью на диск. Это означает, что атакущий мог внедрить вредоносную аннотацию, направляющую Compose к записи файлов в чувствительные системные расположения, такие как SSH-директории, папки конфигурации или другие критические области, где процесс Compose имеет права на запись.
Компания Docker выпустила исправление в версии Docker Compose v2.40.2 и более поздних, которое вводит надлежащую проверку путей. Исправление нормализует и проверяет все пути, полученные из аннотаций, перед их записью на диск, отклоняя любые пути, которые разрешаются за пределами каталога кэша или содержат абсолютные пути.
Организациям, использующим Docker Compose, рекомендуется немедленно обновить инструмент до исправленной версии для предотвращения возможной эксплуатации уязвимости. Особое внимание следует уделить системам, где Docker Compose имеет расширенные права доступа или используется для управления критической инфраструктурой.
Эксперты по кибербезопасности отмечают, что подобные уязвимости в инструментах разработки и развертывания представляют особую опасность, поскольку они могут быть использованы для компрометации не только сред разработки, но и рабочих систем через цепочки поставки программного обеспечения. Регулярное обновление инструментов и мониторинг новых уязвимостей должны стать стандартной практикой для всех организаций, использующих контейнерные технологии.
Временные меры защиты включают ограничение использования удаленных OCI-артефактов до момента обновления и тщательную проверку источников файлов docker-compose.yaml. Пользователям также рекомендуется запускать Docker Compose с минимально необходимыми привилегиями и в изолированных средах, чтобы ограничить потенциальный ущерб в случае успешной эксплуатации уязвимости.
Ссылки
- https://www.cve.org/CVERecord?id=CVE-2025-62725
- https://www.imperva.com/blog/cve-2025-62725-from-docker-compose-ps-to-system-compromise/
- https://github.com/docker/compose/security/advisories/GHSA-gv8h-7v7w-r22q
- https://github.com/docker/compose/commit/69bcb962bfb2ea53b41aa925333d356b577d6176