Pakej Berbahaya Sumber Terbuka: Masalahnya

Pakej Berbahaya Sumber Terbuka: Masalahnya

Ini merupakan episod pertama dalam siri artikel tentang jenis serangan rantaian bekalan perisian yang paling lazim: serangan yang (ab)menggunakan daftar awam komponen perisian, yang bertujuan untuk projek sumber terbuka untuk memuat naik artifak yang boleh dikongsi dengan pengguna lain. Apabila penjahat menerbitkan perisian berniat jahat di sana, menggunakan pendaftaran sebagai wahana untuk pengedaran perisian hasad, kita akan mengalami serangan rantaian bekalan apabila organisasi mangsa memasang atau menjalankan komponen perisian yang dijangkiti. 

Untuk memudahkan perbincangan, kita akan membincangkan tentang pakej perisian:, komponen dalam bentuk pakej yang dihasilkan oleh pihak ketiga. Ini bukan sahaja termasuk komponen yang digunakan oleh pengurus pakej seperti NPM atau Poetry, tetapi juga komponen sistem pengendalian termasuk pustaka dan binari boleh laku, imej bekas, dan mesin maya, atau sambungan alat untuk alat pembangunan, binaan dan penggunaan. Kita telah melihat pakej berniat jahat di mana-mana. Penjenayah siber tidak kisah: mereka gembira dengan alternatif yang disediakan oleh infrastruktur perisian moden dan menggunakan pendaftaran dan alat yang paling sesuai dengan niat mereka. Jadi, sila ingat bahawa pakej perisian adalah singkatan untuk imej kontena, pakej binari, repositori sumber terbuka dan sambungan atau plugin daripada semua jenis (IDE, CI/CD sistem, alatan binaan). Semuanya kerap diserang.

