/ categories / Технологии / @informhardening / post #238
2086

linux #обновления #exploit

Подделка пакетов в APT

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

Для загрузки данных из репозитория APT запускает дочерний процесс. Взаимодействие между родительским и дочерним процессом происходит с помощью обмена текстовыми командами и данными. Когда загрузка завершена, дочерний процесс отправляет сообщение с уже посчитанными хешами и размером пакета подобное такому:
201 URI Done
URI: http://deb.debian.org/debian/pool/main/c/cowsay/cowsay3.03+dfsg2-3all.deb
Filename: /var/cache/apt/archives/partial/cowsay3.03+dfsg2-3all.deb
Size: 20070
Last-Modified: Tue, 17 Jan 2017 18:05:21 +0000
MD5-Hash: 27967ddb76b2c394a0714480b7072ab3
MD5Sum-Hash: 27967ddb76b2c394a0714480b7072ab3
SHA256-Hash: 858d5116a60ba2acef9f30e08c057ab18b1bd6df5ca61c233b6b7492fbf6b831
Checksum-FileSize-Hash: 20070

В тех случаях, когда дочерний процесс получает от репозитория редирект HTTP, он передает родительскому сообщение следующего вида:
103 Redirect
URI: http://deb.debian.org/debian/pool/main/c/cowsay/cowsay3.03+dfsg2-3all.deb
New-URI: http://example.com/new-uri

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

Проблема получила идентификатор CVE-2019-3462 и исправлена в версии 1.4.9 APT. Обновленная версия уже доступна в репозиториях Ubuntu и Debian.

Статья исследователя, включающая еще размышления на тему отключения редиректов и предпочтения HTTPS: https://justi.cz/security/2019/01/22/apt-rce.html


07:07 31.01.19
@informhardening
1478 +1

Практическое применение безопасности @Li11ian