Уязвимость в пакетном менеджере APK, позволяющая удалённо выполнить код в Alpine Linux

Исслeдoвaтeль бeзoпaснoсти Max Justicz, извeстный выявлeниeм уязвимoстeй в рeпoзитoрияx Packagist, NPM и RubyGems, oпубликoвaл инфoрмaцию o нoвoй критичeскoй уязвимoсти в пaкeтнoм мeнeджeрe APK, примeняeмoм в дистрибутивe Alpine Linux (используется за умолчанию для контейнеров Docker). Незащищенность несколько дней назад уже устранена в APK, а чертеж Alpine Linux выпустил обновление 3.8.1, в который-нибудь включено данное исправление. Атакующие, имеющие виртуальность совершить MITM-атаку или исказить пакеты на зеркале, могли переменить загружаемый пользователем apk-пакет и инициировать создавание своего кода в системе c правами root. В Alpine Linux быть доступе к штатным репозиториям по умолчанию далеко не применяется TLS-шифрование канала связи, а используется исключительно верификация целостности и источника пакета по части цифровой подписи. К сожалению подобной проверки оказалось не хватает, так как приводящая к уязвимости неправильность проявляется на стадии распаковки пакета, которая выполняется предварительно проверки цифровой подписи. Суть проблемы в томишко, что через манипуляцию с путями в середке пакета атакующие могут добиться распаковки непроверенного файла в комплексный каталог. Пакет apk представляет собой картотека tar, при распаковке которого файлы один за другим извлекаются в корень с добавлением к имени окончания ".apk-new". В случае несовпадения проверочного хэша распакованные файлы удаляются. Дело проявляется из-за ошибки присутствие обработке символических ссылок. Кроме символической ссылки в пачка можно поместить обычный файл тем а именем "link". Пакетный менеджер попытается выдержать роль его как "link.apk-new", но с данным именем сделано присутствует символическая ссылка, что приведёт к созданию адресуемого по вине ссылку файла "/etc/apk/commit_hooks.d/x". Нет-нет да и apk обнаружит несоответствие пакета проверочному хэшу, дьявол удалит link.apk-new, но файл "/etc/apk/commit_hooks.d/x" останется в системе. В итоге, правонарушитель может переписать любой файл, в волюм числе разместить скрипт в каталог /etc/apk/commit_hooks.d/, скрипты изо которого вызываются перед завершением работы apk, как будто приведёт к выполнению кода до завершения обработки текущего пакета. Подобная характерность может использоваться для скрытия атаки. Изменив держи лету память процесса apk через /proc/pid/mem, атакующий может выхлопотать завершения apk всегда с нулевым кодом возврата, фигли позволяет успешно довести до конца слушание обновления или сборки Docker-контейнера и безлюдный (=малолюдный) вызвать подозрений. Источник: http://www.opennet.ru/opennews/art.shtml?num=49273