- Pada Maret 2024, sebuah backdoor ditemukan pada perangkat lunak
xz yang digunakan untuk mengekstrak source tarball di distribusi Linux.
- Backdoor ini disisipkan secara diam-diam selama 3 tahun oleh maintainer jahat Jia Tan.
- Insiden ini berdampak besar karena memungkinkan eksekusi kode jarak jauh dan sangat sulit dideteksi.
- Backdoor ini ditemukan secara kebetulan oleh Andres Freund, pengembang Postgres di Microsoft, saat menyelidiki penurunan performa, sehingga bencana besar berhasil dihindari.
Cara kerja serangan
- Backdoor membajak program
ssh untuk memungkinkan eksekusi kode jarak jauh.
- Dengan memodifikasi fungsi
RSA_public_decrypt, penyerang dapat menjalankan perintah sewenang-wenang saat login menggunakan kunci RSA tertentu.
- Serangan ini terdiri dari dua komponen utama:
- Skrip yang memasang file objek berbahaya sebagai bagian dari proses build
xz.
- Prosedur yang melakukan hook pada fungsi
RSA_public_decrypt.
1. Skrip pemasangan file objek berbahaya
- File objek berbahaya disembunyikan di dalam file pengujian pada repositori git
xz.
- Backdoor hanya aktif pada release tarball yang disediakan oleh maintainer.
2. Prosedur hook fungsi RSA_public_decrypt
- Menggunakan fitur ifunc milik
glibc untuk memaksa eksekusi kode yang berjalan saat waktu dynamic loading.
- Saat
ssh dijalankan, libsystemd dan liblzma dimuat, dan dalam proses ini backdoor mengeksekusi kode sewenang-wenang.
Cara menghindari bencana xz
- Untuk meningkatkan keandalan perangkat lunak open source, kita harus menangani baik masalah sosial maupun masalah teknis.
- Proses keamanan rantai pasok perangkat lunak harus diperbaiki.
Membangun perangkat lunak dari sumber tepercaya
- Serangan ini efektif karena banyak distribusi membangun
xz menggunakan tarball yang disediakan maintainer.
- Jika memungkinkan, perangkat lunak harus dibangun dari sumber yang paling tepercaya.
Saat situasi memungkinkan...
- NixOS adalah distribusi berbasis model manajemen paket fungsional, dan setiap paket direpresentasikan dalam bahasa pemrograman fungsional bernama Nix.
- NixOS memiliki budaya menggunakan source archive yang dibuat otomatis dari GitHub.
Membangun kepercayaan pada release tarball yang tidak tepercaya
- NixOS tetap harus menggunakan tarball yang disediakan maintainer pada tahap bootstrap.
- Untuk memperkuat keamanan rantai pasok perangkat lunak, langkah-langkah perlindungan tertentu perlu disiapkan.
1. Membandingkan sumber
- Penting untuk memeriksa apakah source tarball yang digunakan distribusi sama dengan yang ada di GitHub.
- Namun, release tarball sering kali berbeda dari source, dan itu bukan masalah.
2. Memanfaatkan reproduksibilitas bit-per-bit
- Build yang dapat direproduksi adalah sifat proyek perangkat lunak yang menghasilkan artefak yang sama saat dibangun dua kali dalam kondisi yang sama.
- Reproduksibilitas bit-per-bit dapat digunakan untuk membangun kepercayaan terhadap tarball dari maintainer yang tidak tepercaya.
Kesimpulan
- Insiden backdoor
xz menjadi pengingat pentingnya keamanan rantai pasok perangkat lunak open source.
- Sistem seperti NixOS dapat memperkuat keamanan melalui build yang dapat direproduksi.
1 komentar
Komentar Hacker News
NixOS dan build yang dapat direproduksi tidak berhasil mendeteksi backdoor xz. NixOS memang mendistribusikan build xz berbahaya, tetapi karena itu tidak menargetkan NixOS, tidak ada masalah
Penulis tampaknya terlalu fokus pada insiden ini saja. Kasus Jiatan adalah satu contoh tunggal, dan dalam skenario lain pertahanan juga bisa gagal
NixOS tidak relevan karena backdoor xz menargetkan RedHat dan Debian. Ironisnya, backdoor itu ditemukan oleh seorang karyawan Microsoft
Artikel itu menyebut bahwa distro seharusnya mengambil source code langsung dari VCS (misalnya Github), bukan dari tarball instalasi tradisional
Jika ingin fokus pada insiden yang seharusnya bisa dicegah oleh NixOS, seharusnya fokus pada insiden CrowdStrike. Jika bisa boot dengan konfigurasi kemarin, sebagian besar masalah bisa diredam
NixOS mengompilasi semuanya dari source, memverifikasi secara kriptografis bahwa source yang digunakan tidak diutak-atik, dan memiliki ketergantungan versi antar paket. Debian juga punya build yang dapat direproduksi
"Bisa saja" berarti itu belum dibuktikan, dan faktanya mereka memang mendistribusikannya
Analisis penjelas yang sangat bagus. Judulnya salah dan menyesatkan, mungkin "secara teknis akurat", tetapi hanya dalam arti "memiliki backdoor"
Jika PR Jia Tan disetujui, artefak berbahaya bisa dengan mudah masuk ke Github release seperti halnya ke tarball. Sulit memahami mengapa Github release dianggap sebagai mitigasi keamanan
Soal tarball rilis yang berbeda dari source
git add & commit. Bahkan dalam kasus ini pun riwayat commit tetap harus diperiksa, dan karena secara kasatmata tampak tidak berbahaya, muncul pertanyaan bagaimana itu bisa diverifikasiAda masalah yang lebih besar daripada sekadar mendorong file uji beracun, tetapi sulit memahami bagaimana Nix bisa mencegahnya
Bertanya-tanya apakah saya salah memahami artikelnya, atau ada sesuatu yang saya lewatkan