Podman: уязвимость CVE-2026-19730 в quadlet install --replace сохраняет удалённые директивы доступа
В Podman обнаружена уязвимость CVE-2026-19730 (CVSS 4.2, MEDIUM), связанная с командой `podman quadlet install --replace`. Из-за неточного усечения файла при перезаписи удалённые из Quadlet-файла директивы безопасности (например, AddCapability) могут сохраниться и продолжить применяться. Проблема затрагивает ряд продуктов Red Hat, включая RHEL 8/9/10, OpenShift и Ansible Automation Platform.
Подробности
Команда `podman quadlet install --replace` открывает существующий целевой файл с флагами `O_CREATE|O_WRONLY`, но без `O_TRUNC`. Когда первичная попытка копирования через reflink завершается неудачей — что типично для файловых систем без поддержки reflink, включая многие конфигурации XFS по умолчанию в RHEL, — выполняется откат к `io.Copy` в функции `ReflinkOrCopy`, который производит запись без усечения файла. Если исходный Quadlet больше нового, файл не обрезается, и остаток старого содержимого сохраняется. Команда при этом завершается без каких-либо предупреждений. Уязвимые пути в коде: `pkg/domain/infra/abi/quadlet.go` (строки 338–360, `O_CREATE|O_WRONLY` без `O_TRUNC`) и `vendor/go.podman.io/storage/pkg/fileutils/reflink_linux.go` (строки 12–19, откат к `io.Copy` без усечения). Риск утечки информации отсутствует: пользователь и так имел доступ к заменяемому Quadlet. Однако в большинстве случаев это приводит к недействительным Quadlet-файлам. Опаснее другое: если в конце старого Quadlet находились директивы, связанные с безопасностью, они могут остаться в новом файле. Например, попытка удалить одну строку с параметром `AddCapability` через `podman quadlet install --replace` не сработает — опция продолжит применяться. В случае Volume Quadlets это может привести к сохранению дополнительных монтирований и непреднамеренному раскрытию содержимого внутри контейнеров. При последующем обновлении образа скомпрометированные данные могут попасть к атакующему. Уязвимость затрагивает следующие продукты Red Hat: Red Hat Enterprise Linux 8, 9 и 10; Red Hat Ansible Automation Platform 2; Red Hat Hardened Images; Red Hat OpenShift Container Platform 4; Red Hat OpenShift Dev Spaces; Red Hat OpenShift Virtualization 4; Red Hat Quay 3.Что делать
Рекомендуется обновить Podman до версии, содержащей исправление, как только оно станет доступно в вашем дистрибутиве. До установки обновления следует: - проверять итоговое содержимое Quadlet-файлов после выполнения `podman quadlet install --replace`, особенно если из них удалялись строки с параметрами безопасности (`AddCapability`, монтирования в Volume Quadlets и т. п.); - при необходимости вручную удалять или перезаписывать Quadlet-файлы с предварительным усечением (например, очищая файл перед установкой) либо использовать временный файл и перемещение вместо прямой перезаписи; - контролировать целостность Quadlet-файлов и отслеживать неожиданные изменения директив доступа. Итог: CVE-2026-19730 — уязвимость средней критичности, которая не приводит к прямой утечке данных, но способна сохранить нежелательные привилегии и монтирования в контейнерах. Основная мера защиты — своевременное обновление Podman и проверка содержимого Quadlet-файлов после операций замены.Источник: CVE Project (cvelistV5)
