- Setelah copy.fail, kerentanan kernel Linux tambahan telah diumumkan
- Saat ini dinilai sebagai momen ketika serangan rantai pasok NPM dapat menimbulkan dampak besar
- Ada anjuran untuk mengecualikan patch kernel Linux yang disediakan oleh distribusi
- Selain itu, sebaiknya hentikan pemasangan perangkat lunak baru selama sekitar satu minggu
- Ada catatan bahwa setelah posting ini diterbitkan, fakta atau situasi mungkin telah berubah, sehingga jika ada bagian yang tampak salah atau tidak jelas, diminta untuk menghubungi sebelum menarik kesimpulan
1 komentar
Komentar Hacker News
Ini memang mimpi buruk yang sejak lama rasanya pasti akan meledak. Jumlah paket terlalu banyak, dan akibatnya permukaan serangan rantai pasok jadi sangat besar; cepat atau lambat ini memang akan menimpa semua orang
Tapi semuanya terlalu nyaman. Orang-orang yang mencoba memperingatkan atau mengurangi risikonya diabaikan oleh mereka yang belum pernah mencoba cara lain, dan
"import antigravity"terlalu mudah untuk ditinggalkanSepertinya sekarang kita sudah masuk ke fase “membayar harganya”
Hampir semuanya, termasuk compiler dan kernel, dibangun dari source, server/infrastruktur build sama sekali tidak punya akses internet, dan ada prosedur khusus untuk membawa masuk perubahan. CVE yang relevan juga ditinjau setiap kali dipublikasikan untuk menilai apakah berdampak pada kami dan bagaimana mitigasi atau penanganannya
Setelah pindah ke perusahaan lain, build bisa mengakses internet, dan upgrade dilakukan begitu versi baru keluar. Orang menganggap ini praktik yang baik karena mendapatkan perbaikan bug terbaru, dan peninjauan CVE ditangani tim keamanan
Startup berikutnya punya campuran berbagai praktik. Ada beberapa hal yang sangat bagus, tetapi juga punya utang CVE yang besar. Misalnya, mereka menerapkan secure boot dan disk terenkripsi di server, dan pemahaman tentang keamanan komunikasi antarkomponen juga cukup baik
Semua orang merasa cara merekalah yang benar. Hampir mustahil meyakinkan orang yang “sering upgrade” bahwa ada risiko memperkenalkan masalah baru. Industri ini butuh paket praktik yang lebih baik, dan secara pribadi saya menilai cara perusahaan pertama mengelola dependensi itu lebih baik. Secara keseluruhan praktik keamanannya matang dan produknya juga benar-benar aman
Semua perangkat lunak yang berguna jadi telah melalui fuzz testing, property testing, dan verifikasi formal, sehingga semua pihak yang mencari kerentanan harus mulai lagi dari nol
Tentu saja, itu dengan asumsi kita bisa bertahan melewati masa jeda ketika negara-negara melempar semua sisa amunisi mereka ke musuh terburuknya. Atau ya, pada akhirnya mungkin kita tinggal saling pukul pakai tulang binatang
Di level OS, program yang dijalankan menerima token capability dari shell atau dari tempat yang meluncurkannya, dan setiap system call harus menerima capability sebagai argumen pertama. Jadi
"open path /foo"menjadiopen(cap, "/foo"). Capability ini bisa merujuk ke filesystem palsu, satu cabang dari filesystem nyata, filesystem jaringan, atau apa pun, dan program tidak perlu tahu sandbox seperti apa yang ditempatinyaDi level library/bahasa juga, saat mengimpor library pihak ketiga seperti modul npm, capability harus diberikan pada saat import atau di setiap lokasi pemanggilan. Library itu tidak seharusnya mendapat akses baca/tulis ke setiap byte di ruang alamat program saya, dan juga tidak boleh bisa melakukan apa saja di komputer saya seolah-olah ia adalah saya. Pertanyaan intinya adalah: seberapa jauh blast radius kode ini? Jika library yang saya pakai ternyata berbahaya atau rentan, kita butuh default yang masuk akal untuk membatasi skala kerusakan. Pemanggilan
lib::add(1, 2)tidak boleh berujung pada kompromi persisten atas seluruh komputer sayaSeL4 sudah lama menyediakan capability di level OS yang cepat dan efisien, dan itu bekerja dengan baik. Dalam banyak kasus lebih cepat dari Linux, dan sangat berguna untuk sandboxing transparan, driver user-space, komunikasi antarproses, dan peningkatan keamanan. Linux bahkan bisa dijalankan sebagai proses di atas SeL4. Saya ingin OS yang punya semua fungsi desktop Linux tetapi berperilaku seperti SeL4
Sayangnya, tampaknya belum ada bahasa pemrograman yang punya capability di level bahasa dalam bentuk yang saya inginkan. Rust cukup dekat, tetapi perlu ada cara membatasi agar crate pihak ketiga tidak bisa memanggil unsafe code apa pun, termasuk unsafe yang dipanggil oleh dependensi yang tidak dipercaya. Bug soundness Rust yang sudah lama juga perlu diperbaiki, dan kita juga butuh standard library berbasis capability. Hal seperti
open()/listen()global harus hilang, dan yang boleh ada hanya bentuk setaraopenat()serta padanannya untuk bagian OS lainJika LLM terus membaik, dalam beberapa tahun lagi, kalau belum ada yang membuatnya lebih dulu, saya akan menyuruh LLM membangun semua ini. Keamanan OS desktop modern itu sudah seperti lelucon
Kode juga butuh budaya higienitas, dan itu tidak jauh berbeda dari norma yang dikembangkan kebanyakan budaya terhadap makanan. Ini memang gabungan heuristik kasar, tetapi rasa “ih” itu sudah menyelamatkan miliaran orang
Sekarang saya mengurangi paparan dependensi lebih keras daripada sebelumnya, terutama untuk hal-hal yang bisa diimplementasikan hanya dengan beberapa ratus baris. Ini benar-benar pergeseran paradigma
Pendekatan “tunggu seminggu sebelum memasang software” tidak akan berhasil. Baru beberapa bulan lalu ada kerentanan besar yang menghantam web, dan itu merupakan serangan tertunda waktu yang aktif setelah bersembunyi lebih dari sebulan
Kalau semua orang mulai menunggu seminggu, penyerang akan menunggu dua minggu. Penjahat siber tidak perlu mengeksploitasinya segera; yang penting pada akhirnya tetap berhasil mengeksploitasi. Banyak jenis kerentanan seperti typosquatting juga tidak berubah dengan pendekatan ini
Karena besar kemungkinan patch untuk kerentanan ini belum ada, dan kalaupun ada, sangat mungkin akan segera ditemukan kerentanan lain yang lebih menakutkan
Tetapi jika tidak ada jeda sama sekali, Anda bisa terkena exploit yang belum sempat dilihat siapa pun
Lagi pula, penemuan kompromi seperti ini sama sekali tidak bergantung pada apakah sudah benar-benar dieksploitasi atau belum. Jadi saya tidak paham dengan pernyataan “kalau semua orang menunggu seminggu, penyerang akan menunggu dua minggu”
Alternatif lain, Anda bisa pindah ke OS seperti FreeBSD yang tidak menerapkan pendekatan keamanan gaya YOLO
Perbaikan keamanan tidak begitu saja dilempar ke kernel FreeBSD tanpa koordinasi. Semuanya melalui tim keamanan FreeBSD, dan dalam beberapa menit setelah patch masuk ke src tree, pembaruan biner didistribusikan lewat FreeBSD Update dan pkgbase untuk 15.0-RELEASE
Kira-kira cuma butuh beberapa detik sampai ada pesan di Slack bahwa “patch sudah di-push”, 10–30 detik untuk mengunggah patch, dan paling lama sekitar 1 menit untuk sinkronisasi mirror
Demi adil, laporan saya bukan tentang komponen inti dan juga tidak mudah dieksploitasi, tetapi Debian, OpenBSD, SUSE, dan Gentoo semuanya menambal dalam waktu seminggu https://www.maxchernoff.ca/p/luatex-vulnerabilities#timeline
Ini bukan berarti seluruh OS harus dinilai hanya dari penanganan satu laporan kecil. Justru dari semua hal lain yang saya lihat, FreeBSD cenderung menangani laporan keamanan dengan cukup serius. Hanya saja, logika yang sama juga bisa diterapkan ke bug kernel Linux. Kasus patch yang dikelola seburuk itu juga cukup jarang di Linux
Cenderung mengutamakan kegunaan dibanding keamanan. Contoh terkenalnya ada di sini: https://vez.mrsk.me/freebsd-defaults
Saya menghargai kontribusi terhadap proyek ini, tetapi selama default buruk seperti itu masih ada, saya tidak bisa dengan hati nurani menyarankan orang untuk pindah
Kalau mau FreeBSD dan keamanan, lebih masuk akal memakai HardenedBSD buatan Shawn Webb
Bahkan para ahli keamanan sekarang juga harus menerima bahwa dunia kita berdiri di atas keseimbangan yang sangat rapuh. Menurut saya orang benar-benar meremehkan hal ini
Bukan cuma dunia IT; seluruh dunia dibangun di atas banyak sekali keseimbangan yang sangat rapuh. Exploit keamanan akan selalu ada. Bukan cuma di software, di dunia nyata juga sama. Ada orang yang menyusup ke konferensi keamanan, dan itu bahkan cuma seorang YouTuber. Memang bukan acara dengan keamanan superketat, tapi itu contoh yang terlintas di kepala. Pada dasarnya, di kebanyakan kasus, menembus keamanan itu sangat mudah
Maksud saya, pada level fundamental dunia kita berfungsi setidaknya karena sebagian besar orang memilih untuk tidak menyalahgunakannya. Masyarakat manusia memang selalu bekerja seperti itu, dan kemungkinan besar akan terus begitu
Setahu saya YouTuber bernama Max Fosh sempat berhasil masuk ke International Security Expo beberapa kali berturut-turut. Di Inggris dia memakai nama samaran “Rob Banks” di https://www.youtube.com/watch?v=qM3imMiERdU, dan di AS “Nick Everything” di https://www.youtube.com/watch?v=NmgLwxK8TvA
Saya pernah mempelajari budaya keamanan, dan pada akhirnya kebanyakan hal jatuh pada skala geser antara keamanan di satu sisi dan kenyamanan/aksesibilitas di sisi lain. Semakin aman, semakin kurang mudah diakses, dan sebaliknya
Untuk serangan rantai pasok pada manajer dependensi seperti npm, PyPI, dan Cargo, sebenarnya sudah ada solusi yang lumayan baik. Atur agar hanya versi paket yang sudah berumur beberapa hari yang boleh dipasang
Semua serangan besar belakangan ini ditemukan dan dibatalkan dalam waktu kurang dari sehari, jadi pendekatan ini akan menghindarinya dengan aman. Perilaku ini seharusnya menjadi default. Biarkan beta tester yang memang memilihnya sendiri dan perusahaan pemindai keamanan memakai versi paket terbaru sehari lebih dulu. Caranya ada di sini: https://cooldowns.dev/
Ini adalah manajer artefak. Ia memungkinkan Anda hanya menarik hal yang sudah disetujui. Anda bisa memperbaruinya cepat saat perlu, dan tetap memakai versi stabil yang tervalidasi secara konsisten saat itu yang dibutuhkan. Memang perlu sedikit override konfigurasi, tetapi itu pekerjaan yang mudah
Saya pernah membuat dan memakai alat seadanya dengan tujuan serupa, dan ini proyek yang bagus
Tentu saja, di luar lingkungan perusahaan ini secara alami tidak terlalu berjalan
Begitu ditemukan, ledakan exploit langsung terjadi, dan menunda pembaruan memberi lebih banyak waktu kepada penyerang yang sedang bersemangat
Model lain adalah CPAN milik Perl, yang hanya mendistribusikan source file
Bagi yang relatif baru mengadopsi continuous integration dan build terkontainerisasi, ada baiknya memeriksa apakah sistem Anda tidak menarik
latestdari banyak paket di setiap buildKami membuat container dasar yang sudah memuat semua dependensi eksternal, lalu hanya memperbaruinya secara eksplisit ketika kami menilai waktunya memang tepat
Jadi memang bisa sedikit tertinggal dari yang paling mutakhir, tetapi risikonya jauh lebih kecil dibanding langsung menyebarkan kerentanan rantai pasok acak ke seluruh dunia
Ini tulisan opini yang secara aktif merugikan. Sulit memahami logikanya
Hanya butuh 45 detik untuk mengecek sudah berapa lama kerentanan copyfail dan dirtyfrag sebenarnya ada. Memang lebih lama daripada membaca artikelnya. Dirtyfrag bisa relevan untuk sistem yang jejaknya mundur sampai 2017
Yang terdampak bukan software yang “baru”. Dan software lama justru keadaannya lebih buruk karena punya jauh lebih banyak waktu untuk dicari masalahnya
Suatu hari nanti seseorang akan membangun ulang seluruh stack dari OS sampai aplikasi dengan upgrade proof-carrying code
Satu-satunya cara menjalankan kode yang benar-benar tepercaya adalah desain bersama dan pembangunan bersama antara proof dan code
Ini bukan cuma berlaku untuk software, tapi sebenarnya untuk hampir semua hal
Saya tidak ingat membaca ini di mana, tetapi pada akhirnya ini bermuara pada perbedaan antara kebutuhan dan keinginan
Saya sudah memakai aturan ini saat memutuskan apakah akan membeli mobil baru atau mobil bekas, membeli vacuum cleaner kelas atas atau yang standar. Hal yang sama berlaku untuk perangkat baru yang mengilap, memasukkan sesuatu yang baru ke tech stack, atau memilih tech stack baru
Saya ingin dibantu memahami apa itu copyfail dan bagaimana hubungannya dengan paket NPM
Setelah saya rangkum, sepertinya copyfail adalah bug kernel yang bisa memungkinkan paket npm berbahaya mendapatkan hak root di server Linux
Jadi ini berarti sekarang adalah saat yang tepat bagi penyerang untuk membidik paket NPM, karena masih ada server yang belum ditambal
Apakah alasan sarannya bukan sekadar “perbarui kernel” adalah karena masalah baru terkait masih terus ditemukan dan belum semuanya tertambal?
Jika paket NPM populer dikompromikan dan menyertakan exploit copy.fail, banyak sistem akan rentan terhadap eskalasi hak root