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)

если атакующий получил контроль за зеркалом репозитория или способен вклиниться в транзитный трафик между пользователем и репозиторием (MITM-атака)

Это про обход системы подписей пакетов что ли?

praseodim ★★★★★
()

За такие информативные названия тем даже в толксах стоит по мордасам.

dk-
()
Ответ на: комментарий от torvn77

Ща проверил, в дебиане прилетело обновление безопасности для apt. Так что тема реальная, действительно уязвимость. Не знаю правда насколько она реальная для эксплуатации «на природе».

praseodim ★★★★★
()

сколько этих уязвимостей было, то ли ещё будет...

только конечным пользователям — админам, от этого легче не стало, система через чур усложнена чтобы контролировать все происходящие процессы, и чем глубже — тем больше её усложняют. привет, повсеместное внедрение systemd! я думаю это тупо заговор, с целью иметь линуксоидов во все дыры.

поэтому только CRUX, ребята. я точно знаю, что имею BIOS/UEFI -> Linux (EFI_STUB) -> /sbin/init -> /etc/inittab -> /etc/rc.multiuser (rc.conf: for daemon in ${SERVICES[@]}) -> /etc/rc.local. и всё. и больше ничего. дальше демоны, за которые я сам отвечаю, а не горе-мейнтейнеры.

и делая каждый раз prt-get sysup, я точно знаю с каких источников мне прилетают пакеты, если только на уровне BGP мне не подменили маршрутизацию, но это уже проблемы будут не только у меня.

а вот все эти Debian, CentOS, Arch Linux, их всё усложняют-усложняют, а толку? если очередная детская уязвимость супер-дупер продуманном пакетном менеджере. пфф.

щя вот на Gentoo подсел, тоже крутая штука.

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

поэтому только CRUX, ребята.

задумываюсь о том чтобы переходить на Gentoo, более монструозный комбайн по сравнению с CRUX, ведь CRUX не может жить вечно в таком виде, в каком его задумывали авторы, как в случае с firefox «обстоятельства так сложились»(с), в конце концов, сами авторы не вечны. а потом опять начнётся какая-нибудь свистопляска а-ля «versus systemd», которая в других дистрибутивах уже устаканилась лет дцать назад (к тому моменту). в этом смысле Gentoo жирный мамонт, который существует пару десятков лет, у Gentoo огромное коммунити и вытворять что хочу там попросту не дадут (наверное).
CRUX безусловно всё ещё клёвый дистрибутив чтобы лепить из него что хочешь, но звоночек как говорится прозвенел.


щя вот на Gentoo подсел, тоже крутая штука.

Теперь можно наконец забыть про nano, но не тут-то было. emerge -ac говорит что nano теперь orphan и больше никому не нужен, но при этом тут-же предупреждает что его удаление может сломать систему.
Это конечно здорово, но тут прям какое-то деление на ноль. EDITOR/VISUAL=/usr/bin/vi, nano никем не используется, почему система по прежнему говорит что его нельзя безопасно удалить? Хоть и предлагает это сделать.
not-a-bug, но это следует пофиксить, однако по запросу «nano» в багтрекере gentoo такой проблемы не нашёл, но такая проблема и такой вопрос возник не у меня одного
И кстати, теперь вспомнил за что так не люблю все эти дистрибутивы: у всех мейнтейнеров своё видение какие зависимости нужны к пакетам, какие нет.
К сожалению, Gentoo — это не про минимализм. Установка одного безобидного пакета приводит к дополнительной установке всякого мусора, которую не всегда можно разрулить USE-флагами, как в случае с minimal, но даже в этом случае USE-флаги не являются панацеей т.к. не все пакеты нужны в «minimal». В итоге что имеем, USE="-*", а дальше через package.use каждый пакет настраиваем руками, кхе-кхе.

Ну ок.

h578b1bde ★☆
()

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

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

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

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

