At Xygeni, kami telah sibuk sepanjang tahun lalu melaksanakan sistem komprehensif yang memantau pendaftaran pakej sumber terbuka awam untuk aktiviti yang mencurigakan atau kod berniat jahat yang sememangnya.
Infrastruktur ini membolehkan kami menganalisis semua pakej yang diterbitkan setiap hari dalam masa nyata. Selain itu, ia membolehkan kami memantau tingkah laku pengguna yang tidak normal.
Walaupun kehadiran kod berniat jahat dalam daftar pakej diketahui umum, terdapat juga tingkah laku pelik atau luar biasa lain yang langsung tidak disedari oleh pengguna tetap daftar ini. Malah bagi kita yang sentiasa memerhatikannya, bukanlah mudah untuk mencari sebab atau penjelasan bagi tingkah laku sedemikian.
Apa yang mencirikan pasukan Xygeni ialah kegigihan kami ketika menghadapi masalah, jadi kami mengkaji perkara ini dengan lebih mendalam.
Semuanya bermula dengan lonjakan statistik
Seperti yang saya nyatakan sebelum ini, sebagai sebahagian daripada infrastruktur kami, kami memantau banyak metrik aktiviti dalam daftar pakej sumber terbuka awam.
Pada hari-hari terakhir bulan Mac, rakan sekerja saya, Carmen, telah memaklumkan perkara ini. Kami mula melihat penyimpangan yang ketara dalam bilangan pakej yang diterbitkan di NPM. Selepas semakan awal, kami mendapati bahawa sisihan ini disebabkan terutamanya oleh bilangan pengguna yang agak kecil yang kadar penerbitan pakejnya tiba-tiba melonjak naik.
Ini mendorong kami untuk menyemak semula proses kami dan data yang berkaitan dengannya dalam platform. Nasib baik, semakan kami mendapati bahawa data tersebut nampaknya betul, tetapi ini juga agak membingungkan!
Setelah pemeriksaan lanjut, kami mendapati bahawa pakej-pakej ini berkongsi beberapa ciri umum:
- Penerbit-penerbit tersebut merupakan pengguna yang baru diwujudkan, paling lama tidak lebih daripada satu atau dua bulan.
- Pakej-pakej tersebut mempunyai nama yang nampaknya rawak, mungkin dijana dengan menggunakan kamus. Kita boleh menemui nama pakej yang mempunyai nama yang pelik seperti senyuman-hama-besar-tea, erick-mangut94-sukiwir, aplikasi_reptilia_eksotik or obvious_tuna-appteadevKami akan sertakan lampiran dengan beberapa contoh aset yang telah kami temui.
- Kandungan pakej-pakej ini sangat serupa, selalunya sama.
Dalam konteks ini, kami mendapati bahawa salah satu pakej tersebut merangkumi skrip Python, mungkin secara tidak sengaja, yang nampaknya digunakan untuk menerbitkan pakej secara automatik.

Membongkar jaring
Aktiviti penerbitan untuk sebahagian penerbit ini pada bulan lepas telah dijalankan mengikut carta garis masa berikut:

Berikut adalah statistik penuh berkaitan acara ini yang boleh kami kongsikan:

Tiada apa yang relevan muncul daripada ulasan individu terhadap beberapa pakej yang berkaitan dengan pengguna ini. Ini membawa kami untuk menganalisis gambaran keseluruhan mereka semua, mencari corak yang mungkin memberikan petunjuk tentang kejayaan ini.
Lagipun, kami mempunyai beberapa pakej yang baik untuk dianalisis:

Berikut adalah perkara-perkara penting yang boleh kami ketengahkan daripada analisis tersebut:
- Kebanyakan pakej NPM saling berkaitan. Ada yang dirujuk sebagai kebergantungan kepada pakej lain.
- Walaupun merupakan pakej yang pelik dan mungkin tiada siapa yang tahu tentang kewujudannya, sesetengahnya mempunyai banyak muat turun mingguan. Sukar untuk menerima bahawa pengguna biasa mungkin mahu memuat turun pakej seperti 0mc03esisd.
- Ada yang mempunyai repositori yang berkaitan. Kadangkala pemilik repositori ini kelihatan seperti akaun palsu, sama seperti yang terdapat pada npm.
Nota: Pengguna memuat naik pakej tambahan secara berperingkat, jadi data yang diberikan mungkin sedikit berbeza.

Ini adalah contoh salah satu repositori berkaitan. Ia mengandungi kod beberapa pakej yang diterbitkan. Juga beberapa fail lain, seperti teh.yaml fail.
Bertemu pelakon
Sama ada ini hasil kerja seorang penulis atau beberapa kolaborator adalah sukar untuk ditentukan. Walau bagaimanapun, kami mempunyai beberapa bukti yang mempersempitkan asal usul aktiviti ini:
- Bahasa: Komen tertentu dalam kod adalah dalam bahasa Indonesia.

- Lokasi: Sesetengah pemilik repositori berkaitan menunjukkan lokasi mereka di Indonesia.
- Lokasi yang boleh kami kenal pasti melalui metadata aktiviti di GitHub juga menunjukkan Indonesia.

Teh pukul lima
Memandangkan Indonesia merupakan tanah jajahan British, ia sangat sesuai untuk menikmati teh di sini. Walau bagaimanapun, dalam kes ini, ia adalah sejenis teh yang agak istimewa.
Adakah anda masih ingat? teh.yaml fail yang kami lihat pada mulanya? Pada masa itu, kami tidak menunjukkan kandungannya, tetapi ia kelihatan seperti ini:

Fail-fail ini nampaknya berkaitan dengan Protokol teh. Tetapi apakah sebenarnya ia? Kami sampai https://tea.xyz/blog/250k-grant-for-open-source-developers, yang membincangkan tentang tujuan:
Tea sedang menggegarkan dunia digital dengan menangani isu pampasan yang tidak mencukupi untuk pembangun sumber terbuka yang telah lama wujud. Penyelesaian isu ini adalah lebih mendesak berbanding sebelum ini, oleh itu kami telah memutuskan untuk menggunakan geran sebanyak $250 sebelum pelancaran protokol ini. Peringkat awal ini bertujuan untuk menyokong penyelenggara projek sumber terbuka yang mempunyai impak yang ketara terhadap ekosistem perisian sumber terbuka dan kedudukan teaRank yang lebih besar daripada 30 di hadapan Testnet Berinsentif Protokol Tea.”

Menurut dokumen protokol teh:
"Untuk sesebuah projek didaftarkan pada Protokol Teh, ia memerlukan fail tea.yaml yang berfungsi sebagai perlembagaan projek untuk mengawal bilangan penyumbang dan bilangan undi yang diperlukan untuk melaksanakan tindakan tertentu."
Selepas mengakses rangkaian teh, kami cuba mencari salah satu pakej yang kami syak reputasinya telah meningkat naik. Kami menemuinya:

Itu seolah-olah menjelaskan apa yang sedang berlaku di sini: Pengguna tertentu meningkatkan projek sumber terbuka mereka dengan populariti rekaan untuk merampas teaRank dan mendapatkan faedah yang disediakan oleh persatuan teh. Lagipun, wang adalah penggerak tertua, selain seks.
Kesimpulan dan pemikiran akhir
Walaupun tiada bukti kod berniat jahat ditemui dalam pakej NPM ini, dan kemungkinan besar ia tidak berniat untuk digunakan oleh sesiapa pun, ia berpotensi melanggar beberapa Syarat Perkhidmatan (TOS) NPM, GitHub atau persatuan teh. Walau bagaimanapun, ini berada di luar skop kerja kami (mereka telah dimaklumkan dan tindakan yang mereka anggap sesuai akan diambil). Penggunaan platform ini secara salah akan menjejaskan kami dan organisasi kami dalam beberapa cara.
Apa yang jelas ialah mana-mana pakej sumber terbuka yang nampaknya tidak berbahaya boleh menyimpan tingkah laku yang sukar difahami tanpa maklumat kontekstual yang lengkap.
Sebagai seorang pembangun, saya mendapati ia mencabar untuk mengawal secara manual semua pakej sumber terbuka yang digunakan dalam aplikasi yang kami bangunkan dan selenggara dengan tahap jaminan tertentu. Tanpa bantuan alat yang mengautomasikan kawalan ini, tugas tersebut boleh menghabiskan masa berjam-jam dalam pasukan kami.
Sentiasa ada pilihan untuk melihat ke arah lain, dengan mempercayai bahawa alam sumber terbuka adalah tempat yang selamat. Mujurlah, saya percaya pemikiran ini tidak begitu meluas hari ini; kes ini boleh dikatakan tidak berbahaya, tetapi baru-baru ini kita mengalami insiden yang jauh lebih serius dengan Pintu Belakang XZ, dan ia belum hanya satu.
Jika anda telah membaca setakat ini, saya harap anda telah menikmati semua selok-belok acara yang menarik ini. Jangan lupa untuk meluangkan beberapa minit untuk mengulas apa yang boleh disumbangkan oleh Xygeni kepada keselamatan organisasi anda.
Lampiran: Senaraikan aset berkaitan untuk dimasukkan ke dalam artikel akhir
NPM pengguna yang lebih relevan berdasarkan bilangan pakej yang diterbitkan: vndra, wanzaty, artknight404, seblakkuah, Mikrositer, kellyman17
Contoh kecil pakej berkaitan mereka: mikrositer, cryndex, arts-dao, seblakkuah, vndrabnb, vndrave, depfif, depsik, depeit, depnin, Dopon, kellymanteasproject.
Beberapa repositori GitHub berkaitan yang mengandungi fail tea.yml:







