Pakej Berbahaya Sumber Terbuka: Pendekatan Xygeni

Ini merupakan episod keempat dalam siri catatan tentang komponen berniat jahat, di mana kami membentangkan Xygeni pendekatan untuk menangani ancaman ini, sebagai sebahagian daripada perlindungan kami untuk Open Source Security

Kami melihat bahawa kepercayaan berlebihan terhadap komponen sumber terbuka sumber tidak pasti dimanfaatkan oleh semua jenis pesalah untuk menyampaikan tingkah laku yang tidak dijangka sama ada untuk dijalankan dalam mesin pembangun, CI/CD sistem, atau terbenam ke dalam perisian organisasi mangsa, supaya ia disampaikan kepada pelanggan organisasi. Kami telah menganalisisnya episod #2 serangan menggunakan daftar awam untuk menghantar perisian hasad dan apa yang telah kita pelajari selepas memerhatikan bagaimana pelaku jahat beroperasi, dan pada sebelumnya episod #3 Kawalan yang berkesan (dan kawalan yang gagal) terhadap ancaman ini telah diperiksa. 

Sekarang tiba masanya untuk melihat pendekatan kita terhadap masalah ini. Dalam episod ini, kami membentangkan strategi yang kami ikuti di Xygeni untuk kami Amaran Awal Perisian Hasad Sistem (MEW). Bagaimana sistem berbilang peringkat ini berfungsi dalam masa nyata apabila versi pakej baharu dikeluarkan, bagaimana bukti diambil daripada sumber yang berbeza, bagaimana triaj dilakukan, kriteria pengelasan yang kami ikuti dan mengapa beberapa analisis manual masih diperlukan untuk mengesahkan sifat calon pakej yang berniat jahat. Kami juga akan menerangkan bagaimana kami membantu NPM, GitHub, PyPI dan infrastruktur utama lain dalam ekosistem sumber terbuka untuk mengurangkan masa menunggu perisian hasad. 

. pipeline

Amaran Awal Perisian Hasad Xygeni (MEW) sedang memproses komponen secara berterusan, sama ada tarball pakej untuk perpustakaan dan rangka kerja untuk ekosistem pengaturcaraan yang disokong seperti JavaScript/Node atau Python, imej kontena Docker/OCI atau sambungan dan plugin untuk alat seperti IDE atau CI/CD sistem. Komponen sedemikian diterbitkan dalam daftar awam dengan tahap pemeriksaan pengguna yang berbeza.

Berikut adalah gambaran skematik tentang cara sistem ini beroperasi:

. penemu Proses mendapat suapan peristiwa penerbitan. Peristiwa penerbitan ialah penciptaan versi baharu komponen baharu atau sedia ada. Memandangkan pendaftaran popular tidak menyediakan mekanisme pub-sub untuk pengguna yang berminat, ini sering dilakukan dengan meninjau pendaftaran untuk peristiwa terkini. Satu projek cemerlang daripada OSSF, suapan pakej, sokongan pendaftaran popular seperti PyPI atau Maven Central, dan menyediakan antara muka berasaskan suapan yang disatukan. Dalam MEW, kami telah menambah beberapa pelaksanaan khusus yang mengurangkan masa menunggu, contohnya dengan replika pangkalan data CouchDB yang digunakan oleh NPM yang selaras dengan pangkalan data pendaftaran awam.

Di Xygeni, kami mempunyai inventori[1] bagi semua komponen (secara langsung atau tidak langsung) yang digunakan oleh perisian pelanggan kami. Koordinat komponen pelanggan diberikan secara berkala kepada MEW untuk mengutamakan analisis: komponen yang digunakan oleh pelanggan kami diproses lebih awal. Keutamaan juga berdasarkan reputasi penerbit dan kekritikan komponen, jadi komponen yang datang daripada penerbit yang mempunyai reputasi rendah juga diutamakan.

. penganalisis kemudian gunakan komponen yang belum selesai dalam barisan keutamaan. Apabila versi komponen dipilih untuk dianalisis, tarballnya dimuat turun daripada pendaftaran. Ambil perhatian bahawa komponen binari yang dibungkus dianalisis: Kebanyakan komponen sumber terbuka biasanya datang daripada repositori sumber terbuka, selalunya di github.com, yang digunakan untuk konteks sahaja, dan perisian hasad sentiasa dicari dalam tarball komponen kerana pelaku ancaman secara sistematik berbohong tentang sumber yang mereka dakwa telah gunakan untuk membina tarball komponen yang mereka keluarkan. 

Dari perspektif pengguna

Saya dengar anda terfikir: Bagaimanakah saya boleh mendapat manfaat daripada mengetahui tentang versi pakej berniat jahat lebih awal? Dalam episod ini "Anatomi Pakej Berniat Jahat: Apakah Trendnya?" kami melihat bahawa jumlah masa menunggu adalah dalam julat hari, manakala pemberitahuan pertama daripada MEW kepada pelanggan yang menggunakan komponen yang terjejas adalah dalam julat minit. Dengan penghadang mudah[2] Anda mungkin menyekat binaan tersebut (terdapat dua tahap amaran, satu automatik sepenuhnya apabila enjin menyimpulkan bahawa terdapat potensi perisian hasad dan pemberitahuan kemudian apabila pasukan keselamatan kami mengesahkan kehadiran perisian hasad melalui pemeriksaan manual). Menunggu sehingga pendaftaran mengesahkan perisian hasad dan mengalih keluarnya daripada pendaftaran biasanya terlalu lewat disebabkan oleh tempoh pendedahan yang panjang.

Organisasi mungkin menggunakan penghadang yang memeriksa sama ada terdapat komponen yang berpotensi mengandungi perisian hasad (dalam mana-mana dua tahap amaran) atau, melalui API, mengetahui dengan cepat sama ada mana-mana kebergantungan langsung atau tidak langsung dalam projek perisian menggunakan komponen berniat jahat.

Cara MEW Berfungsi: Butiran Dalaman

Teras: Enjin Pengesanan Perisian Hasad

Penganalisis menggunakan pengesan yang berbeza untuk menangkap bukti salah laku. Pengesan menggabungkan analisis statik, analisis keupayaan dan analisis konteks[3], seperti yang diterangkan dalam catatan sebelumnya dalam siri ini. 

Di Xygeni, kami mempunyai pasukan kejuruteraan yang berpengalaman luas dalam analisis statik, dan ini merupakan perbezaan utama dengan penyelesaian anti-perisian hasad yang lain. Ambil perhatian bahawa bagi sesetengah ekosistem, tarball yang dibungkus mengandungi sama ada kod sumber (cth. kod JavaScript atau TypeScript untuk pakej NPM, sumber Python untuk pakej PyPI), atau kod terkompilasi yang cukup dekat dengan kod sumber untuk analisis statik (cth. bytecode dalam fail JAR untuk Maven). Bagi yang lain, seperti imej kontena, fail boleh laku binari adalah perkara biasa, jadi inferens keupayaan adalah teknik yang digunakan, bersama-sama dengan pengesanan perisian hasad konvensional berdasarkan peraturan YARA dan tandatangan perisian hasad. 

Sila ambil perhatian bahawa teknologi mudah seperti ungkapan biasa atau tandatangan tidak sesuai untuk mengesan tingkah laku berniat jahat. Bayangkan mengesan penitis atau pemuat turun: Sesetengah kod atau binari terletak dalam pakej atau dimuat turun daripada domain luaran, yang tidak berkaitan dengan komponen (mungkin satu daripada senarai besar domain yang dibeli oleh pelaku ancaman[4], atau a domain yang sah untuk mengelak pengesanan). Kod tersebut kemudiannya dilaksanakan menggunakan salah satu fungsi untuk itu. Kod tersebut boleh diubah untuk menyembunyikan URL muat turun atau fungsi yang digunakan untuk menjalankan kod yang dimuat turun. Analisis aliran data penuh diperlukan untuk mengesannya, menggunakan jentera penuh analisis statik atau pelaksanaan kotak pasir (jika syarat untuk tingkah laku berniat jahat dijalankan sebenarnya dipenuhi) boleh mengesan perkara ini dalam kes umum.

Pelakon ancaman mengikuti teknik yang sama dan pengesan untuk mereka direka bentuk dan dilaksanakan. Terdapat juga beberapa langkah pra-pemprosesan, contohnya untuk menghapuskan pengeliruan, yang sering diperlukan untuk mendedahkan tingkah laku tersembunyi. 

Menambah Konteks

Sesetengah pengesan menggunakan maklumat konteks. Contohnya, ketidakpadanan antara versi dalam pendaftaran komponen dan tag/pelepasan dalam repositori GitHub yang berkaitan merupakan bukti kukuh bahawa mungkin pelaku jahat memperoleh kelayakan penerbitan untuk pendaftaran tetapi bukan untuk repositori GitHub. Serangan seperti yang menjejaskan vendor dompet kripto lejar dapat dikesan dengan mudah melalui ketidakpadanan ini.

A skor niat jahat (MS) dikira daripada penemuan pengesan yang dijalankan, berdasarkan kekuatan bukti yang ditangkap. Tidak semua penemuan adalah sama, dan susunan pelaksanaan adalah relevan. 

Reputasi Pengguna dan Komponen

Tidak semua pembangun sumber terbuka diciptakan sama! 

Akaun NPM pembangun yang bereputasi mungkin dirampas (ini berlaku walaupun dengan orang yang peka terhadap keselamatan), dan perisian hasad diterbitkan menggunakan akaun tersebut. Sudah tentu reputasi sepatutnya jatuh secara tiba-tiba, dan hanya pulih kepada kegemilangan masa lalu apabila akaun yang dirampas itu dipulihkan dan pembangun membetulkan keadaan yang membawa kepada pengambilalihan akaun. Reputasi sukar diperoleh tetapi boleh hilang dalam sekelip mata.  

Di MEW, kami telah melaksanakan sistem pengurusan reputasi yang komprehensif untuk memberi ganjaran kepada tingkah laku positif dan menghukum aktiviti yang mencurigakan. Sistem ini bermula dengan pengguna baharu dalam pendirian neutral dan menyesuaikan reputasi mereka berdasarkan aktiviti berterusan mereka.

Reputasi pengguna bertambah baik melalui tindakan positif seperti mengekalkan akaun media sosial yang aktif, membolehkan pengesahan berbilang faktor, menyumbang secara berkala kepada projek dan menandatangani commits dengan kunci yang boleh disahkan. Sebaliknya, reputasi merosot disebabkan oleh tindakan bermusuhan seperti menerbitkan perisian hasad, menggunakan alamat e-mel pakai buang, tidak menandatangani commits, atau mempamerkan corak luar biasa dalam sumbangan.

Matlamat utama sistem kami adalah untuk memastikan persekitaran yang selamat dan boleh dipercayai. Ia mencapai matlamat ini dengan melaraskan reputasi pengguna secara dinamik berdasarkan pelbagai faktor, di samping menghormati kebimbangan privasi dan batasan pendaftaran yang berbeza.

Skor reputasi dalaman dikira untuk pengguna (menyertai pendaftaran dan akaun github apabila boleh), dan bersama-sama dengan skor niat jahat yang digunakan semasa pengelasan komponen yang dianalisis, dan untuk kelayakan yang lebih baik yang berada di bawah penerbitan komponen.

Bukti Kelakuan Berniat Jahat Telah Ditemui. Jadi Apa? Proses Semakan Manual

Pengelas semasa menetapkan versi komponen yang dianalisis kepada salah satu kategori "disahkan berniat jahat", "mungkin berniat jahat", "berisiko tinggi", "berisiko rendah" atau "tidak berniat jahat" berdasarkan ambang skor yang meringkaskan dapatan dan reputasi pengguna/komponen. Pengelasan kepada kategori "berisiko tinggi" atau "mungkin berniat jahat" mencetuskan semakan manual dan pemberitahuan pertama. Kategori "disahkan berniat jahat" ditetapkan selepas semakan manual atau apabila bukti sepadan dengan bukti yang sama untuk versi sebelumnya yang disahkan berniat jahat. 

