Arch Linux menilai insiden malware kini telah terkendali: lebih dari 1.500 paket terdampak
(phoronix.com/news)- Di repositori kontribusi pengguna AUR milik Arch Linux, paket yang terinfeksi malware awalnya terkonfirmasi lebih dari 400, lalu akhirnya bertambah menjadi lebih dari 1.500
- Dalam pembaruan beberapa jam sebelumnya, paket yang terinfeksi dalam insiden minggu ini diperkirakan sekitar 900 paket
- Setelah itu, pengembang Arch Linux menghapus semua commit berbahaya yang diketahui, dan jumlah paket terdampak dihitung sebanyak 1.579
- Daftar 1.579 ini juga ditandai sebagai daftar yang besar tetapi bukan keseluruhan dari paket yang terdampak, sehingga cakupan totalnya bisa lebih luas
- Banyak perangkat lunak di repositori yang dipelihara pengguna terdampak oleh insiden keamanan ini, dan dalam pembaruan terpisah terjadi lagi serangan malware yang lebih canggih
Ringkasan insiden
- Insiden dimulai ketika lebih dari 400 paket yang terinfeksi malware ditemukan di repositori kontribusi pengguna AUR untuk pengguna Arch Linux
- Menjelang akhir hari, pihak Arch Linux menilai semua commit yang terdampak telah ditangani, tetapi jumlah paket yang terdampak meningkat menjadi lebih dari 1.500
- Insiden ini merupakan insiden keamanan yang memengaruhi banyak perangkat lunak di repositori Arch Linux yang dipelihara pengguna
Perubahan cakupan dampak
- Dalam pembaruan beberapa jam sebelumnya, sekitar 900 paket diperkirakan telah terinfeksi malware dalam insiden minggu ini
- Setelah itu, berdasarkan pesan terakhir di thread insiden keamanan, pengembang Arch Linux menghapus semua commit berbahaya yang diketahui
- Daftar yang dikutip menampilkan jumlah paket yang terdampak malware sebanyak 1.579
Ketidakpastian yang tersisa
- Daftar yang menampilkan 1.579 paket itu juga diberi keterangan sebagai “daftar yang besar tetapi bukan keseluruhan dari paket yang terdampak”
- Karena itu, angka yang dipublikasikan menunjukkan besarnya dampak yang telah terkonfirmasi, tetapi daftar itu sendiri belum mencakup seluruh paket
Pembaruan lanjutan
- Dalam pembaruan terpisah, disebutkan bahwa Arch Linux AUR menghadapi gelombang lain dari serangan malware yang lebih canggih
1 komentar
Opini Hacker News
Penasaran apakah tim AUR pernah menerbitkan postmortem
Respons kali ini sangat cepat dan mengesankan, tetapi jujur saja tampaknya perlu ada perubahan, baik pada kebijakan AUR maupun wrapper
Harus ada kemampuan menetapkan usia minimum paket seperti di pnpm, dan paket yatim tidak boleh bisa diadopsi oleh sembarang orang
Adopsi juga bisa diberi pembatasan laju global sehingga dapat dijadikan sinyal serangan, dan seperti yang dilakukan banyak perusahaan di NPM, pemindaian kerentanan saat publikasi juga diperlukan
Namun sebagian besar perubahan ini tampaknya lebih merupakan pekerjaan untuk helper packaging dan pihak ketiga daripada maintainer AUR itu sendiri
Dengan begitu kepemilikan tidak akan hilang sehingga proses menjadi yatim itu sendiri tidak diperlukan
[1] https://github.com/gavinhungry/patches/blob/main/pakku/pakku...
[2] https://github.com/zqqw/pakku
Batasan tetap diperlukan, tetapi misalnya dibatasi menjadi 1 adopsi per bulan untuk pengguna yang mendaftar sebelum periode tertentu tampaknya cukup masuk akal
Lagi pula, hampir tidak ada orang yang menerapkan pembaruan otomatis tanpa peninjauan ke paket AUR yang terpasang secara lokal, jadi permukaan serangannya sebenarnya sudah cukup kecil
Inti dari worm miasma justru bahwa tanda tangan dan pola helper berubah terlalu cepat
Implan berbahaya yang dienkripsi mendekripsi payload dengan kunci AES-128-GCM yang berbeda untuk setiap lokasi GitHub tempat ia diunggah, nama metode dalam kode juga berubah secara dinamis, dan offset simbol terenkripsi pun dicampur serta digunakan ulang
Karena ini malware polimorfik, ia adalah lawan terburuk bagi alat berbasis signature
APT28/29 tampaknya sampai taraf tertentu bergantung pada lambatnya Microsoft memblokir otomatis pengguna dan repositori yang dipakai sebagai infrastruktur C2 di GitHub
Perlu dipikirkan apa arti hal ini bagi strategi keamanan
Saat Anda sudah bisa memindai signature atau string, Anda sebenarnya sudah berada pada tahap bermain kucing-kucingan dengan botnet yang sepenuhnya otomatis, dan itu tidak bisa dimenangkan
Selama minggu lalu, tampaknya hanya alat supply chain seperti socket.dev yang mengikuti perubahan implan ini, sementara alat lain bahkan tidak mengenali Miasma dan malah menemukannya lagi sebagai kampanye baru
Kurang ada tenaga dan toolchain yang mampu merekayasa balik payload secepat laju munculnya adapter baru untuk ekosistem lain setiap 24 jam
Yang dimaksud sepenuhnya otomatis di sini adalah bahwa di ekosistem paket lain, kredensial curian sudah dipakai bahkan sebelum 48 jam berlalu
Alamat email dan nama yang sama terus muncul, dan tampaknya itu adalah orang-orang yang kemungkinan besar belum memahami dampak worm yang menyebar sendiri ini
Misalnya, indikator kompromi yang mencari paket yang bergantung pada bun juga tidak terlalu membantu
Malware cukup mengunduh ulang dirinya lewat sarana eksternal
Dalam kampanye PyPI kedua, setelah gelombang pertama dropper berbahaya dari kampanye RedHat ditandai ke maintainer PyPI, mereka beralih ke file WHL terkompresi dan file setup.pth yang dieksekusi otomatis untuk mengunduh dropper
Kecuali manajer paket di ekosistem-ekosistem ini ditulis ulang dari nol dengan asumsi adanya chroot, sandbox, log jaringan dan domain, serta allowlist per entri, strategi distribusi malware melalui serangan supply chain akan tetap realistis
Repositori alat mitigasinya ada di [1], dan detail teknisnya ada di tulisan blog [2]
Ini masalah di semua package manager, termasuk Composer, Rubygems, NPM, PyPI, dan Go yang semuanya terdampak
Kita perlu mendiskusikan dengan lebih terbuka betapa banyak kecerobohan dan kepercayaan eksternal yang ditumpukan ke package manager secara umum, dan ini benar-benar harus berubah
[1] https://github.com/cookiengineer/antimiasma
[2] https://cookie.engineer/weblog/articles/malware-insights-mia...
Saat wrapper pacman yang bisa langsung menginstal dari AUR mulai bermunculan, itu terasa sangat tidak nyaman
Saya pernah menginstal sesuatu dari AUR, tetapi untuk sebagian besar hal saya lebih memilih melewati langkah tengah dan langsung ke situs web proyek
PKGBUILD yang sudah jadi tidak cukup praktis hingga layak menanggung risiko typosquatting atau penyalahgunaan dependensi npm·pip
yaymenampilkan perbedaan PKGBUILD setiap kali pembaruanSaat instalasi pertama, Anda memeriksa URL dan melihat apakah skrip instalasi serta lainnya masuk akal, lalu pada pembaruan berikutnya biasanya yang berubah hanya nomor versi dan checksum
Serangan typosquatting akan terlihat cukup jelas
Instalasi pertama memang agak rentan, tetapi pergi ke situs web proyek lalu menekan download pada dasarnya sama saja
Hal yang sama juga berlaku di banyak aspek kehidupan
Setelah memakai Void Linux, saya beralih ke
aurutilsdi Arch untuk pemisahan serupaDengan begitu saya bisa membangun sendiri, dengan mudah memelihara repositori AUR lokal, lalu menginstal dan mengelolanya lewat
pacman, sehingga seluruh proses upgrade menjadi lebih baikAlasan saya pindah ke Linux bukan untuk membuang waktu seperti pengguna Windows dengan membuka situs web dan menekan “download” demi memperbarui program
Namun wrapper pacman yang disebut tadi memang terlihat berisiko
Tutorial yang memakai repositori semacam ini terlalu tersebar luas, sampai-sampai saya merasa seperti orang aneh karena tidak ingin memberi hak root tanpa batas kepada orang asing yang nyaris tidak melalui peer review
Semua risiko itu diambil hanya untuk memasang satu versi paket yang mungkin tidak perlu diperbarui atau hanya jarang diperbarui
Sekilas setelah saya baca, tampaknya mereka memasang
atomic-lockfile,js-digest, danlockfile-jsdari npmDaftar paket yang terdampak ada di [1]
Saya tidak langsung menemukan cara memeriksa sistem, jadi saya menjalankan
pacman -Qmiuntuk mencari informasi terkait paket eksternal dan tanggalHasil keluarannya tinggal dicocokkan dengan daftar paket yang terdampak
Anda juga bisa mencari file di beberapa lokasi seperti berikut
grep -rl "atomic-lockfile" / --include="package.json" --include="package-lock.json"grep -rl "atomic-lockfile" ~/.npm 2>/dev/nullgrep -i "atomic-lockfile" /var/log/pacman.log 2>/dev/nullSaya tidak tahu apakah paket tersebut menghapus dirinya sendiri setelah dijalankan
Karena informasi lain tidak terlalu membantu, saya ingin membagikan setidaknya perintah dasar ini
[1] https://md.archlinux.org/s/SxbqukK6IA
Dapatkan daftar paket terpasang yang berasal dari AUR dengan
yay:yay -Qam > packages_aur.lastUnduh daftar dari https://md.archlinux.org/s/SxbqukK6IA#:
curl https://md.archlinux.org/s/SxbqukK6IA/download > compromised.txtLalu jalankan
grep -wFf compromised.txt packages_aur.last, maka seharusnya akan keluar paket yang ada di kedua file tersebut, yaitu paket yang pernah terkompromi pada suatu waktuatomic-lockfilesaja tidak cukupjs-digestdanlockfile-jsjuga dipakai, dan pada suatu titik mereka beralih dari npm ke bunPlatform legendaris
emacs-magitbisa terdampakSetahu saya tidak ada JavaScript sama sekali
Ini lagi-lagi menjadi pengingat yang wajar untuk tidak memasang paket, library, atau aplikasi pihak ketiga secara sembarangan tanpa meninjaunya
Untungnya kali ini terbatas pada AUR, dan AUR pada dasarnya adalah repositori paket yang bisa diunggah siapa saja; berbeda dari repositori resmi, sudah berkali-kali ada peringatan bahwa peninjauan sebelum instalasi itu wajib
Alat baris perintah seperti
ruamemudahkan peninjauan paket sebelum dipasang dari AURJika Anda melakukan urusan perbankan di komputer yang sama, tidak ada alasan untuk tidak meninjau perangkat lunak yang Anda andalkan
Menjaga jumlah paket tetap sedikit dan hanya memakai yang dibutuhkan juga membuat proses upgrade jauh lebih sederhana
Apakah artinya membaca setiap baris kode sepenuhnya sebelum instalasi
Bagaimana kalau paketnya biner
Apakah semua yang dipasang harus dibuatkan build yang reproducible, atau harus pindah ke distro berbasis source
Melempar tanggung jawab ini ke pengguna bukan solusi yang berkelanjutan
Ada ruang untuk akal sehat, tetapi menyalahkan pengguna untuk hal ini tetap tidak masuk akal
Ada jauh lebih banyak kode di dunia daripada yang bisa dibaca seseorang sepanjang hidupnya
Kemungkinan besar Anda sendiri belum membaca bahkan 1% dari source code yang sedang berjalan di komputer Anda saat ini
Lalu, apakah Anda berhenti memakai komputer
Bagaimana Anda bisa memercayai apa yang terjadi di dalamnya
Para pengembang Arch Linux melakukan pekerjaan yang luar biasa dan saya pribadi berterima kasih, tetapi di masa ketika serangan rantai pasok meningkat seperti sekarang, rasanya peringatan kepada pengguna saja sudah lama mencapai batasnya
Solusi mudah tidak terlihat, tetapi kontrol seperti peninjauan sejawat sebelum publikasi atau masa tunggu mungkin bisa sedikit meredakan masalah
Situasi di mana paket bisa ditandai sebagai yatim, lalu setelah menunggu 2 minggu penanggung jawab asli tidak merespons karena sedang liburan, penyerang bisa ditetapkan sebagai maintainer dan merilis pembaruan berbahaya, itu benar-benar tidak masuk akal
Distro immutable, Wayland, dan Flatpak memang sudah menyediakan sebagian bagiannya, tetapi masih ada celah penting yang tersisa
Masalah terbesarnya adalah sandboxing terikat pada format paket, dan menurut saya itu adalah kekeliruan
Sandboxing dan hak akses seharusnya menjadi fitur di tingkat sistem agar biner arbitrer pun tidak mudah lolos dari celah
Walau tidak menyelesaikan masalah sepenuhnya, ini bisa sangat mengurangi cakupan kerusakan dan membuat pengguna distro menjadi target yang kurang menarik
Bagi yang khawatir, saya menemukan repositori yang mengumpulkan skrip terbaru dan daftar paket untuk membantu memeriksa apakah ada infeksi: https://github.com/lenucksi/aur-malware-check
Salah satu dari keduanya tampaknya sudah cukup
Saya bukan pengguna Arch Linux, tetapi cukup sering memakai NodeJS, dan di sana juga cukup sering terjadi serangan serupa
Akhir-akhir ini saya jadi penasaran, sebenarnya di mana manajemen paket dilakukan dengan benar dan aman
Skalanya memang tidak sebesar kali ini, tetapi sejak awal sudah jelas tidak aman, dan peringatan risiko ada di mana-mana
Semuanya punya pengelola yang meninjau paket dan bertanggung jawab atasnya
Arch Linux juga sama
Sifat AUR yang pada dasarnya tidak tepercaya selalu dinyatakan secara eksplisit di Arch Wiki dan budaya sekitarnya, dan ini berbeda dari manajer paket bahasa pemrograman seperti npm atau pip
Kalau memakai AUR, semuanya harus diperiksa
Kebanyakan distro juga baik-baik saja, dan distro besar punya rekam jejak yang cukup bagus
Mungkin karena budaya DRY yang berlebihan, atau mungkin karena alasan lain
Dari semua yang pernah saya pakai, saya belum pernah melihat mimpi buruk dependency tree pada tingkat yang sebanding
Di AUR ada 15 ribu paket yatim
Pagi ini saya mengurutkan berdasarkan popularitas, lalu mengadopsi dan membangun 3 paket yang hampir tidak pernah diperbarui
Kalau Anda memakai paket yatim, mungkin layak dipertimbangkan untuk mengadopsinya sendiri sebelum diambil orang jahat
Bisa jadi saya salah, tetapi situasi kali ini tampak seperti sinyal meningkatnya adopsi Linux desktop
Saya belum pernah membutuhkan AUR
Jika butuh paket yang tidak ada di repositori resmi, saya membangunnya sendiri, atau kalau ada rilis biner saya unduh itu
Dengan cara ini, saat build tidak perlu memakai root, dan program bisa diinstal secara lokal untuk satu pengguna, jadi untuk kebanyakan penggunaan desktop justru ini pendekatan yang lebih cocok
Setidaknya, dibanding jalur pengembang → pengguna, ada satu tahap kemungkinan penyisipan malware yang berkurang, yaitu menjadi pengembang → pemelihara → pengguna
makepkgsecara aktif menolak dijalankan sebagai rootKecuali sengaja diakali dengan cara seperti
env EUID=123 makepkg ..., itu tidak akan berjalan sebagai rootNamun akan bagus kalau pacman mendukung instalasi tingkat pengguna
Saat ini ia menolak instalasi jika bukan root, meski bisa diakali dengan namespace pengguna yang memetakan dirinya sebagai root
Saya paham bahwa kali ini yang terlibat adalah AUR
Terlepas ini AUR atau bukan, akan bagus kalau ada yang membagikan langkah-langkah apa saja yang mereka lakukan saat memasang paket, dan bagaimana mereka memastikan paket serta dependensi yang akan dipasang bukan malware
Setelah memasang paket berbahaya, rasanya memang sangat sulit untuk benar-benar memulihkannya