Siri ini akan mempunyai 5 episod:

  • Apakah Masalah Dengan Pakej Sumber Terbuka? Inilah tema catatan ini. Mengapakah penjenayah daripada pelbagai jenis menerbitkan pakej berniat jahat? Mengapakah saya perlu bimbang?
  • Anatomi Pakej Berniat Jahat: Apakah Trendnya? Dalam episod ini, kita menumpukan pada ancaman yang kita pantau dengan sistem MEW kita, hari demi hari. Dengan hingar latar belakang yang besar disebabkan oleh sejumlah besar paket berniat jahat yang menggunakan typosquatting atau kekeliruan kebergantungan, peratusan serangan yang lebih kecil adalah jauh lebih berbahaya dan menimbulkan risiko yang lebih besar. Bagaimanakah tingkah laku pelaku jahat mengenai OS berubah sejak kebelakangan ini? Apakah angka-angkanya? Apakah taktik, teknik dan prosedur yang digunakan, dan tindakan berbahaya yang dilihat?
  • Melindungi Daripada Pakej Berbahaya Sumber Terbuka: Apa yang (Tidak) BerfungsiKebanyakan profesional yang peka terhadap keselamatan mempunyai idea tentang cara menangani ancaman ini. Kami pernah mendengar pengurus keselamatan berkata tanpa teragak-agak bahawa SCA Alat sudah memberitahu anda bila versi pakej adalah perisian hasad. Atau ia bergantung pada komponen perisian yang terkenal dan banyak dikaji semula, di mana sebarang perisian hasad akan dikesan dan dialih keluar dengan segera. Mereka Bahawa mereka menggunakan versi minor/tampalan terbuka untuk mendapatkan pembetulan kerentanan secara automatik, dan itulah cara yang betul dan disyorkan untuk mengurangkan risiko ke atas kebergantungan sumber terbuka, mengikut prinsip "tampalan awal, tampalan kerap". Dalam episod ini, kami akan mengulas mengapa idea-idea ini salah, dan bagaimana salah tanggapan sedemikian menyumbang kepada populariti mekanisme serangan ini, dan kepada risiko besar yang dialami oleh organisasi. Kita akan mengakhiri dengan apa yang berkesan, dan yang manakah usaha dan sumber yang terlibat.
  • Pakej Berbahaya Sumber Terbuka: Pendekatan XygeniDalam episod ini, kami membentangkan strategi yang kami ikuti di Xygeni untuk sistem Amaran Awal Perisian Hasad (MEW) kami. Bagaimanakah sistem berbilang peringkat ini berfungsi dalam masa nyata apabila versi pakej baharu diterbitkan, bagaimana bukti diambil daripada sumber yang berbeza, bagaimana triaj dilakukan, kriteria pengelasan yang manakah kami ikuti dan mengapa beberapa analisis manual masih diperlukan untuk mengesahkan sifat calon pakej berniat jahat? Bagaimanakah maklum balas daripada pasukan dalaman dan pendaftaran kami membantu sistem belajar daripada bukti lepas yang dikumpul untuk mengurangkan positif palsu ke tahap minimum. Dan kami akan menerangkan bagaimana kami membantu NPM, GitHub, PyPI dan infrastruktur utama lain dalam ekosistem sumber terbuka sumber terbuka untuk mengurangkan masa menunggu.. 
  • Mengeksploitasi Sumber Terbuka: Apa yang Diharapkan Daripada Orang JahatSiri ini berakhir dengan memberi tumpuan kepada tindakan terbaharu yang dilakukan oleh pihak musuh untuk menjadikan serangan lebih tersembunyi, lebih sukar dikesan, lebih disasarkan terhadap industri tertentu dan memperoleh lebih banyak manfaat daripada kelas serangan ini. Adakah serangan ransomware akan dihantar menggunakan kenderaan ini? Bagaimanakah penjahat memanfaatkan alat AI untuk menyampaikan pakej berniat jahat yang lebih canggih? Adakah projek popular teratas dalam bahaya? Ini adalah untuk memberi pembaca gambaran tentang perlumbaan senjata ini dan apa yang diharapkan dalam jangka pendek (separuh kedua tahun 2024) dan jangka sederhana (2025). Kita akan mempelajari bagaimana serangan seperti baru-baru ini Pintu Belakang XZ-Utils, atau serangan hidup di luar tanah ke atas pembina elektron pada bulan Mac-Mac 2024 menunjukkan bahawa kita harus terus berwaspada tentang bagaimana musuh berkembang. 

Mari kita mulakan pentas dengan episod pertama: Apa yang berlaku dengan pakej sumber terbuka sumber terbuka yang berniat jahat?

Apakah Masalah Dengan Pakej Sumber Terbuka?

Dalam beberapa tahun kebelakangan ini, semua jenis pesalah menggunakan daftar perisian sumber terbuka sumber terbuka untuk menyampaikan tingkah laku berniat jahat. Aktiviti ini sama tuanya dengan sumber terbuka, tetapi kekerapannya melonjak dalam tempoh tiga tahun yang lalu. 

