Уязвимост в Docker, която ви позволява да избягате от контейнера

В Инструментариум за управление на изолирани Linux Docker контейнери идентифицирани уязвимост (CVE-2018 15664-), което при определен набор от обстоятелства ви позволява достъп до хост средата от контейнер, ако имате възможност да стартирате вашите изображения в системата или с достъп до работещ контейнер. Проблемът се появява във всички версии на Docker и остава нерешен (предложен, но все още не е приет, кръпка, който реализира окачването на контейнера при извършване на операции с FS).

Уязвимостта позволява файловете да бъдат извлечени от контейнер в произволна част от файловата система на хост системата при изпълнение на командата „docker cp“. Извличането на файлове се извършва с root права, което прави възможно четенето или записването на всякакви файлове в хост средата, което е достатъчно, за да получите контрол върху хост системата (например можете да презапишете /etc/shadow).

Атаката може да бъде извършена само когато администраторът изпълни командата „docker cp“, за да копира файлове в или от контейнера. По този начин нападателят трябва по някакъв начин да убеди администратора на Docker за необходимостта от извършване на тази операция и да предвиди пътя, използван при копиране. От друга страна, атака може да бъде извършена, например, когато облачните услуги предоставят инструменти за копиране на конфигурационни файлове в контейнер, изграден с помощта на командата “docker cp”.

Проблемът е причинен от грешка в приложението на функцията Следвайте SymlinkInScope, който изчислява абсолютния път в основната файлова система въз основа на относителния път, като взема предвид разположението на контейнера. Докато изпълнявате командата "docker cp", краткосрочен състезателно състояние, в който пътят вече е проверен, но операцията все още не е извършена. Тъй като копирането се извършва в контекста на основната файлова система на хост системата, в рамките на определен период от време можете да успеете да замените връзката с друг път и да инициирате копиране на данни на произволно място във файловата система извън контейнера.

Тъй като времевият прозорец за възникване на състояние на състезание е силно ограничен в подготвен експлоатационен прототип При извършване на операции за копиране от контейнер беше възможно да се постигне успешна атака в по-малко от 1% от случаите при циклична замяна на символна връзка в пътя, използван в операцията за копиране (успешната атака беше извършена след приблизително 10 секунди опити за непрекъснато копиране на файла в цикъл с командата „docker cp“).

Чрез извършване на операция за копиране в контейнер можете да постигнете повторяема атака за презаписване на файлове на хост системата само с няколко итерации. Възможността за атака се дължи на факта, че при копиране в контейнер се използва концепцията „chrootarchive“, според която процесът archive.go извлича архива не в chroot на корена на контейнера, а в chroot на родителска директория на целевия път, контролирана от атакуващия, и не спира изпълнението на контейнера (chroot се използва като знак за използване на условията на състезание).

Източник: opennet.ru

Добавяне на нов коментар