Insiden Backdoor XZ - Hasil Analisis Awal
(securelist.com)-
Timeline of events:
- 2024.01.19: Website XZ dipindahkan ke GitHub Pages oleh maintainer baru (jiaT75)
- 2024.02.15:
build-to-host.m4ditambahkan ke.gitignore - 2024.02.23: Dua "file uji" yang berisi tahapan skrip berbahaya diperkenalkan
- 2024.02.24: XZ 5.6.0 dirilis
- 2024.02.26: Commit di
CMakeLists.txtyang menyabotase fitur keamanan Landlock - 2024.03.04: Backdoor menimbulkan masalah dengan Valgrind
- 2024.03.09: Dua "file uji" diperbarui, fungsi CRC dimodifikasi, masalah Valgrind "diperbaiki"
- 2024.03.09: XZ 5.6.1 dirilis
- 2024.03.28: Bug ditemukan, Debian dan RedHat diberi tahu, Debian melakukan rollback XZ
- 2024.03.29: Email dipublikasikan di mailing list OSS-security, RedHat mengonfirmasi XZ yang dibackdoor telah dikirim
- 2024.03.30: Debian menghentikan build dan memulai proses rebuild
- 2024.04.02: Developer utama XZ menyadari insiden backdoor tersebut
-
Nilai hash distribusi XZ yang mengandung backdoor berbahaya:
- xz-5.6.0: Nilai hash MD5, SHA1, SHA256 disediakan
- xz-5.6.1: Nilai hash MD5, SHA1, SHA256 disediakan
Analisis Infeksi Awal
-
Stage 1 - Skrip
build-to-hostyang dimanipulasi:- File source rilis pada awalnya tidak berbahaya, tetapi jika diunduh dari URL yang dikendalikan peretas, file
build-to-host.m4yang menjalankan kode berbahaya akan ikut disertakan - File
.m4ini dijalankan saat build dan memodifikasi serta mengekstrak file pertama yang ditambahkan ke folder test
- File source rilis pada awalnya tidak berbahaya, tetapi jika diunduh dari URL yang dikendalikan peretas, file
-
Stage 2 - Shell script yang disuntikkan:
- Skrip berbahaya yang disuntikkan oleh file
.m4memeriksa apakah ia berjalan di dalam proses build yang dituju di Linux - Menggunakan file
good-large_compressed.lzmauntuk menjalankan tahap berikutnya; file ini memang dikompresi secara normal, tetapi data hasil ekstraksinya mengandung data sampah - Mengekstrak 33.492 byte dengan perintah
head/taillalu menghapus obfuscation dengan menerapkan substitusi dasar melalui perintahtr
- Skrip berbahaya yang disuntikkan oleh file
-
Stage 3 - Ekstraksi backdoor:
- Shell script tahap terakhir melakukan beberapa pemeriksaan untuk memastikan ia berjalan di lingkungan yang diharapkan
- Mengekstrak kode biner backdoor itu sendiri yang disembunyikan pada offset lain dari file
good-large_compressed.lzmayang sama - Mengekstrak file dengan alat XZ dan mendekripsi data biner melalui serangkaian pemanggilan
headmenggunakan algoritma mirip RC4 - Mengekstrak file terkompresi dengan XZ, menghapus byte awal berdasarkan nilai predefined, lalu menyimpannya sebagai
liblzma_la-crc64-fast.o - Memodifikasi fungsi
is_arch_extension_supporteddicrc_x86_clmul.huntuk mengubah pemanggilan__get_cpuidmenjadi_get_cpuid
Analisis Backdoor Biner
-
Skenario pemuatan tersembunyi:
- XZ menggunakan fungsi
lzma_crc32danlzma_crc64untuk perhitungan CRC, dan keduanya disimpan di tabel simbol ELF sebagai tipe IFUNC - IFUNC digunakan untuk menentukan secara dinamis apakah versi yang dioptimalkan akan dipakai
- Backdoor disimpan sebagai object file, dan tujuan utamanya adalah agar ditautkan ke executable
mainsaat kompilasi - Object file tersebut menyertakan simbol
_get_cpuid; dengan menghapus satu garis bawah dari source asli, ketika kode memanggil_get_cpuid, yang sebenarnya dipanggil adalah versi backdoor
- XZ menggunakan fungsi
-
Analisis kode backdoor:
- Kode backdoor awal dipanggil 2 kali, dan aktivitas berbahaya yang sesungguhnya dimulai ketika IFUNC
lzma_crc64memanggil_get_cpuid - Mencari alamat GOT untuk menemukan lokasi pointer
cpuid, lalu menggantinya dengan pointer ke fungsi berbahaya utama - Tujuan utamanya adalah melakukan hook pada fungsi-fungsi tertentu agar semua koneksi ke sistem yang terinfeksi dapat dipantau
- Kode backdoor awal dipanggil 2 kali, dan aktivitas berbahaya yang sesungguhnya dimulai ketika IFUNC
-
Perilaku inti:
- Menargetkan fungsi
libcryptosepertiRSA_public_decrypt,EVP_PKEY_set1_RSA, danRSA_get0_keyuntuk di-hook - Memeriksa apakah proses saat ini memenuhi kriteria eksekusi dan apakah ada kill switch
- Menggunakan struktur Trie untuk melakukan operasi string
- Menggunakan 3 atau lebih routine symbol resolver untuk menemukan lokasi struktur ELF Symbol
- Menyalahgunakan fitur
rtdl-audituntuk membajak routine symbol resolving sehingga berhasil melakukan function hooking
- Menargetkan fungsi
Opini GN⁺
-
Artikel ini menunjukkan dengan sangat baik contoh serangan yang sangat canggih di mana malware disuntikkan ke perangkat lunak open source. Ini memberi pelajaran bahwa keunggulan open source juga bisa disalahgunakan.
-
Serangan siber dan backdoor yang menargetkan sistem Linux makin lama makin canggih. Terutama serangan melalui server SSH dapat menjadi ancaman keamanan yang serius.
-
Di sisi lain, ini juga menunjukkan kemampuan ekosistem open source untuk membersihkan dirinya sendiri. Pada akhirnya backdoor tersebut ditemukan oleh komunitas dan ditangani dengan cepat. Transparansi adalah kuncinya.
-
Penggunaan teknik seperti struktur data Trie tingkat lanjut, Symbol Resolver, dan hooking
dl_auditmenunjukkan evolusi teknis malware Linux. Keamanan sistem Linux juga memerlukan perhatian khusus. -
Saat perusahaan mengadopsi perangkat lunak open source, yang wajib diverifikasi bukan hanya lisensinya tetapi juga aspek keamanannya. Penting untuk memastikan apakah distribusinya dapat dipercaya dan apakah pemantauan berkelanjutan terhadap kodenya benar-benar dilakukan.
1 komentar
Komentar Hacker News
Ringkasan: