Backdoor XZ Utils yang Nyaris Menyusup ke Server Linux
Kisah backdoor XZ Utils (CVE-2024-3094) di versi 5.6.0 dan 5.6.1: cara ketahuannya, siapa yang terdampak, dan pelajaran rantai pasok.
Jawaban singkat
XZ Utils 5.6.0 dan 5.6.1 berisi backdoor (CVE-2024-3094) yang bisa membuka jalan masuk lewat sshd di Linux x86-64. Backdoor ditemukan 29 Maret 2024 sebelum masuk ke rilis stabil distro besar. Pelajarannya: rantai pasok open source bisa disusupi lewat kepercayaan.
Daftar isi
Seorang pengembang sedang menguji performa database di komputernya, lalu memperhatikan hal kecil yang mengganjal: login SSH terasa lebih lambat dari biasanya dan memakan CPU lebih banyak. Kebanyakan orang akan mengabaikannya. Ia memilih menelusuri, dan menemukan backdoor yang hampir masuk ke jutaan server Linux di seluruh dunia.
Itulah kisah CVE-2024-3094, backdoor di XZ Utils versi 5.6.0 dan 5.6.1. Backdoor ini ditemukan dan diumumkan pada 29 Maret 2024, sebelum sempat sampai ke rilis stabil distro besar seperti Debian stable, Ubuntu LTS, atau RHEL. Skor CVSS-nya 10.0. Bagi pengelola server, kejadian ini adalah pengingat bahwa ancaman tidak selalu datang dari celah yang tidak sengaja, tapi juga dari kode yang sengaja disusupkan.
Apa itu XZ Utils dan kenapa penting
XZ Utils adalah kumpulan alat kompresi data dengan format .xz, berikut pustaka liblzma yang dipakai banyak program lain. Hampir semua distro Linux memasangnya secara bawaan karena dipakai untuk mengompres paket, kernel, dan arsip.
OpenSSH sendiri tidak memakai liblzma. Namun Debian dan beberapa distro lain menambal OpenSSH agar bisa memberi notifikasi ke systemd, dan pustaka libsystemd bergantung pada liblzma. Lewat rantai inilah sshd, layanan yang menjaga pintu masuk server, ikut memuat liblzma. Rantai dependensi tidak langsung seperti ini sulit terlihat bila hanya membaca daftar paket.
Bagaimana backdoor itu disusupkan
Bagian paling mengkhawatirkan dari kasus ini bukan teknis, melainkan sosial. Akun yang menamakan diri Jia Tan berkontribusi ke proyek XZ selama sekitar dua tahun, membangun kepercayaan, dan akhirnya menjadi salah satu pengelola yang berhak membuat rilis. Menurut halaman resmi proyek, tarball rilis 5.6.0 dan 5.6.1 dibuat dan ditandatangani oleh Jia Tan.
Secara teknis, backdoor disembunyikan dengan cermat:
- Muatan berbahaya disamarkan sebagai file uji biner di repositori, yang tampak wajar untuk proyek kompresi.
- Skrip pemicunya hanya ada di tarball rilis, bukan di repositori Git. Orang yang membaca kode di Git tidak akan melihat pemicunya.
- Skrip itu hanya aktif dalam kondisi tertentu: build untuk Linux x86-64, memakai gcc dan GNU linker, dan berjalan sebagai bagian dari pembuatan paket Debian atau RPM.
Hasilnya, liblzma yang disusupi bisa mengganggu proses autentikasi sshd. Analisis lanjutan dari komunitas keamanan menunjukkan backdoor dirancang agar pemilik kunci tertentu bisa menjalankan perintah di server sebelum login. Rinciannya rumit, tetapi intinya jelas: siapa pun yang memegang kunci itu bisa masuk ke server yang terdampak.
Bagaimana backdoor ini ketahuan, dan siapa yang terdampak?
Andres Freund, pengembang yang juga berkontribusi ke PostgreSQL, melaporkan temuannya ke milis oss-security pada 29 Maret 2024. Ia mengamati login SSH memakan banyak CPU dan memunculkan error valgrind di sistem Debian sid. Dalam pengukurannya, login SSH yang gagal butuh sekitar 0,8 detik dengan liblzma yang disusupi, dibanding sekitar 0,3 detik sebelumnya. Selisih setengah detik itulah yang membongkar operasi bertahun-tahun.
Karena ketahuan cepat, versi bermasalah baru sempat masuk ke distro yang bergerak cepat: versi pengembangan atau beta dan distro rolling release, misalnya Fedora Rawhide dan beta Fedora saat itu, Debian testing dan unstable, openSUSE Tumbleweed, serta Kali Linux. CISA hari itu juga mengeluarkan peringatan agar pengguna menurunkan versi ke yang tidak disusupi. Rilis stabil yang umum dipakai di server produksi tidak menerima versi 5.6.0 atau 5.6.1.
| Pertanyaan | Jawaban singkat |
|---|---|
| Versi bermasalah | XZ Utils 5.6.0 dan 5.6.1 (tarball rilis) |
| CVE dan skor | CVE-2024-3094, CVSS 10.0 |
| Diumumkan | 29 Maret 2024, milis oss-security |
| Syarat aktif | Linux x86-64, build paket Debian atau RPM dengan gcc |
| Jalur ke SSH | sshd yang ditambal distro, lewat libsystemd ke liblzma |
| Rilis stabil distro besar | Tidak menerima versi bermasalah |
| Rilis bersih dari proyek | Mulai 29 Mei 2024 |
Untuk mengecek server, jalankan xz --version. Kalau hasilnya 5.6.0 atau 5.6.1 dan paketnya tidak berasal dari pembaruan keamanan distro yang sudah memperbaikinya, perbarui paket xz-utils (Debian, Ubuntu) atau xz (keluarga RHEL, Fedora) dari repositori resmi. Server yang sempat memakai versi itu dan membuka SSH ke internet sebaiknya diperlakukan sebagai insiden: periksa log, ganti kredensial, dan pertimbangkan pemasangan ulang dari image bersih.
Pelajaran untuk pengelola server
Rilis stabil adalah pengaman. Server produksi yang memakai rilis LTS atau stabil terlindung dalam kasus ini justru karena paketnya tidak mengikuti versi terbaru secepat mungkin. Distro rolling release dan versi beta cocok untuk pengujian, bukan untuk server yang menyimpan data bisnis.
Kepercayaan adalah permukaan serangan. Banyak proyek open source penting dirawat oleh satu atau dua orang sukarelawan yang kelelahan. Penyerang yang sabar bisa memanfaatkan itu. Pola serupa, masuk lewat pemasok atau komponen yang dipercaya, dibahas di serangan rantai pasok.
Perhatikan anomali kecil. Backdoor ini tidak terdeteksi alat keamanan, melainkan oleh manusia yang penasaran pada keanehan performa. Pemantauan dasar, misalnya membaca log server dan memperhatikan perubahan pemakaian CPU, tetap punya nilai.
Kecilkan pintu masuk. Kalau SSH hanya bisa diakses dari IP tertentu atau lewat VPN, backdoor di sshd jauh lebih sulit dimanfaatkan dari internet. Pembatasan akses seperti ini juga membantu menghadapi celah lain, misalnya regreSSHion.
Inventaris dan SBOM. Saat berita seperti ini muncul, pertanyaan pertamanya selalu sama: apakah kita memakai versi itu? Tim yang punya daftar paket per server, termasuk di dalam image container, bisa menjawabnya dalam hitungan menit.
Backdoor XZ Utils nyaris menjadi salah satu insiden rantai pasok terbesar di dunia Linux, dan gagal karena ketahuan sebelum menyebar ke rilis stabil. Untuk server produksi, pegang rilis stabil, perbarui dari repositori resmi, batasi akses SSH, dan simpan catatan paket yang terpasang. Kebiasaan sederhana itulah yang membuat kejadian serupa berikutnya lebih mudah dihadapi.


