- Pelbagai kempen telah menyalahgunakan pakej dan perkakasan npm React Native yang dipercayai, daripada komponen UI hingga utiliti CLI, melalui pengambilalihan akaun dan typosquatting.
- Penyerang semakin kerap menggunakan perisian hasad berbilang peringkat yang canggih menggunakan Solana atau C2 terdesentralisasi, menyasarkan mesin pembangun, saluran paip CI dan data dompet atau kelayakan.
- Vendor keselamatan kini bergantung pada analisis AI, pemeriksaan cooldown dan kawalan keluar CI yang diperketatkan untuk menangkap dan membendung serangan rantaian bekalan ini dalam beberapa minit.
- Pasukan React Native mesti menggabungkan kebersihan kebergantungan yang ketat, npm 2FA, fail kunci dan pemantauan berterusan untuk mengurangkan risiko rantaian bekalan secara bermakna.

React Native telah menjadi rangka kerja pilihan untuk membina aplikasi mudah alih, yang menjadikan ekosistem npmnya sasaran yang sangat menarik bagi penyerang yang ingin menjejaskan mesin pembangun dan saluran paip CI. Sejak beberapa tahun kebelakangan ini, beberapa kempen yang sangat canggih telah menyalahgunakan pakej React Native yang dipercayai, perkakasan popular di sekitar rangka kerja, dan juga utiliti yang tersilap taip untuk menanam perisian hasad, mencuri kelayakan, mengeluarkan dompet dan mensabotaj projek JavaScript secara besar-besaran.
Jika anda membina atau menyelenggara aplikasi React Native hari ini, tidak lagi mencukupi untuk hanya "memasang npm dan berharap yang terbaik". Pelbagai pelaku ancaman menyalahgunakan npm secara sistematik, menyasarkan segala-galanya daripada komponen UI kepada alat CLI, malah graf kebergantungan transitif yang tersembunyi jauh di dalam fail kunci anda. Artikel ini menerangkan insiden utama yang diketahui, membedah cara perisian hasad berfungsi dan menggariskan langkah pragmatik yang boleh anda ambil untuk mengurangkan jejari letupan pada persekitaran pembangunan anda sendiri.
Pengambilalihan akaun dan perisian hasad dalam komponen input React Native
Salah satu insiden rantaian bekalan yang paling membimbangkan dalam dunia React Native telah menjejaskan dua komponen UI yang sangat biasa untuk pemilihan telefon dan negara: react-native-international-phone-number and react-native-country-select. Kedua-dua pakej, diselenggarakan oleh pengarang yang sama (@AstrOONauta, pengguna npm astroonauta), telah mengumpulkan puluhan ribu muat turun mingguan dan dibenamkan dalam banyak aplikasi mudah alih pengeluaran.
Pada 16 Mac 2026, Penganalisis Pakej berasaskan AI StepSecurity merupakan orang pertama yang mendapati bahawa versi baharu pustaka ini tiba-tiba telah mendapat perisian hasad masa pemasangan. Siaran yang dikompromikan serta-merta adalah react-native-international-phone-number@0.11.8 and react-native-country-select@0.3.91Versi bersih terakhir yang disahkan pada ketika itu ialah 0.11.7 and 0.3.9 masing-masing.
Pintu belakang awal (Gelombang 1) adalah sangat mudah: yang baharu preinstall skrip dan sangat dikaburkan install.js fail yang dibundel ke dalam tarball. Yang berniat jahat package.json petikan kelihatan seperti ini:
"scripts": { "preinstall": "node install.js" }
Kerana skrip kitaran hayat npm berjalan secara automatik pada npm install, sesiapa yang mengeluarkan versi ini – secara setempat atau dalam CI – menjalankan perisian hasad tanpa mengimport sebarang kod. Tiada tag Git, keluaran atau aliran kerja CI yang sepadan untuk versi yang dikompromi, dan gitHead sepadan dengan keluaran baik sebelumnya, petunjuk kuat bahawa penyerang telah mendapat akses penerbitan langsung ke akaun npm penyelenggara dan bukannya mengubah suai repo GitHub.
Data muat turun sekitar masa itu menggariskan betapa teruknya perkara ini: kira-kira 9,000 muat turun mingguan untuk react-native-country-select dan lebih 20,000 untuk react-native-international-phone-number, menambah sehingga lebih daripada 130,000 muat turun sebulan antara kedua-duanya. Inilah jenis kebergantungan volum tinggi dan penglihatan rendah yang secara senyap jatuh pada ribuan mesin pembangun dan CI.
Serangan tiga gelombang: daripada prapemasangan yang jelas kepada rantaian kebergantungan yang tersembunyi
Kempen menentang pakej React Native ini terbahagi kepada tiga gelombang berbeza, setiap lelaran lebih mengelak berbanding yang sebelumnya sambil menggunakan semula perisian hasad teras yang sama. StepSecurity menjejaki evolusi dalam masa nyata dan menyelaras dengan penyelenggara, tetapi penyerang berulang kali mendapatkan semula atau mengekalkan akses kepada akaun npm yang dikompromi.
Gelombang 1 (16 Mac 2026) tertumpu pada aspek langsung preinstall cangkuk pada kedua-dua bungkusan. Dalam masa kira-kira lima minit selepas penerbitan, AI StepSecurity menandakan keluaran baharu itu sebagai kritikal dan isu-isu telah dibuka di GitHub: #165 untuk react-native-international-phone-number dan #11 untuk react-native-country-selectPenyelenggara bertindak balas dengan pantas, menolak versi berniat jahat dan menolak versi bersih react-native-country-select@0.4.0Jumlah masa dari penerbitan hingga penamatan adalah sekitar 2 jam 21 minit – pantas mengikut piawaian ekosistem.
Walaupun begitu, penyerang tidak pernah hilang kawalan terhadap kelayakan npm, yang membawa kepada Gelombang 2 pada 17 Mac. Daripada memasukkan skrip yang jelas ke dalam pakej utama sekali lagi, pelaku ancaman tersebut telah mengadakan dua pakej berskop baharu untuk bertindak sebagai infrastruktur tersembunyi:
@usebioerhold8733/s-format@2.0.1– klon berongga bagistring-formatdenganpostinstall: "node init.js"skrip tetapi tiadainit.jsfail, jadi cangkuk gagal secara senyap.@agnoliaarisian7180/string-argv@0.3.0– pakej yang hampir kosong (README, LICENSE, package.json) yang tujuan sebenar hanya bergantung pada@usebioerhold8733/s-format, dengan alamat penyelenggara berasaskan ProtonMail.
Pada petang itu, react-native-international-phone-number@0.12.1 telah diterbitkan dengan @agnoliaarisian7180/string-argv@0.3.0 ditambah sebagai kebergantungan baharu, sekali lagi tanpa sebarang aktiviti Tindakan GitHub. Pada ketika itu, rantaian itu telah dipentaskan tetapi tidak aktif, menunggu muatan dihidupkan. Apabila StepSecurity melaporkan anomali tersebut, penyelenggara mengesahkan apa yang sudah jelas daripada artifak tersebut: "akaun npm saya telah diserang dan perpustakaan telah diambil alih".
Gelombang 3 (18 Mac) telah menukar infrastruktur berperingkat kepada rantaian penghantaran perisian hasad berbilang lapisan yang aktif dan kemudian memperhalusinya secara berturut-turut. Versi baharu bagi kedua-dua pakej geganti dan pustaka utama telah dikeluarkan dalam masa kurang daripada sejam, dengan penyerang mengulangi cara muatan dilancarkan.
Rantai terakhir kelihatan seperti ini:
react-native-international-phone-number@0.12.2/0.12.3 → @agnoliaarisian7180/string-argv@latest → @usebioerhold8733/s-format@latest → postinstall → node child.js → init.js (malware)
Penyerang mula-mula menghidupkan muatan dalam @usebioerhold8733/s-format@2.0.2 dengan menambah yang besar dan dikaburkan init.js fail yang bait demi baitnya sama dengan yang sebelumnya install.js daripada Gelombang 1. Mereka kemudian mengubah postinstall untuk memanggil child.js bukan init.js, diterbitkan 2.0.3 dengan skrip yang hilang (satu lagi percubaan kering), dan akhirnya dihantar 2.0.4 dengan yang kecil child.js pemuat yang hanya memeriksa init.js dan melaksanakannya melalui child_process.exec sambil membuang ralat dan output stderr.
Pada masa yang sama, @agnoliaarisian7180/string-argv@0.3.1 mengalihkan kebergantungannya kepada s-format daripada versi yang disematkan kepada "latest", dan react-native-international-phone-number@0.12.2 melakukan perkara yang sama dengan string-argv. Ini mewujudkan rantaian berniat jahat yang mengemas kini sendiri di mana setiap pemasangan pakej utama secara automatik menarik versi muatan terbaharu.
Akhirnya, react-native-international-phone-number@0.12.3 mengalih keluar cangkuk prapemasangan yang kini tidak perlu (untuk kelihatan lebih bersih), mengekalkan rantaian kebergantungan yang berniat jahat, dan menukar e-mel penyelenggara npm kepada akaun ProtonMail lain yang bukan dimiliki oleh pengarang asal. Itu adalah petanda jelas bahawa penyerang sedang menyatukan kawalan berterusan ke atas identiti npm, bukan sekadar menggunakan semula token yang bocor secara oportunis.
Di dalam perisian hasad yang disokong Solana yang menyasarkan pembangun React Native
Di sebalik semua itu, muatan yang berjalan dalam ketiga-tiga gelombang tersebut adalah perisian hasad berbilang peringkat yang sama yang menyalahgunakan rantaian blok Solana sebagai saluran arahan dan kawalan yang dinamik. Mekanisme penyampaian terus berubah, tetapi "senjata" kekal sama merentasi semua lelaran, sehingga menjadi fail yang sama bait demi bait apabila dipindahkan dari Gelombang 1 ke dalam infrastruktur Gelombang 3.
Skrip bermula dengan kelewatan 10 saat yang disengajakan menggunakan setTimeout, helah pengelakan kotak pasir klasik. Banyak kotak pasir automatik dan alat keselamatan hanya memberikan skrip tempoh pelaksanaan yang singkat sebelum memutuskan tiada apa yang mencurigakan berlaku, jadi perisian hasad hanya menunggu mereka sebelum melakukan sesuatu yang menarik.
Seterusnya, ia melakukan penapis geo untuk mengelakkan jangkitan pada sistem di Rusia dan sebahagian CIS. Ia memeriksa pembolehubah persekitaran seperti LANG, LANGUAGE, LC_ALL, maklumat pengguna hos, zon waktu sistem dan juga ofset UTC mentah, mencari nilai yang menunjukkan lokasi Rusia (seperti ru_RU or Russian) atau salah satu daripada senarai zon waktu Rusia/CIS. Jika mana-mana daripada ini sepadan, skrip akan keluar serta-merta dan senyap.
Hanya jika persekitaran lulus semakan itu, barulah perisian hasad mula bercakap dengan rantaian blok Solana. Ia menyimpan alamat dompet berkod keras dan menanyakannya melalui getSignaturesForAddress Kaedah JSON‑RPC merentasi sembilan titik akhir Solana RPC berbeza yang dihoskan oleh pelbagai penyedia. Reka bentuk ini memberikan penyerang ketersediaan yang tinggi dan menjadikan penyekatan domain atau IP mudah tidak berkesan.
Caranya ialah penyerang menyembunyikan URL muatan peringkat seterusnya di dalam medan memo transaksi Solana ke dompet tersebut. Memo tersebut menyimpan gumpalan JSON yang dikodkan base64 yang link Medan ini mengandungi URL peringkat seterusnya. Dengan menyiarkan transaksi baharu, operator boleh memutar URL muatan pada bila-bila masa tanpa mengubah suai pakej npm yang diterbitkan.
Sebaik sahaja URL diekstrak, perisian hasad akan melakukan permintaan HTTP kepada pelayan penyerang di http://45.32.150.251/, menghantar jenis OS dalam tersuai os pengepala supaya C2 boleh mengembalikan binari khusus platform. Badan respons membawa muatan yang disulitkan, tetapi kunci AES‑256 dan IV yang diperlukan untuk menyahsulitnya hanya dihantar dalam pengepala HTTP (secretkey and ivbase64), jadi sebarang data badan yang di-cache atau dipintas tidak berguna dengan sendirinya.
Peringkat kedua yang dinyahsulit tidak pernah menyentuh cakera; ia dilaksanakan dalam ingatan dengan eval(atob(...)) pada sistem seperti Unix atau melalui vm.Script pada Windows dengan akses penuh kepada dalaman Node. Selepas itu, perisian hasad tersebut menjatuhkan ~/init.json Fail penanda yang menyimpan cap waktu dan pengecam unik supaya mesin yang sama tidak dijangkiti semula lebih daripada sekali setiap 48 jam. Pengehadan kadar itu mengurangkan hingar secara mendadak dan memberikan lebih sedikit petunjuk tingkah laku kepada pembela.
Muatan peringkat ketiga yang dinyahsulit AES, yang diperoleh semula oleh penyelidik dengan memainkan semula langkah Solana dan HTTP yang sama, ialah pemuat serta pencuri dompet dan kelayakan yang berpusatkan Windows. Ia mewujudkan kegigihan dengan schtasks dan juga Run kunci pendaftaran, memuat turun modul disulitkan tambahan daripada 45.32.150.251, dan mengeluarkan hasil rampasan yang terhasil ke IP dalam julat 217.69.3.x.
Muatan ini memburu data daripada dompet desktop dan sambungan pelayar seperti MetaMask, Phantom, Exodus, Atomic, Guarda, Coinomi, Daedalus, OKX Wallet, Trust Wallet, Braavos dan banyak lagi, melalui folder profil pelayar dan direktori dompet setempat selepas Chrome dan Firefox ditutup secara paksa. Selain itu, ia menarik token npm dan kelayakan GitHub terus daripada konfigurasi tempatan dan pembantu kelayakan, menjadikan kotak pembangun yang dikompromi menjadi pad pelancaran yang sempurna untuk serangan rantaian bekalan selanjutnya.
Terutamanya, perisian hasad itu juga memuat turun masa jalan Node.jsnya sendiri (v22.9.0) untuk kedua-dua x86 dan x64 ke dalam %APPDATA%\_node_x86 and %APPDATA%\_node_x64, memastikan ia mempunyai persekitaran pelaksanaan yang konsisten walaupun Node tidak dipasang pada sistem sasaran.
Pautan ke ForceMemo dan pelakon ancaman GlassWorm
Cap jari teknikal insiden npm React Native ini hampir selari dengan kempen sebelumnya yang digelar "ForceMemo", yang telah menjejaskan ratusan repositori Python di GitHub. Kedua-dua operasi menggunakan Solana sebagai dead-drop C2, kumpulan sembilan titik akhir RPC yang sama, format memo JSON yang sama dengan link medan, logik penapisan geo Rusia/CIS yang sama, sama ~/init.json kunci kegigihan dan juga julat infrastruktur serupa yang dihoskan di Vultr.
Walaupun alamat dompet Solana berbeza antara kedua-dua kempen, semua yang lain menunjukkan satu pelakon yang sangat berkebolehan, dipercayai sebagai kumpulan yang dikenali sebagai GlassWorm. ForceMemo menyasarkan pembangun melalui repositori GitHub yang diracuni, manakala insiden React Native melakukannya melalui pakej npm dan rantaian kebergantungannya. Strateginya jelas: gunakan semula rangka kerja perisian hasad modular yang canggih tetapi sambungkannya ke saluran pengedaran yang berbeza untuk mencapai seberapa banyak persekitaran pembangunan yang mungkin.
Kempen npm berniat jahat lain di sekitar React Native dan JavaScript
Kompromi AstroONauta hanyalah sebahagian daripada gelombang serangan berasaskan npm yang lebih luas yang mempengaruhi aplikasi React Native secara langsung atau tidak langsung. Beberapa vendor keselamatan telah mendokumentasikan kempen selari yang memfokuskan pada pustaka UI React Native, perkakasan CLI teras dan juga pemalam binaan generik yang banyak bergantung pada pangkalan kod React Native.
Aikido Security telah mendedahkan operasi rantaian bekalan utama pada Jun 2025 yang telah menyelinap masuk ke dalam sekurang-kurangnya 16 pakej berkaitan React Native di bawah... @react-native-aria/* skop tambah @gluestack-ui/utils, secara kolektifnya menyediakan sekitar satu juta muat turun mingguan. Pelanggaran awal berlaku pada 6 Jun 2025, bermula dengan @react-native-aria/focus@0.2.10, kemudian berkembang dengan pantas merentasi fokus tambahan, tindanan, interaksi, togol, suis, kotak pilihan, radio, butang, menu, kotak senarai, tab, kotak kombo, pendedahan, gelangsar, pakej pemisah dan utiliti GlueStack pada 7 Jun.
Perisian hasad dalam kempen itu ialah Trojan Akses Jauh (RAT) yang disesuaikan untuk persekitaran Windows, yang berterusan di bawah %LOCALAPPDATA%\Programs\Python\Python3127 dan menyambung ke pelayan C2 di 136.0.9[.]8 and 85.239.62[.]36. Keupayaannya termasuk pelaksanaan arahan sewenang-wenangnya, muat naik/muat turun fail dan akses jarak jauh jangka panjang. Kegigihan bermakna bahawa hanya menaik taraf kepada versi bersih pustaka React Native tidak membersihkan mesin yang telah dijangkiti.
Satu lagi kempen jangka panjang yang didedahkan oleh Pasukan Penyelidikan Ancaman Socket menggunakan kesalahan taip dan peniruan untuk menanam pakej pemusnah yang secara eksplisit menyasarkan rangka kerja JavaScript popular seperti React, Vue, Vite dan Quill. Pelakon ancaman, menggunakan alias npm xuxingfeng, menerbitkan campuran pakej yang sah dan berniat jahat selama lebih dua tahun, mewujudkan gambaran permukaan sebagai penyelenggara yang boleh dipercayai.
Pakej seperti vite-plugin-bomb, vite-plugin-bomb-extend, vite-plugin-react-extend, vite-plugin-vue-extend and vue-plugin-bomb direka bentuk bukan untuk mencuri data tetapi untuk merosakkan atau memusnahkan projek secara aktif. Mereka melaksanakan serangan berbilang fasa yang dicetuskan oleh tarikh tertentu, memadam fail rangka kerja kritikal di bawah node_modules (Vue, React, Vite, TypeScript, Ant Design Vue, Pinia, ECharts dan banyak lagi), kadangkala digandingkan dengan penutupan sistem paksa setiap saat menggunakan shutdown -s -t 5.
Satu pakej yang sangat buruk, js-hood, diusik dengan prototaip JavaScript teras seperti Array.prototype.filter, map, push, pop dan berbilang String kaedah, menggantikannya dengan fungsi yang kelihatan sah secara sintaksis tetapi mengembalikan data rawak. Ini mengakibatkan aplikasi yang terus berjalan namun menghasilkan keputusan yang rosak dan tidak pasti yang sangat sukar untuk dinyahpepijat.
. quill-image-downloader siri ini telah pergi ke arah yang lain, dengan memberi tumpuan kepada sabotaj storan bahagian klien. Ia menghantar seni bina tiga fail yang, selepas tarikh pengaktifan tertentu, akan mengulangi semua kekunci dalam localStorage, sessionStorage dan kuki, dan kemudian mengacaukan sebahagian nilainya dengan aksara rawak sambil mengekalkan struktur. Token pengesahan, troli beli-belah, pilihan pengguna dan sebarang keadaan sisi pelayar menjadi rosak secara halus, menyebabkan kegagalan sekejap-sekejap yang pada mulanya akan dikaitkan oleh banyak pasukan dengan pepijat aplikasi.
Kajian berasingan daripada OP Innovate mendedahkan sekumpulan sepuluh pakej npm berniat jahat yang menyamar sebagai pustaka terkenal seperti TypeScript, discord.js, ethers.js, nodemon, react-router-dom and zustand. Setelah dipasang, pakej-pakej ini memaparkan tetingkap CAPTCHA palsu, cap jari hos dan memuat turun pencuri maklumat lintas platform yang besar daripada C2 di 195.133.79.43, sekali lagi dengan sokongan eksplisit untuk Windows, macOS dan Linux.
Akhirnya, kempen CanisterWorm, yang diperincikan oleh Aikido, menunjukkan sejauh mana penyerang sanggup mengeksploitasi npm sebagai kenderaan penghantaran. Lebih 135 pakej daripada akaun penerbit yang dikompromi telah dipersenjatai dengan skrip masa pemasangan yang dilaksanakan sebelum mana-mana kod aplikasi atau langkah binaan anda. Peringkat seterusnya bertindak berbeza bergantung pada sama ada ia mendarat di kotak pembangunan tempatan, kerja CI atau nod binaan kontena, dan ia berkomunikasi dengan kanister Komputer Internet (ICP) terpencar yang berfungsi sebagai C2 senyap – membolehkan pengendali mengubah tingkah laku dengan pantas tanpa perlu menyentuh pendaftaran npm lagi.
Kerentanan kritikal dalam perkakasan React Native: Komuniti CLI RCE
Tidak semua risiko keselamatan React Native datang daripada pakej berniat jahat; sesetengahnya berpunca daripada kelemahan serius dalam alat yang digunakan secara meluas. Satu kes penting ialah CVE‑2025‑11953 dalam React Native Community CLI, satu pakej yang ditarik berjuta-juta kali setiap minggu oleh pembangun pada Windows, macOS dan Linux.
Kecacatan ini membenarkan Pelaksanaan Kod Jauh (RCE) yang tidak disahkan melalui permintaan POST yang dibuat kepada pelayan pembangunan tempatan yang dimulakan oleh CLI. Oleh kerana ramai pembangun mendedahkan pelayan metro/pembangunan mereka pada rangkaian untuk penyahpepijatan atau pengujian peranti mudah alih, penyerang berdekatan (atau seseorang yang boleh menghalakan trafik ke port tersebut) boleh menjalankan arahan sewenang-wenangnya pada mesin pembangun.
Impaknya melangkaui satu stesen kerja pembangun: Sebaik sahaja penyerang melaksanakan kod pada kotak pembangunan, mereka boleh beralih ke rangkaian korporat, mengikis kelayakan, membina racun atau memanipulasi saluran paip CI/CD yang disegerakkan daripada mesin tersebut. Ia merupakan contoh buku teks tentang bagaimana "hanya alat pembangunan tempatan" merupakan sebahagian daripada permukaan serangan pengeluaran anda apabila anda bekerja pada sistem yang disambungkan ke awan.
Mitigasi yang disyorkan adalah mudah tetapi tidak boleh dirundingkan: kemas kini kepada React Native Community CLI 12.5.1 atau lebih tinggi, log audit untuk permintaan POST yang mencurigakan atau proses yang tidak dijangka yang dihasilkan oleh pelayan pembangunan, hadkan akses kepada pelayan tempatan dan masukkan perkakasan pembangunan ke dalam strategi pengesanan ancaman anda. Anggap mana-mana DevOps atau titik akhir pembangun sebagai sasaran bernilai tinggi, kerana begitulah cara penyerang moden melihatnya.
Bagaimana pertahanan bertindak balas: Analisis AI, cooldown dan CI yang diperkuat
Kelebihan dalam kisah-kisah ini ialah komuniti keselamatan semakin pantas dan canggih dalam menangani ancaman rantaian bekalan terhadap React Native dan ruang JavaScript yang lebih luas. Alat seperti StepSecurity, Socket dan Aikido Security banyak melabur dalam analisis tingkah laku, pembezaan automatik dan model pembelajaran mesin yang mengimbas keluaran npm baharu dalam beberapa minit selepas penerbitan.
Dalam serangan AstroONauta, Penganalisis Pakej AI StepSecurity mengesan versi berniat jahat dalam masa kurang daripada lima minit, membuka isu GitHub dengan kerosakan teknikal penuh dan kemudian melaporkan pakej infrastruktur skop penyerang kepada npm untuk dialih keluar. Pasukan tersebut mendokumentasikan setiap gelombang, menjejaki kepala git, menganalisis kod yang dikaburkan, menunjukkan bukti penggunaan Solana C2 dan memberikan panduan pemulihan langkah demi langkah kepada penyelenggara.
Di luar pengesanan, kawalan pencegahan mula mendapat daya tarikan dalam saluran paip CI. Contohnya, Semakan Masa Sejuk Pakej npm StepSecurity membolehkan organisasi menyekat kebergantungan yang diterbitkan hanya beberapa jam yang lalu, sekali gus memberi masa kepada pengimbas dan manusia untuk memeriksanya. Semakan kemas kini yang terjejas merujuk silang suapan pakej yang diketahui buruk dan sentiasa dikemas kini dan gagal pada PR yang cuba menambah atau menaik tarafnya.
Peralatan yang peka rangkaian seperti Harden-Runner mengehadkan sambungan keluar dalam GitHub Actions dan kerja CI lain kepada senarai titik akhir yang dijangkakan yang dibenarkan. Dalam dunia di mana perisian hasad mengambil muatan daripada nod RPC Solana, URL Kalendar Google, julat IP Vultr atau kanister ICP, mengunci jalan keluar daripada sistem binaan anda boleh menjadi perbezaan antara perbezaan pakej yang buruk dan pencerobohan sepenuhnya.
Dari segi tindak balas, ciri seperti carian pakej seluruh organisasi dan pusat ancaman membantu pasukan memetakan jejari letupan dengan cepat. Sebaik sahaja pakej atau plugin React Native yang dikompromi dikenal pasti, pasukan keselamatan boleh melihat repositori, cawangan dan fail kunci yang menyertakannya, tugas yang melaksanakannya dan mesin yang berkomunikasi dengan IP yang mencurigakan – dan kemudian mengutamakan pemulihan sewajarnya merentasi berpuluh-puluh atau beratus-ratus pangkalan kod.
Tindakan praktikal untuk pasukan React Native yang menghadapi perisian hasad npm
Bagi pembangun dan jurutera keselamatan React Native, pertahanan terhadap serangan peringkat npm adalah tentang menggabungkan kebersihan pada mesin individu dengan penghadang dalam CI/CD dan pengurusan kebergantungan. Tiada kawalan tunggal yang akan menyelamatkan anda, tetapi pertahanan berlapis secara mendadak mengurangkan kemungkinan pakej berniat jahat bertukar menjadi kompromi sepenuhnya.
Jika anda menggunakan pakej yang dikompromi yang disebut sebelum ini, terdapat beberapa pemeriksaan segera yang perlu dilakukan. Untuk insiden AstrOOnauta, pin react-native-international-phone-number ke versi 0.11.7 and react-native-country-select kepada 0.4.0, mengelakkan semua versi yang ditandai sebagai berniat jahat atau menyelesaikannya @latest yang kini dipadankan dengan keluaran yang dikompromi.
Periksa direktori utama anda untuk fail bernama init.json di bawah profil pengguna (contohnya ~/init.json pada Unix dan ~\init.json pada Windows). Kehadirannya menunjukkan perisian hasad berasaskan Solana telah dilaksanakan sekurang-kurangnya sekali. Audit juga log rangkaian keluar daripada stesen kerja pembangun dan pelari CI untuk sambungan ke 45.32.150.251, titik akhir Solana RPC yang digunakan dalam kempen atau alamat C2 lain yang disebut sebelum ini (cth. 136.0.9[.]8, 85.239.62[.]36, 195.133.79.43, 217.69.3.152).
Semak anda node_modules dan fail kunci untuk kebergantungan petunjuk seperti @agnoliaarisian7180/string-argv, @usebioerhold8733/s-format dan yang berniat jahat @react-native-aria/* or @gluestack-ui/utils versi yang disenaraikan dalam nasihat. Jika anda menemui mana-mana daripadanya, anggap mesin tersebut berpotensi dikompromi dan putar semua kelayakan sensitif: token npm, token akses GitHub, kunci SSH, kunci penyedia awan dan sebarang rahsia yang terdapat dalam .env atau fail konfigurasi semasa pemasangan.
Melangkah ke hadapan, ketatkan sikap rantaian bekalan anda untuk kerja React Native: sentiasa komit dan kuatkuasakan fail kunci (package-lock.json, yarn.lock, pnpm-lock.yaml), dayakan 2FA pada semua akaun npm dengan hak penerbitan dan konfigurasikan CI anda untuk gagal membina apabila kebergantungan baharu muncul tanpa semakan. Pertimbangkan untuk menjalankannya dengan --ignore-scripts semasa memasang pakej pihak ketiga dalam konteks yang tidak dipercayai dan sambungkan alat pengimbasan kebergantungan ke dalam aliran kerja setempat dan CI.
Akhir sekali, layan persekitaran pembangunan – terutamanya yang digunakan untuk aplikasi React Native yang menghubungkan API mudah alih, web dan backend – sebagai sebahagian daripada permukaan serangan pengeluaran anda. Sama ada ancaman itu merupakan pengambilalihan akaun yang menjatuhkan perisian hasad yang disokong Solana ke dalam komponen input telefon, pemalam Vite yang ditipu yang memadamkan React daripada node_modules, integrasi Quill yang berniat jahat yang mengacau storan bahagian klien atau RCE dalam CLI Komuniti Natif React, benang merah yang sama ialah penyerang kini melihat perkakasan pembangun sebagai salah satu laluan paling cekap ke dalam permata mahkota organisasi anda.