да нормалды всё! только приходится считаться с мнением других, кхе-кхе. надо понимать, что Gentoo это дистрибутив, который в конечном счёте предоставляет уже готовое, рабочее окружение. а это значит, что кто-то принял некоторые решения за тебя.

USE-флаги помогают разрулить многое, но не всё. вот например, ставлю кеды в данный момент. plasma-desktop тянет за собой vlc плеер. vlc не нужен для работы кед, а вот мейнтейнер решил, что минимальному десктопу просто необходим vlc. или w3m, ну нафига... ладно.

ставлю кеды последовательно, добавляя по одному USE-флагу. увидел жирнича вроде vlc — поставил сам, вручную, чтобы оно записало его в /var/lib/portage/world, чтоб потом уже выпилить из системы. ну так проще, чем переписывать ebuild'ы.

CRUX никому не нужен, маленькое комунити, пустые репозитории. зато система как LFS, предоставляет полный контроль. она будет стоять на критичных узлах вроде шлюзов в интернет, ну а дальше уже можно Gentoo впихнуть: не менее надёжную, но более удобную в настройке, лишь немного жертвуя гибкостью настройки.

// а на винду не смотри)) просто в зале сижу, а вся подкроватная инфраструктура в сычевальне находится.

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

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

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

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

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

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

CRUX никому не нужен

Да и гента твоя в целом тоже, и lfs в общем то кроме как поиграться больше задач не имеет.

она будет стоять на критичных узлах вроде шлюзов в интернет

На критичных узлах ставят специальные железки. Ну или если софтовое, то точно не чью-то необкатанную персональную поделку.

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

персональную поделку

в этом кроется большое заблуждение, что называя CRUX «поделкой» — вы называете «поделкой» сам GNU/Linux.

возьмите linux + bash + coreutils + iproute2 + iptables, разве у вас повернётся язык называть это решетом? ну, если будут уязвимости, их исправят, впрочем проблемы будут не только у вас, они будут у всех, но суть, что такой минимальный набор пакетов не может предвещать ничего плохого.

ну а теперь добавьте к этому ещё архиватор tar, и... вы получаете CRUX ;) вот что такое CRUX.

а что же до железяк. MikroTik. они используют ядро Linux. не вижу оснований не доверять ключевые узлы Linux'у, а значит и CRUX'у.

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

называя CRUX «поделкой» — вы называете «поделкой» сам GNU/Linux

Вы не сможете поставить и использовать GNU/Linux на ПК, вы поставите дистрибутив - ядро и софт. Есть дистрибутивы-конструкторы, типа CRUX, генты и прочего LFS, где вы самостоятельно можете воротить вообще все, что угодно, и именно это и является персональными поделками - в общем случае никто кроме вас не знает что там и как устроено. В противовес - есть дистрибутивы, которые поддерживаются сообществом\компаниями, так что в итоге вы просто выбираете нужные пакеты и правите только ту конфигурацию, которая относится к вашей инсталляции, а сама по себе конфигурация пакета не меняется. Конечно, и из рхела можно сделать слакварь, но в целом ситуация когда один и тот же "готовый" дистрибутив будет на разных машинах содержать собранные по-разному пакеты чрезвычайно редка. Пока все сводится к локалхосту и персональной виртуалке с бложиком - можно там хоть реактос крутить, когда речь заходит о продуктиве с сотнями виртуалок - никому там нафиг эта самодеятельность не нужна.

разве у вас повернётся язык называть это решетом

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

вот что такое CRUX

А что плохого будет если там будет, скажем, тот же жирный VLC? Да ничего. Просто кто-то экономит каждый байт, и для него это критично, а кто-то понимает что пока он будет по сотни раз мир пересобирать да разбираться с флагами он потеряет больше, чем стоит новый диск и планка памяти. Тут речь не про безопасность вообще. Тот же кали с точки зрения сетевой безопасности куда круче, потому что по дефолту там вообще сеть отключена.

а что же до железяк. MikroTik. они используют ядро Linux.