Menerbitkan komponen berniat jahat ke dalam daftar awam (serangan berasaskan kebergantungan) ialah peperangan gerila asimetri yang digunakan oleh pelaku ancaman untuk mengedarkan perisian hasad, memanfaatkan kepercayaan yang diberikan oleh organisasi terhadap komponen sumber terbuka yang datang daripada pembangun yang tidak diketahui (ingat komik xkcd kebergantunganOleh kerana anda mempercayai pakej dan tidak kisah menyemak kandungan pakej dan kebergantungannya secara manual, serangan ini sangat berkesan. Dan asimetri ini berlaku kerana ia sebahagian besarnya boleh diautomasikan dan penjahat tidak perlu berinteraksi dengan mangsa secara langsung. Mereka hanya memuat naik pakej ke dalam daftar awam dan membiarkannya pergi.

Pakej berniat jahat melonjak sebanyak 6x ganda pada tahun 2022, dan terus berkembang dengan faktor 2.5x ganda pada tahun 2023. Tahun lepas, sejumlah 245,000 pakej berniat jahat telah dilihat, satu angka yang lebih daripada dua kali ganda jumlah keseluruhan daripada tahun-tahun sebelumnya digabungkan. Ini adalah pertumbuhan eksponen! Daripada penyingkiran pakej seperti perisian hasad yang disahkan dalam beratus-ratus sepanjang tahun 2021 dan beribu-ribu sepanjang tahun 2022, kita melihat lebih banyak "kebisingan" latar belakang sepanjang tahun 2023, dengan kadar yang sama untuk tahun ini. Dan tersembunyi di latar belakang itu yang disebabkan oleh penjenayah siber yang tidak canggih yang mengikuti "laluan rintangan paling kurang", sebilangan kecil serangan berprofil tinggi menjadi tajuk utama walaupun di media umum.

Mengapakah masalah ini begitu besar? Terdapat kepercayaan yang berlebihan di seluruh rantaian. Perisian sumber terbuka diedarkan bersama kod sumbernya dan dikeluarkan di bawah lesen yang diberikan. Ya, sesiapa sahaja boleh memeriksa kod sumber; tetapi, siapa yang melakukannya secara bebas? Siapakah, selepas memeriksa bahawa perisian tersebut tidak mempunyai perisian hasad, membina perisian tersebut daripada sumbernya? Siapakah, sebelum menyerahkan komponen yang dibungkus (juga dikenali sebagai pakej) hiliran ke pengurus pakej atau alat binaan, memastikan pakej tersebut tidak dipenuhi dengan perisian hasad dan sepadan dengan kod sumber yang sepatutnya ia datang?

Mengapakah infrastruktur membenarkan serangan semudah itu?

Daftar pakej terbuka, selalunya memerlukan pengesahan minimum identiti penerbit. “Sesiapa sahaja dialu-alukan untuk menerbitkan perisian mereka di sini!” Had untuk penyerang ditetapkan rendah: mereka menggunakan alamat e-mel pakai buang dan akaun GitHubgithub pakai buang untuk mencipta beratus-ratus pakej berniat jahat dalam kempen ringkas seperti pancingan data. Hanya untuk yang disasarkan, kecanggihan yang lebih tinggi diperlukan: Kami melihat malah mencipta repositori sumber GitHub yang boleh dipercayai dengan banyak bintang dan commitdaripada pelbagai penyumbang palsu dan metrik populariti dan penyelenggaraan lain. Mendapatkan pemerhati bintang dan reputasi daripada sumbangan palsu tidak sukar untuk diautomasikan. Kami melihat penyalahgunaan pada infrastruktur perisian terbuka bagi semua jenis, bukan sahaja perisian hasad, seperti insiden protokol teh.

Pengurus pakej direka bentuk untuk kemudahan penggunaan dan bukan untuk keselamatan. Mereka boleh menjalankan skrip pasca pemasangan pra dan pasca pemasangan (kadangkala penyusunan kod natif untuk pustaka adalah perlu). Selain itu, Pengurus pakej memasang pakej daripada pelbagai sumber, dan kadangkala cara lalainya adalah menggunakan daftar awam. Mereka tidak menyemak ketidakpadanan antara metadata dalam permintaan penerbitan dan metadata dalam pakej itu sendiri.

Kebergantungan bersarang dan membentuk graf. Dalam ekosistem tertentu seperti Node (JavaScript), kebergantungan berbutir kecil terkumpul dalam ratusan atau ribuan. Satu perkara ialah mempunyai kawalan ketat ke atas kebergantungan langsung yang diisytiharkan oleh projek perisian saya, tetapi kebergantungan transitif lebih sukar dikawal. Sumber terbuka mengikuti "kawan kawan saya adalah kawan saya". Persaudaraan adalah kebiasaan di Timur Jauh yang liar! Pelakon ancaman mengetahui perkara ini dan menyembunyikan tingkah laku jahat secara mendalam dalam kebergantungan yang tidak jelas yang sering tidak diketahui. Ini berlaku dengan strim peristiwa insiden yang menyasarkan Dompet Copay. 

Beginilah cara perisian sumber terbuka berfungsi sejak penubuhannya. Ia tidak akan banyak berubah. Sesetengah pendaftaran pakej paling baik memerlukan pengesahan dua faktor, dan selalunya hanya untuk pakej yang paling popular. Sesetengah pendaftaran menyediakan skop, ruang nama yang dimiliki oleh organisasi yang telah disahkan, tetapi secara tragis yang lain tidak menyokongnya (PyPI) atau menjadikannya pilihan (NPM).  Adalah menarik untuk diperhatikan bahawa walaupun skim saringan mudah (berdasarkan kawalan DNS atau repositori/organisasi GitHub yang sepadan dengan ID kumpulan) dan membuat Tandatangan PGP wajib untuk semua artifak kecuali checksum mengalih keluar kebanyakan "bunyi", pakej berniat jahat seperti typo, dan mengehadkan sebahagian besar kekeliruan kebergantunganSerangan yang canggih adalah mungkin tetapi jauh lebih sukar, dengan hanya beberapa seperti com.github.codingandcoding:plugin-pengkompil-maven dikenali dengan Maven Central. Dan tidak semua pendaftaran maven mengikuti amalan yang sama!

Kawalan keselamatan pada pengurus pakej mungkin membebankan tetapi tidak menghalang serangan kebergantungan. Masalah dengan pengesahan berbilang faktor ialah untuk automasi, kelayakan yang diperoleh seperti token akses atau kunci APIapi dijana untuk akaun yang akan digunakan dalam panggilan APIapi yang dibuat daripada skrip automasi, tanpa sokongan pengguna interaktif yang menyediakan faktor kedua. MFA adalah baik untuk melindungi akaun pengguna daripada kebocoran kata laluan, tetapi token akses atau kunci APIapi yang dijana perlu dilindungi semasa aktif, atau pemiliknya akan disamarkan oleh musuh. Sebahagian besar kempen rantaian bekalan berasaskan pakej bermula dengan kunci/token yang bocor. Ingat sahaja insiden seperti lejar, 3CX, dan banyak lagi, di mana kelayakan bukan interaktif pertama kali diekstrak dalam pencerobohan awal untuk melancarkan serangan rantaian bekalan.

Respons yang diberikan terhadap ancaman ini tidak cukup mantap. Dalam episod ketiga, kita akan menumpukan pada apa yang berjaya, dan apa yang gagal teruk. Industri perlu bekerjasama secara kolektif dalam standardproses, pendidikan dan perkakasan untuk mengurangkan risiko kepada rantaian bekalan global. Ini bukanlah masalah yang boleh diselesaikan oleh sesebuah organisasi sendiri.

Untuk mengakhiri bahagian ini, salah faham yang penting: kita sedang bercakap tentang berniat jahat pakej, bukan terdedah yang. Kerentanan datang daripada ralat reka bentuk atau pengekodan, yang diperkenalkan secara tidak sengaja, tanpa niat buruk. Kerentanan mungkin dieksploitasi, tetapi kebanyakannya tidak. Pakej berniat jahat sentiasa disengajakan, dan terdapat 100% eksploitasi jika ia dilaksanakan. Tiada risiko yang setanding! Oleh itu adalah paradoks untuk melihat berapa banyak usaha yang dilakukan untuk mengesan dan mengurangkan kerentanan, dan kekurangan langkah yang setara untuk komponen berniat jahat.. 

"Kami memandang serius keselamatan"

Pakej Berbahaya Sumber Terbuka: Masalah 2

Mari kita bayangkan kebiasaannya Perbadanan AcmeAcme, penyedia utama untuk WileCoyote.com, mempunyai kebanyakan perisiannya yang datang daripada pihak ketiga, dengan lebih daripada 80% daripada projek sumber terbuka. Mereka menghasilkan perisian untuk kegunaan dalaman, tetapi mereka juga menyediakan perisian untuk rakan kongsi, penyedia dan pelanggan/pengguna akhir mereka. Acme mempunyai perisian yang ditulis dalam Go, JavaScript, Java, C# dan Python, dan menjalankan kebanyakan perisiannya di awan, di bawah kluster Kuberneteskubernetes. Acme membina imej tersuainya daripada imej asas yang diambil daripada Docker Hub dan daftar lain. Dan mereka juga berkongsi beberapa perpustakaan, pakej dan imej kontena dalam daftar awam.

Acme memandang serius keselamatan. Mereka agak menyedari masalah open source security, dan risiko yang dibawanya. Semua pembangun, pengurus sistem dan jurutera DevOpsdevops menggunakan kunci kripto kecil yang comel itu sebagai pengesahan faktor kedua. Semua commitrepo kod s ditandatangani, perlindungan cawangan diaktifkan dengan semakan kod mandatori, CI/CD rahsia yang dikunci disimpan dalam peti besi rahsia dan dengan pendaftaran dalaman yang sebahagiannya mencerminkan pendaftaran luaran di mana hanya komponen yang dibenarkan dan disenarai putih disimpan. Perisian yang dibina oleh Acme dikehendaki mengambil kebergantungan pihak ketiga daripada pendaftaran ini. 

Mungkin kebanyakan organisasi sesuai dengan profil ini. Pembaca yang dihormati, profil anda pasti sesuai jika anda masih di sini, bukan?

Kemudian pada suatu hari yang malang, seorang pembangun bahagian hadapan yang penting di Acme berlari npm pasang acme-cute-lib, terlupa bahawa @acme/cute-lib adalah kebergantungan skop yang betul. Kesilapan yang tepat tidak penting, banyak perkara mungkin salah walaupun seseorang mengambil alih kawalan sempurna terhadap kitaran hayat perisian. Pembangun kami tidak tahu bahawa kumpulan APT menyasarkan Acme dan menerbitkan komponen berniat jahat di bawah nama itu, dengan cara yang licik supaya tingkah laku berniat jahat hanya diaktifkan apabila perisian dipasang pada komputer Acme. Pakej tersebut tidak dikesan selama berminggu-minggu selepas penerbitannya. 

Skrip pemasangan dijalankan untuk mencari kelayakan (terdapat banyak token akses yang menarik dalam komputer riba pembangun kami), yang membolehkan akses kepada repositori perisian dalaman dan repositori dalaman yang dinyatakan di atas, yang sudah tentu hanya boleh diakses melalui VPN. Kod berniat jahat tersebut berjaya menggunakan sambungan VPN sedia ada dan menerbitkan komponen berniat jahat peringkat kedua ke dalam daftar dalaman, yang menjejaskan pustaka utils biasa yang dikongsi oleh kebanyakan perisian yang dihantar oleh Acme.

Beberapa minggu kemudian, organisasi lain yang menggunakan alat Acme yang diterbitkan mula melihat trafik pelik di rangkaian mereka, dengan trafik menggunakan protokol Acme tetapi diarahkan kepada hos yang menyerupai domain Acme. Trafik telah disulitkan tetapi alat pemantauan sistem menemui akses kepada fail yang tidak dijangka dan pelaksanaan proses yang kelihatan seperti arahan sistem tetapi akhirnya menjalankan fail boleh laku yang dimuat turun. 

Selebihnya adalah sejarah: Acme pada mulanya menafikan bahawa tingkah laku sedemikian boleh dikaitkan dengan mereka dan semua langkah keselamatan telah dilaksanakan. Hanya selepas media sibersekuriti mula bertanya mengapa sumber tingkah laku yang dikesan berasal dari komponen Acme, dan analisis keselamatan menyiarkan betapa penuhnya komponen tersebut dengan perisian hasad yang tersembunyi, Acme terpaksa mengenali kejadian itu dan menghubungi firma tindak balas kejadian. Kempen pemasaran negatif yang menjejaskan keyakinan yang diperolehi dengan susah payah dalam sekelip mata.Acme hanya satu pemasangan npm sahaja lagi dari disaster"adalah tajuk utama yang biasa. Kemudian tuntutan mahkamah dan kontrak yang dibatalkan menyusul.

Adakah anda melihat persamaan dengan insiden lalu yang diketahui? Acme terjerumus ke dalam insiden rantaian bekalan dalam dua fasa, menggunakan campuran kekeliruan/salah taip pergantungan serangan yang menggunakan stesen kerja pembangun sebagai tempat berlabuh untuk menjangkiti komponen yang berakhir dengan perisian yang digunakan oleh pihak ketiga. Bagaimanakah perkara ini dapat dicegah atau dikurangkan? 

Mengapa pakej beracun begitu popular

Insiden hipotetikal ini menunjukkan bahawa walaupun dengan pendekatan yang munasabah terhadap keselamatan sumber terbuka, organisasi memerlukan langkah khusus untuk mengelakkan diri daripada menjadi mangsa perisian hasad dalam komponen sumber terbuka. Secara skematik, pelaku ancaman boleh:

  • Cipta pakej baharu (mengikuti jalan typosquatting atau kekeliruan kebergantungan yang terkenal, ini adalah jalan yang paling banyak dilalui oleh penjahat dalam jumlah yang banyak);
  • Cuba menjangkiti yang sedia ada, sama ada dengan menyuntiknya ke dalam kod sumber, cuba menyamarkannya sebagai penyumbang melalui pull request, atau menggunakan kejuruteraan sosial untuk menjadi penyelenggara (seperti yang dilakukan oleh “Jao Tan” dalam XZ Backdoor atau right9ctrl Pengguna GitHub lakukan dalam strim peristiwa insiden pada musim luruh 2018), atau dengan mendapatkan kelayakan repositori sumber terbuka dan menyamar sebagai penyelenggara;
  • Suntik perisian hasad semasa pembinaan pakej, sama ada dengan menjalankan skrip binaan yang berniat jahat, atau mengganggu muat turun pakej dengan pintasan orang tengah (mujurlah, TLS kini sentiasa diperlukan dalam kebanyakan pendaftaran).
  • Suntik komponen yang dibungkus terus ke dalam pendaftaran, biasanya dengan menangkap kelayakan pendaftaran (alternatif pilihan untuk banyak serangan canggih seperti Acme, di mana stesen kerja yang dikompromi pada peringkat pertama mempunyai token akses pendaftaran dalaman contohnya dalam keadaan biasa .env or ~/.m2/tetapan.xml(pelakon jahat tahu di mana hendak mencari rahsia). Kerentanan dalam daftar juga telah dieksploitasi. 

Daftar keracunan dengan perisian hasad adalah asas serangan kebergantungan. Tiada perkara baharu di bawah matahari: kelazimannya melambung tinggi, tetapi teknik yang sama berfungsi sekarang seperti lima tahun yang lalu.  

Pakej berniat jahat boleh beroperasi semasa pemasangan, semasa pembinaan perisian atau semasa masa jalan. Dan tingkah lakunya terdiri daripada penyaringan maklumat contohnya mengekstrak rahsia untuk percubaan fasa kedua, hingga pengekstrakan kod sumber, menggugurkan perisian hasad tambahan. Dalam episod seterusnya, kami akan membedah pakej berniat jahat dan cara ia diterbitkan.

Bacaan lanjut

Episod seterusnya Anatomi Pakej Berniat Jahat: Apakah Trendnya? akan memberi tumpuan kepada kes sebenar yang kami pantau dengan sistem Amaran Awal Perisian Hasad kami, hari demi hari. Kami akan menyemak jenis perisian hasad yang dilihat, dan taktik, teknik dan prosedur yang menjadi kegemaran. Kami akan mengkaji pengaburan dan bagaimana ia cuba disembunyikan daripada bakal pengulas, teknik pengelakan untuk mengelakkan pengesanan, dan bagaimana ia berkembang dengan telemetri dan pergerakan sisi. Sila nantikan! 

Rujukan

Anatomi Pakej Berniat Jahat: Apakah Trendnya?​

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