Apabila terdapat bukti yang mencukupi untuk potensi tingkah laku berniat jahat, amaran pertama (amaran kuarantin) akan dipancarkan kepada organisasi yang terjejas. Seperti yang dinyatakan sebelum ini, ia mungkin menyekat pemasangan atau binaan perisian yang bergantung pada komponen yang dikuarantin. 

Itu mewujudkan isu dalam dalaman MEW dashboard jadi penganalisis keselamatan boleh memulakan proses semakan manual untuk komponen tersebut. Pasukan ini mempunyai peralatan khusus (kotak pasir, penyahobsu, pengedaran untuk penyelidikan perisian hasad, alat pelaporan perisian hasad) untuk menilai dengan cepat sifat versi komponen yang disiasat. Kebanyakan perisian hasad ("ikan bilis" atau komponen berniat jahat yang tidak canggih) disemak semula.  

Keputusan semakan tersebut menyimpulkan sama ada selamat, jadi enjin analisis automatik menemui positif palsu yang digunakan sebagai maklum balas kepada pengelas pembelajaran mesin untuk mempelajari corak; atau disahkan berniat jahat, jadi komponen tersebut didedahkan secara bertanggungjawab sebagai berniat jahat kepada pendaftaran awam, selepas proses pelaporan. Pemberitahuan kedua dihantar kepada organisasi yang terjejas, yang seterusnya mungkin membatalkan kuarantin komponen tersebut, atau pastinya menyekatnya daripada proses naik taraf versi atau tembok api komponen yang digunakan dalam daftaran dalaman mereka.

Tetapan ini membolehkan kita menganalisis puluhan ribu versi baharu setiap hari dan mengenal pasti puluhan yang mungkin berniat jahat, yang kemudiannya kita semak secara manual. Ingat daripada episod sebelumnya bahawa satu dalam sepuluh ribu ialah kadar komponen berniat jahat yang kita lihat di alam liar pada masa ini. 

Melaporkan kepada Pejabat Pendaftaran

Kami mendapati bahawa kebanyakan pendaftaran awam, salah satu tulang belakang infrastruktur sumber terbuka, menyediakan mekanisme yang agak terhad untuk melaporkan isu keselamatan, dan komponen berniat jahat khususnya. Kami sedang berusaha untuk menambah baik organisasi asas proses pelaporan. Biasanya kami menerima paling banyak e-mel maklum balas daripada pasukan keselamatan dalam pendaftaran yang mengesahkan bahawa komponen tersebut telah dialih keluar daripada pendaftaran. 

Kadangkala pendaftaran disalahgunakan, melanggar syarat penggunaannya, tetapi tidak menyebabkan tingkah laku berniat jahat dalam perisian yang dihantar. Ini juga dilaporkan kepada pendaftaran, tetapi ia tidak dimaklumkan kepada organisasi untuk mengehadkan gangguan.  

Kerja masa depan

Banyak penambahbaikan sedang dalam pelan tindakan. Pertama sekali, a portal awam untuk kesihatan komponen OS, terutamanya berkaitan dengan bukti yang ditemui untuk potensi niat jahat, sedang dalam pembangunan. Ini bertujuan sebagai sumbangan sederhana kepada komuniti sumber terbuka. Nantikan perkembangan selanjutnya. 

Satu lagi perkembangan berterusan ialah penambahbaikan pengelas pembelajaran mesinMEW akan belajar daripada pengelasan lepas. Vektor penemuan daripada pengesan enjin, serta skor niat jahat dan skor reputasi yang diperoleh untuk kedua-dua komponen dan penerbit (“bukti yang ditemui”) digunakan sebagai input kepada sistem pembelajaran mesin yang mengemas kini model pengelas. Pembolehubah output hanyalah jika pendaftaran mengesahkan sama ada komponen itu berniat jahat. Ini dinamakan kod “Oracle” dan akan membantu dengan lebih pra-ciskelayakan e, direka bentuk untuk menjadi kukuh (pengingatan tinggi iaitu jangan terlepas komponen berniat jahat) tetapi dengan lebih sedikit positif palsu (jangan laporkan komponen selamat sebagai berniat jahat). 