Ну и, например, в ведроиде ядро Linux, будем роутить трафик через смартфоны? Да и в кофеварках тоже Linux бывает.

не вижу оснований не доверять ключевые узлы Linux'у, а значит и CRUX'у.

А я и не говорю что не стоит доверять Linux или CRUX, я говорю о персональных поделках. MicroTik занимается только сетевыми железками больше двадцати лет. Циска занимается только сетевыми железками больше 30 лет. Вы ровесник этим компаниям, и даже не работаете в IT (если что я совсем не считаю это чем-то плохим, и вот честно, Spoofing, я считаю что ты реально крутой спец и много знаешь). Думаю, нет смысла спорить у кого больше опыта и, как следствие, шансов предусмотреть больше подводных камней и сделать более качественный сетевой шлюз.

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

Нет, имхо apt-get потихоньку переносят в apt, но перенесли ещё не полностью.
Например не перенесена команда apt-get source.

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

Ну source может быть и сложно, оно же компиляцией исходников занимается.

torvn77 ★★★★★
() автор топика
Ответ на: комментарий от Spoofing

я точно знаю, что имею BIOS/UEFI -> Linux (EFI_STUB)

ты забыл упомянуть важное звено одной из точек активации трояна виртуализации между этими двумя компонентами

sanyock ★★
()
Последнее исправление: sanyock (всего исправлений: 1)

по умолчанию Debian и Ubuntu используют при обращении к репозиторию HTTP, а не HTTPS

Проорал. Глобально и надёжно! XD

Deleted
()
Ответ на: комментарий от Spoofing

vlc

поменяй на gsteamer и не ной. у меня он vlc не тянет.

ставлю кеды последовательно

Сделай для рабочего окружении отдельный пустой set, например, с именем desktop-env, выполни emerge @desktop-env, перенеси в этот файл соответствующие пакеты из world и выполни на всякий случай emerge -uDNa @world.

Пустой файл сначала делается для того, чтобы он не пенеустанавливал уже установленные пакеты.

И распихивай остальные пакеты по сетам. У меня они названы так system-base, portage-utils, desktop-env, desktop-apps, dev-utils, steam. Файл world при этом пустой.

grem ★★★★★
()
Последнее исправление: grem (всего исправлений: 2)
Ответ на: комментарий от micronekodesu

Думаю, нет смысла спорить у кого больше опыта и, как следствие, шансов предусмотреть больше подводных камней

Дебиану вот 25 лет, а такое вот эпичное решето нашлось

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

Это как раз не проблема

Я вижу.

Deleted
()

Уязвимость устранена в выпуске APT 1.4.9, а также в обновлениях пакетов в Ubuntu и стабильных ветках Debian (Jessie и Stretch)

Принято к сведению

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

Тут самое главное другое: Майкл Библь Systemd

Где тут? Обсуждали же уже. Или продолжение?

deep-purple ★★★★★
()
Ответ на: комментарий от TheAnonymous

эпичное решето

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

Согласен, это эпично. Я не могу вообще придумать почему так сделали. Но это никак не отменяет того факта что если бы Ян(RIP) или кто-то другой тянул Debian эти 25 лет в одну каску таких глупых факапов там было бы на пару порядков больше.

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

Да там для некоторых действий приходится аж aptitude запускать.

Каких?
Ну и можно же просто использовать только aptitude и не знать проблем.

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

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

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

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

можно же просто использовать только aptitude и не знать проблем.

Использую просто apt-get {update,install,upgrade} и тоже проблем не знаю ^_^

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

щя вот на Gentoo подсел, тоже крутая штука.

так вам фряху надо, вам понравиться полюбас. Только нужное из портов поставите и все будет как вы хотите.

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

VLC тянет Phonon, вроде. Я там сразу gstreamer выбрал. KDE5/plasma - глюкаво. Пересел на него с LXQT, так кажется, что тот даже стабильней/быстрей был, хоть и недоделан. Может в бинарных дистрибутивах его лучше собирают.

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