Спустя всего неделю с момента исправления (http://www.opennet.me/opennews/art.shtml?num=40620) порции уязвимостей в пакетном менеджере APT, для Debian (https://lists.debian.org/debian-security-announce/2014/msg00...) и Ubuntu (http://www.ubuntu.com/usn/usn-2353-1/) доступны очередное корректирующее обновление с устранением ещё одной уязвимости (CVE-2014-6273). Проблема вызвана переполнением буфера в коде загрузки данных по протоколу HTTP в apt-get и может привести к организации выполнения кода злоумышленника, который имеет возможность вклиниться в трафик через проведение MITM-атаки (man-in-the-middle).URL: https://lists.debian.org/debian-security-announce/2014/msg00...
Новость: http://www.opennet.me/opennews/art.shtml?num=40658
и куда он дальше клиниться будет?
После выполнения кода? Куда пожелает.
Как же обновить apt, если apt дырявый?# apt-get upgrade ...
Пакеты, которые будут обновлены:
acl acpi-support-base apt apt-utils attr autotools-dev cmake cmake-data conky conky-std
console-setup console-setup-linux cpp-4.8 cpp-4.9 curl flashplugin-nonfree fontconfig fontconfig-config g++-4.9 g++-4.9-multilib gcc-4.8 gcc-4.8-base gcc-4.9 gcc-4.9-base gcc-4.9-multilib geeqie geeqie-common geoip-database gfortran-4.9 ghostscript gir1.2-rsvg-2.0 grep gstreamer0.10-gconf gstreamer0.10-plugins-good gstreamer0.10-pulseaudio hostapd imagemagick-common installation-report irqbalance keyboard-configuration klibc-utils kmod less lib32asan1 lib32atomic1 lib32cilkrts5 lib32gcc-4.9-dev lib32gcc1 lib32gomp1 lib32itm1 lib32quadmath0 lib32stdc++-4.9-dev lib32stdc++6 lib32ubsan0 libacl1 libapt-inst1.5 libapt-pkg4.12 libasan0 libasan1 libatomic1 libattr1 libaudit-common libaudit1 libavcodec-dev libavcodec56 libavformat-dev libavformat56 libavresample-dev libavresample2 libavutil-dev libavutil54 libc-bin libc-dev-bin libc6 libc6-dbg libc6-dev libc6-dev-i386 libc6-dev-x32 libc6-i386 libc6-x32 libccid libcilkrts5 libcurl3 libcurl3-gnutls libdebconfclient0 libemail-valid-perl libevdev2 libfontconfig1 libfontconfig1-dev libgcc-4.8-dev libgcc-4.9-dev libgcc1 libgegl-0.2-0 libgfortran-4.9-dev libgfortran3 libgomp1 libgpg-error0 libgpgme11 libgs9 libgs9-common libio-socket-ssl-perl libitm1 libklibc libkmod-dev libkmod2 liblensfun-data liblensfun0 liblircclient0 liblsan0 libltdl-dev libltdl7 liblz1 libmailtools-perl libmpeg2-4 libmpeg2-4-dev libnuma-dev libnuma1 libobjc-4.9-dev libobjc4 liborcus-0.8-0 libpci-dev libpci3 libpython2.7 libpython2.7-dev libpython2.7-minimal libpython2.7-stdlib libpython3.4 libpython3.4-minimal libpython3.4-stdlib libqmi-glib1 libqmi-proxy libqtwebkit-dev libqtwebkit4 libquadmath0 librarian0 librest-0.7-0 librsvg2-2 librsvg2-common librsvg2-dev libstdc++-4.9-dev libstdc++6 libswscale-dev libswscale3 libtcmalloc-minimal4 libtiff-opengl libtiff5 libtiff5-dev libtiffxx5 libtool-bin libtsan0 libubsan0 libunique-1.0-0 libv4l-0 libv4l-dev libv4l2rds0 libv4lconvert0 libvcdinfo-dev libvcdinfo0 libwireshark-data libwireshark5 libwiretap4 libwnck-common libwnck-dev libwnck22 libwsutil4 libx32asan1 libx32atomic1 libx32cilkrts5 libx32gcc-4.9-dev libx32gcc1 libx32gomp1 libx32itm1 libx32quadmath0 libx32stdc++-4.9-dev libx32stdc++6 libx32ubsan0 libxfconf-0-2 libxkbcommon-dev libxkbcommon-x11-0 libxkbcommon-x11-dev libxkbcommon0 libzbar-dev libzbar0 locales module-init-tools multiarch-support nasm netcat-traditional numactl pciutils python-debian python-dnspython python-lxml python-qt4 python-sip python-six python2.7 python2.7-dev python2.7-minimal rarian-compat sudo task-cyrillic task-cyrillic-desktop task-desktop task-russian task-russian-desktop task-ssh-server tasksel tasksel-data whois wireshark wireshark-common wpasupplicant xfconf xinit xserver-common xserver-xephyr xserver-xorg-core xserver-xorg-dev xserver-xorg-input-synaptics xserver-xorg-video-nouveau zlib1g zlib1g-devЙопт... o_0
Тебя удивляет, что в дистрибутиве обновляются пакеты? Или в чём твоя проблема?
> Тебя удивляет, что в дистрибутиве обновляются пакеты? Или в чём твоя проблема?Да это криокамера разморозилась - он год в анабиозе лежал и тут до него вдруг дошло что пакеты оказывается иногда надо обновлять.
Судя по всему это Jessie/testing
> Как же обновить apt, если apt дырявый?Вариант 1:
apt-get install apt--
Вариант 2 (если боитесь уязвимости):
apt-get download --print-uris apt
wget -O /tmp/apt.deb $(apt-get download --print-uris apt | awk '{print $1}' | tr -d "'")
ls -ld /tmp/apt.deb
sha256sum /tmp/apt.deb
dpkg -i /tmp/apt.debЕсли совсем боитесь, то можете сами зайти на зеркало, найти нужный пакет, а также найти его hash-сумму и размер. После этого сделать wget и всё остальное.
Хотя, IMO, неплохо было бы ещё исправить тот факт, что у вас легко эксплуатируют MITM. Например, у нас поднято локальное зеркало (в глобальной сети известное как "ftp.ru.debian.org"), доступ к которому для большинства хостов осуществляется через отдельные vlan-ы с разумно настроенным firewall-ом на gw. И, IMHO, самый простой способ вклиниться, это зломать данный gw (у которого в цепочке INPUT стоит тупо DROP), либо само зеркало.
aptitude
> aptitudeНу, лично у меня не стоит это… Однако если ближе к делу, то судя по зависимостям, aptitude использует «libapt-pkg». Вы уверены, что он не наследует эту же уязвимость?
Это вообще просто удобная обвязка.
Не наследует, уязвимость в бинарниках apt, а не в библиотеке.
В Debian устанавливается по умолчанию.
> Не наследует, уязвимость в бинарниках apt, а не в библиотеке.Обычно в таких случаях кидают proof link.
> В Debian устанавливается по умолчанию.
Ну, лично я для себя делаю свои установочники, чтобы не тратить каждый раз время. Догадываюсь, что так делают многие.
> И, IMHO,
> самый простой способ вклиниться, это зломать данный gw (у которого в
> цепочке INPUT стоит тупо DROP), либо само зеркало.Почему самый простой - это именно этот? :-)
>> И, IMHO,
>> самый простой способ вклиниться, это зломать данный gw (у которого в
>> цепочке INPUT стоит тупо DROP), либо само зеркало.
> Почему самый простой - это именно этот? :-)А какой способ проще?
> Вариант 2 (если боитесь уязвимости):
> wget -O /tmp/Сперва люди пишут в новостях по дыркам такое, затем -- в скрипты, а затем их раньше полоскали в багтраке по статье insecure /tmp use (в данном разе 100% предсказуемое имя файла -- при помощи болтающегося симлинка получается шанс юзеру обеспечить запись от рута содержимого этого apt.deb в любое удобное и уже существующее место)...
Не пишите в каталоги, которые доступны другим пользователям на запись, файлы с предсказуемыми именами. Хотя бы в скриптах. Привычка -- страшная штука.
>> Вариант 2 (если боитесь уязвимости):
>> wget -O /tmp/
> Сперва люди пишут в новостях по дыркам такое, затем -- в скрипты,
> а затем их раньше полоскали в багтраке по статье insecure /tmp
> use (в данном разе 100% предсказуемое имя файла -- при помощи
> болтающегося симлинка получается шанс юзеру обеспечить запись от рута содержимого этого
> apt.deb в любое удобное и уже существующее место)...
> Не пишите в каталоги, которые доступны другим пользователям на запись, файлы с
> предсказуемыми именами. Хотя бы в скриптах. Привычка -- страшная
> штука.Согласен, я написал хреновый вариант. И я действительно иногда так делаю, хоть это и свойственно только для личных машин (где сильно недоверенных пользователей нет). В общем, благодарю за хорошее замечание. :)
Однако "ls -ld /tmp/apt.deb" (указанный в инструкции) всё-таки объяснил бы что к чему, если бы действительно кто-то воспользовался моментом. Да и "sha256sum /tmp/apt.deb" (тоже упомянутый) чуток полезен для таких ситуаций.
Кроме того это и не надо было воспринимать как точную инструкцию, скорее просто как proof of concept. Я даже не проверил работоспособность данного варианта.
> Как же обновить apt, если apt дырявый?Если тебя все аттакуют и поставить apt самим apt-том не вариант, то...
Ну, wget-ом по цепочке с проверками всех подписей и хэшеё Release + Releas.gpg + Packages.xz + все .deb. Ты сможешь!
> # apt-get upgrade ...
> Пакеты, которые будут обновлены:
>пт... o_0Даже и не думай об /var/log/messages и tcpdump -vvi any!
прилетело, обновили, забыли
чо хай то в каментах поднимать ?
ну правильно - надо все в тихую делать.. а о дырах не рассказывать. Не за это ли ругают MS?
ASCIIZ строки дают о себе знать. Автор наверняка выделил буфер фиксированной длины и что-то не учел. Можно, конечно, постоянно высчитывать длину, выделять память, но на это требуется время, что соответственно сказывается на производительности.
Но как вы догадались, Холмс?
такие новости выпускает фанат Поттеринга, что бы пилить пакетный манеджер еще в системД
Интересно, а никого не смущает тот факт, что все репозитории работают по http и вместо любого пакета mitm может подложить пакет, меняющий рутовый пароль) ?
man криптография с открытым ключом
> man криптография с открытым ключом.deb проверяется по размеру, и MD5, и SHA1, и SHA256, и SHA512. Пожелаем успеха предыдущему оратору в генерации подходящей коллизии.