A skor kritikal akan ditambah untuk kriteria keutamaan, selain tergolong dalam set kebergantungan pelanggan, dan reputasi penerbit yang rendah. Jelas bahawa projek yang mempunyai lebih banyak pengaruh dan kepentingan harus dipertimbangkan lebih awal untuk dianalisis. Kami tidak akan mencipta semula roda di sini, dan mengikuti Skor Kritikal Projek Sumber Terbuka.

Sokongan untuk ekosistem tambahan sedang dibangunkan. Teknologi dan alatan yang meluas seperti pemalam PHP atau Jenkins sedang dalam perancangan.

Kami juga sedang meneroka sama ada proses semakan manual boleh dibantu dengan AI untuk memperkemas analisis bagi beberapa komponen berniat jahat yang lebih canggih. 

Dalam ansuran seterusnya dan terakhir siri ini, "Mengeksploitasi Sumber Terbuka: Apa yang Diharapkan Daripada Orang Jahat", kami akan menumpukan pada cara terkini yang diambil oleh pihak musuh untuk menjadikan serangan lebih tersembunyi, lebih sukar dikesan, lebih disasarkan kepada industri tertentu dan lebih menguntungkan. Adakah serangan ransomware akan dihantar menggunakan kenderaan ini? Bagaimanakah penjahat memanfaatkan alatan AI untuk menyampaikan perisian hasad yang lebih canggih? Adakah projek popular teratas berisiko? 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 menyimpulkan dengan beberapa pandangan tentang langkah-langkah kecil yang boleh diambil oleh komuniti tanpa mengubah terlalu banyak keterbukaan dunia sumber terbuka. Contohnya, mekanisme yang lebih cekap untuk melaporkan perisian hasad kepada daftar awam dan berkongsi bukti komponen yang berpotensi berniat jahat dengan daftar dan komuniti akan menjadi langkah kecil ke arah yang betul ke arah matlamat menutup pintu kepada pelaku ancaman. 

Perisian hasad dalam komponen sumber terbuka tidak seharusnya mengganggu manfaat besar yang telah dibawa oleh komuniti sumber terbuka kepada masyarakat kita.  

  • [1] Pengimbas kami mengesan komponen sumber terbuka yang dirujuk oleh projek perisian yang dianalisis, jadi graf kebergantungan terkini yang lengkap diketahui, sekurang-kurangnya untuk projek yang diimbas secara berkala. Xygeni OSS mendedahkan API yang mungkin juga digunakan oleh pelanggan semasa menyenaraiputihkan komponen yang diminati, termasuk maklumat untuk kerentanan dan bukti berniat jahat.
  • [2]  Penghadang boleh merosakkan binaan jika isu keselamatan yang sepadan dengan keadaan dikesan. Penemuan keselamatan seperti kerentanan kritikal dan boleh dicapai atau penggunaan komponen yang dikuarantin boleh dianggap cukup teruk untuk merosakkan binaan untuk perisian yang terjejas.
  • [3]Penganalisis keselamatan kami menjalankan komponen atau skrip pemasangannya dalam persekitaran kotak pasir apabila perlu. Walau bagaimanapun, MEW tidak menjalankan analisis dinamik, terutamanya kerana tingkah laku berniat jahat tidak selalunya dilakukan dalam serangan yang disasarkan dan kerana logik pengelakan yang digunakan oleh pelaku ancaman untuk mengelak analisis dinamik. 
  • [4]  Teknik ini diberi nama, Algoritma Penjanaan Domain Berdaftar atau RDGA, dan pelaku ancaman baharu seperti yang dipanggil Arnab Revolver melabur sebanyak 1 juta dolar dalam 500 ribu domain, menunjukkan betapa menguntungkannya industri jenayah siber. 

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