Уязвимость в Docker позволяет читать и записывать любой файл на хосте
29/05/19
В Docker обнаружена уязвимость неопределенности параллелизма или так называемого «состояния гонки» (race condition). С ее помощью злоумышленник может читать и записывать любой файл на хосте. Проблема затрагивает все версии Docker.
Уязвимость аналогична уязвимости CVE-2018-15664 и позволяет злоумышленнику переписывать пути ресурса после разрешения и до начала работы программы на этом ресурсе (ошибка TOCTOU). Проблема затрагивает функцию FollowSymlinkInScope, уязвимую к базовой атаке TOCTOU. Эта функция используется для безопасного разрешения заданного пути, при этом все процессы обрабатываются таким образом, будто они происходят внутри контейнера Docker.
Разрешенный путь используется не сразу же, а через некоторое время. Образовавшимся «окном» могут воспользоваться злоумышленники и добавить символические ссылки, которые в итоге будут разрешены на хосте с привилегиями суперпользователя. Как пояснил специалист компании Suse Алекса Сараи (Aleksa Sarai), это можно сделать с помощью утилиты 'docker cp', позволяющей копировать контент между контейнером и файловой системой.
Во избежание эксплуатации уязвимости Сараи рекомендовал модифицировать 'chrootarchive' таким образом, чтобы операции архива осуществлялись в безопасной среде, где суперпользователем является контейнер 'rootfs'.
Исследователь также представил два скрипта – один для записи, а другой для чтения. До публикации подробностей о проблеме Сараи в частном порядке уведомил о ней разработчиков Docker.