LINUX.ORG.RU
ФорумTalks

Уязвимость в пакетном менеджере APT, позволяющая подменить загружаемый пакет

 , ,


0

0

Уязвимость в пакетном менеджере APT, позволяющая подменить загружаемый пакет.

В пакетном менеджере APT выявлена уязвимость (CVE-2019-3462), позволяющая злоумышленнику инициировать подмену устанавливаемого пакета, если атакующий получил контроль за зеркалом репозитория или способен вклиниться в транзитный трафик между пользователем и репозиторием (MITM-атака). Проблему выявил исследователь безопасности Max Justicz, известный обнаружением уязвимостей в пакетном менеджере APK (Alpine) и репозиториях Packagist, NPM и RubyGems.

Проблема вызвана некорректной проверкой полей в коде обработки HTTP-редиректов, что позволяет атакующему подставить собственное содержимое в данные, передаваемые в рамках HTTP-сеанса (по умолчанию Debian и Ubuntu используют при обращении к репозиторию HTTP, а не HTTPS, полагая, что достаточно цифровой подписи метаданных и проверки соответствия размера пакета).

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

Для загрузки данных из репозитория APT запускает дочерний процесс с реализацией конкретного транспорта и организует взаимодействие с этим процессом при помощи простого текстового протокола с разделением команд пустой строкой. Суть проблемы в том, что обработчик транспорта HTTP при получении от HTTP-сервера ответа с заголовком «Location:» запрашивает у родительского процесса подтверждение редиректа, целиком передавая содержимое этого заголовка. Из-за отсутствия чистки передаваемых спецсимволов, атакующий может указать в поле «Location:» значение, содержащее перевод строки (например, «Location: /payload%0A%0A201%20URI%20Done...»).

Так как данное значение будет декодировано и передано через канал связи с родительским процессом, атакующий имеет возможность симулировать иной ответ от обработчика транспорта HTTP и после блока «103 Redirect» подставить фиктивный блок «201 URI Done» с сопутствующими фиктивными метаданными. Например, если при запросе пакета «cowsay_3.03+dfsg2-3_all.deb» атакующий подставит ответ с «Location: /payload%0A%0A201%20URI%20Done%0AURI%3A%20http%3A//deb.debian.org ... Checksum-FileSize-Hash%3A%2020070%0A», такая подстановка приведёт к передаче родительскому процессу следующего блока данных:


Взято из группы *GNU/Linux Arch|Debian|Antergos|Ubuntu|Mint* в vk
Ссылки на первоисточники смотрите там.
Новость на opennet
И ещё: Майкл Библь Systemd

П.С. мало того что deb.debian.org перенаправляет на автоматически определяемые зеркала, так ещё и security.debian.org при попытке указать https выдаёт сообщение о ошибке.
(Это я сейчас у себя apt-transport-https поставил и запустил обновление системы)

★★★★★

Последнее исправление: Deleted (всего исправлений: 4)

А как предлагается накатывать абдейт на дырявый apt, неужели через дырявый apt? А если вручную накатывать скачанный через надёжный канал связи обновлённый apt — не сломает ли он дерево зависимостей в apt и не снесёт ли он полсистемы вместе с apt?

h578b1bde ★☆
()
Последнее исправление: h578b1bde (всего исправлений: 1)
Ответ на: комментарий от h578b1bde

А что мешает накатить и всё дерево зависимостей через тот же надёжный канал?

aureliano15 ★★
()
Ответ на: комментарий от h578b1bde

абдейт на дырявый apt, неужели через дырявый apt

dpkg -i имяПакета

А если вручную накатывать скачанный через надёжный канал связи обновлённый apt — не сломает ли он дерево зависимостей в apt и не снесёт ли он полсистемы вместе с apt?

А без разницы как скачать - если при апдейте ломается дерево и сносится полсистемы то это в любом случае произойдет. Apt он за зависимостями следит, а не за тем что там в пакете.

micronekodesu ★★★
()
Ответ на: комментарий от h578b1bde

apt update -o Acquire::http::AllowRedirect=false
apt upgrade -o Acquire::http::AllowRedirect=false

Polugnom ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.