Докерын эмзэг байдал нь савнаас зугтах боломжийг олгодог

В инструментарии для управления изолированными Linux-контейнерами Docker тодорхойлсон эмзэг байдал (CVE-2018-15664), которая при определённом стечении обстоятельств позволяет получить доступ к хост-окружению из контейнера при наличии возможности запуска своих образов в системе или при доступе к выполняемому контейнеру. Проблема проявляется во всех версиях Docker и остаётся неисправленной (предложен, но пока не принят, нөхөөс, реализующий приостановку работы контейнера на время выполнения операций с ФС).

Уязвимость позволяет извлечь файлы из контейнера в произвольную часть ФС хост-системы при выполнении команды «docker cp». Извлечение файлов выполняется с правами root, что даёт возможность прочитать или записать любые файлы в хост-окружении, чего достаточно для получения контроля за хост-системой (например, можно переписать /etc/shadow).

Атака может быть совершена только в момент выполнения администратором команды «docker cp» для копирования файлов в контейнер или из него. Таким образом атакующему необходимо каким-то образом убедить администратора Docker в необходимости выполнения этой операции и предугадать используемый при копировании путь. С другой стороны атака может быть совершена, например, при предоставлении облачными сервисами средств для копирования файлов конфигурации в контейнер, построенных с использованием команды «docker cp».

Проблема вызвана недоработкой в применении функции FollowSymlinkInScope, вычисляющей абсолютный путь в основной ФС на основании относительного пути, учитывающего размещение контейнера. В процессе выполнения команды «docker cp» возникает кратковременное состояние гонки, при котором путь уже проверен, но операция ещё не выполнена. Так как копирование производится в контексте основной ФС хост-системы в указанный промежуток времени можно успеть подменить ссылку на другой путь и инициировать копирование данных в произвольное место файловой системы вне контейнера.

Так как временное окно проявления состояния гонки сильно ограничено в подготовленном ашиглалтын прототип при выполнении операций копирования из контейнера удалось добиться проведения успешной атаки в менее 1% случаев при цикличной подмене символической ссылки в пути, используемом в операции копирования (успешная атака была совершена после примерно 10 секунд попыток непрерывно в цикле скопировать файл командой «docker cp»).

При выполнении операции копирования в контейнер можно добиться повторяемой атаки по перезаписи файла в хост-системе всего в несколько итераций. Возможность атаки связана с тем, что при копировании в контейнер применяется концепция «chrootarchive», в соответствии с которой процесс archive.go извлекает архив не в chroot корня контейнера, а в chroot родительского каталога целевого пути, подконтрольного атакующему и не останавливает при этом выполнение контейнера (chroot используется как признак для эксплуатации состояния гонки).

Эх сурвалж: opennet.ru

сэтгэгдэл нэмэх