Независимый исследователь Макс Юстич (Max Justicz) рассказал об уязвимости менеджера пакетов APT, используемого для загрузки апдейтов в операционной системе Linux и ее дистрибутивах.

Как выяснил специалист, удаленный злоумышленник может перехватить HTTP-запрос, адресованный к зеркалу сервера обновлений, и передать системе собственный набор данных. Разработчик утилиты исправил ошибку в новой версии APT.

Проблема кроется в некорректной обработке HTTP-команды, содержащей поле Location, — она используется для передачи информации о сервере, с которого необходимо получить обновление. Этот параметр включает в себя адрес зеркала и применяется в случае, если скачать апдейт с основного хоста невозможно. При этом в случае редиректа не производится очистка адреса от специальных символов, что позволяет киберпреступнику вызывать перевод строки и добавить функцию окончания сеанса. Юстич обнаружил, что при помощи атаки типа «человек посередине» злоумышленник может внести изменения в передаваемые данные и внедрить в них сведения о собственном ресурсе.

Linux использует для передачи обновлений незащищенное HTTP-соединение и проверяет легитимность полученных файлов только на основании их хэш-сумм. Операционная система сверяет значение идентификаторов MD5 и SHA256 с данными валидных апдейтов, хранящихся в ее базе. Как выяснил исследователь, киберпреступникам достаточно внедрить в ответ на запрос поддельный блок с корректной хэш-последовательностью от другого апдейта, чтобы ОС приняла и выполнила вредоносный пакет.

Выяснив значения необходимых идентификаторов, мошенник способен передать в систему вредоносный вариант апдейта, который будет запущен с root-привилегиями. Результатом эксплуатации бреши может стать перехват управления целевым устройством.

Баг зафиксирован во всех версиях APT начиная с 0.8.15 и зарегистрирован как CVE-2019-3462. ИБ-специалист сообщил о своей находке авторам утилиты. Разработчики залатали брешь в релизе 1.4.9, а создатели Ubuntu и Debian включили обновленный менеджер пакетов в состав стабильных веток своих ОС.

В декабре прошлого года разработчикам нескольких форков Linux пришлось разбираться с еще одной уязвимостью, связанной с ошибкой в сервисной утилите. Баг набора программ Polkit допускал несанкционированное выполнение системных команд пользователем с низкими правами. Как выяснили специалисты, брешь возникла из-за неправильной обработки логина, чей уникальный идентификатор превышал число 2147483646, установленное как максимальное значение целочисленной переменной в Linux.

Категории: Уязвимости