- Meerdere campagnes hebben misbruik gemaakt van vertrouwde React Native npm-pakketten en -tools, van UI-componenten tot CLI-hulpprogramma's, door middel van accountovername en typosquatting.
- Aanvallers zetten steeds vaker geavanceerde, meertrapsmalware in met behulp van Solana of gedecentraliseerde C2-servers, gericht op ontwikkelaarscomputers, CI-pipelines en wallet- of inloggegevens.
- Beveiligingsleveranciers vertrouwen nu op AI-analyses, afkoelingscontroles en versterkte CI-uitgangscontroles om deze aanvallen op de toeleveringsketen binnen enkele minuten te detecteren en in te dammen.
- React Native-teams moeten strikte afhankelijkheidshygiëne, npm 2FA, lockfiles en continue monitoring combineren om het risico in de toeleveringsketen aanzienlijk te verminderen.

React Native is uitgegroeid tot een veelgebruikt framework voor het bouwen van mobiele apps, waardoor het npm-ecosysteem een uiterst aantrekkelijk doelwit is voor aanvallers die de machines van ontwikkelaars en CI-pipelines willen compromitteren. De afgelopen jaren hebben verschillende zeer geavanceerde campagnes misbruik gemaakt van vertrouwde React Native-pakketten, populaire tools rondom het framework en zelfs typosquatting-hulpprogramma's om malware te verspreiden, inloggegevens te stelen, wallets te plunderen en JavaScript-projecten op grote schaal te saboteren.
Als je tegenwoordig React Native-apps bouwt of onderhoudt, is het niet meer voldoende om simpelweg "npm install" uit te voeren en te hopen op het beste. Meerdere kwaadwillende actoren misbruiken npm systematisch en richten zich op alles, van UI-componenten tot CLI-tools, en zelfs op de transitieve afhankelijkheidsgrafiek die diep in je lockfiles verborgen zit. Dit artikel beschrijft de belangrijkste bekende incidenten, analyseert hoe de malware werkt en geeft praktische stappen die je kunt nemen om de impact op je eigen ontwikkelomgeving te beperken.
Accountovername en malware in React Native-inputcomponenten
Een van de meest alarmerende incidenten in de toeleveringsketen in de React Native-wereld trof twee veelgebruikte UI-componenten voor telefoon- en landselectie: react-native-international-phone-number en react-native-country-select. Beide pakketten worden door dezelfde auteur onderhouden (@AstrOOnautanpm-gebruiker astroonauta), hebben wekelijks tienduizenden downloads verzameld en zijn ingebed in veel mobiele apps die in productie zijn.
Op 16 maart 2026 ontdekte StepSecurity's AI-gebaseerde Package Analyst als eerste dat nieuwe versies van deze bibliotheken plotseling malware bevatten die tijdens de installatie werd meegeleverd. De direct gecompromitteerde releases waren react-native-international-phone-number@0.11.8 en react-native-country-select@0.3.91De laatst bevestigde schone versies op dat moment waren 0.11.7 en 0.3.9 respectievelijk.
De eerste achterdeur (Wave 1) was uiterst eenvoudig: een nieuwe preinstall script en een zwaar verduisterd install.js bestand gebundeld in het tarball-bestand. De kwaadaardige package.json Het fragment zag er als volgt uit:
"scripts": { "preinstall": "node install.js" }
Omdat npm lifecycle scripts automatisch worden uitgevoerd op npm installIedereen die deze versies ophaalde – lokaal of in CI – voerde de malware uit zonder code te importeren. Er waren geen overeenkomende Git-tags, releases of CI-workflowruns voor de gecompromitteerde versies, en de gitHead Dit kwam overeen met de vorige succesvolle release, een sterke aanwijzing dat de aanvaller rechtstreeks toegang had gekregen tot het npm-account van de beheerder, in plaats van de GitHub-repository aan te passen.
Downloadcijfers uit die periode laten zien hoe erg dit had kunnen zijn: ongeveer 9,000 downloads per week voor react-native-country-select en meer dan 20,000 voor react-native-international-phone-numberDat komt neer op meer dan 130,000 downloads per maand voor beide apps samen. Dit is precies het soort afhankelijkheid met een hoog volume en lage zichtbaarheid dat ongemerkt op duizenden ontwikkelaars- en CI-machines terechtkomt.
Driefasenaanval: van overduidelijke pre-installatie tot heimelijke afhankelijkheidsketens
De campagne tegen deze React Native-pakketten ontvouwde zich in drie afzonderlijke fasen, waarbij elke fase lastiger te doorgronden was dan de vorige, maar steeds dezelfde kernmalware hergebruikte. StepSecurity volgde de ontwikkelingen vrijwel in realtime en coördineerde met de beheerder, maar de aanvaller kreeg herhaaldelijk opnieuw toegang tot het gecompromitteerde npm-account of behield deze.
Golf 1 (16 maart 2026) concentreerde zich op de directe preinstall haak beide pakketten aan. Ongeveer vijf minuten na publicatie markeerde de AI van StepSecurity de nieuwe releases als kritiek, en er werden problemen gemeld op GitHub: #165 voor react-native-international-phone-number en #11 voor react-native-country-selectDe beheerder reageerde snel, verwijderde de schadelijke versies en bracht een schone versie uit. react-native-country-select@0.4.0De totale tijd van publicatie tot uitfasering bedroeg ongeveer 2 uur en 21 minuten – snel volgens de normen van het ecosysteem.
Desondanks verloor de aanvaller nooit de controle over de npm-gegevens, wat leidde tot Wave 2 op 17 maart. In plaats van opnieuw een voor de hand liggend script in de hoofdpakketten te plaatsen, heeft de aanvaller twee nieuwe, afgebakende pakketten ontwikkeld die als verborgen infrastructuur fungeren:
@usebioerhold8733/s-format@2.0.1– een holle kloon vanstring-formatmet eenpostinstall: "node init.js"script maar het ontbreektinit.jsbestand, waardoor de hook stilzwijgend mislukt.@agnoliaarisian7180/string-argv@0.3.0– een bijna leeg pakket (README, LICENSE, package.json) waarvan het enige echte doel was om afhankelijk te zijn van@usebioerhold8733/s-format, met een op ProtonMail gebaseerd beheerdersadres.
Later die avond, react-native-international-phone-number@0.12.1 werd gepubliceerd met @agnoliaarisian7180/string-argv@0.3.0 Toegevoegd als nieuwe afhankelijkheid, wederom zonder enige activiteit via GitHub Actions. Op dat moment was de keten weliswaar opgezet, maar nog inactief, in afwachting van de activering van de payload. Toen StepSecurity de anomalie meldde, bevestigde de beheerder wat al duidelijk was uit de artefacten: "Mijn npm-account is aangevallen en de bibliotheek is overgenomen."
Golf 3 (18 maart) schakelde de gefaseerde infrastructuur over naar een actieve, meerlaagse malwareleveringsketen en verfijnde deze vervolgens in snel tempo. Binnen een uur werden nieuwe versies van zowel de relay-pakketten als de hoofdbibliotheek uitgebracht, waarbij de aanvaller steeds verbeterde hoe de payload werd gelanceerd.
De uiteindelijke keten zag er als volgt uit:
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)
De aanvaller activeerde eerst de payload in @usebioerhold8733/s-format@2.0.2 door een grote, onduidelijke init.js bestand dat byte voor byte identiek was aan het vorige install.js vanaf golf 1. Vervolgens veranderden ze de postinstall bellen child.js in plaats van init.jsgepubliceerd 2.0.3 Het script ontbrak (nog een proefdraai), en uiteindelijk werd het verzonden. 2.0.4 met een kleine child.js een loader die simpelweg controleert op init.js en voert het uit via child_process.exec waarbij fouten en stderr-uitvoer worden genegeerd.
Op hetzelfde moment, @agnoliaarisian7180/string-argv@0.3.1 veranderde zijn afhankelijkheid van s-format van een vastgepinde versie naar "latest"en react-native-international-phone-number@0.12.2 deed hetzelfde met string-argv. Hierdoor ontstond een zelf-updatende kwaadaardige keten waarbij elke installatie van het hoofdpakket automatisch de nieuwste payload-versie ophaalde.
Tenslotte react-native-international-phone-number@0.12.3 De nu overbodige preinstall-hook is verwijderd (voor een strakker uiterlijk), de schadelijke afhankelijkheidsketen is behouden en het e-mailadres van de npm-maintainer is gewijzigd naar een ander ProtonMail-account dat niet van de oorspronkelijke auteur is. Dat was een duidelijk teken dat de aanvaller bezig was de permanente controle over de npm-identiteit te consolideren, en niet slechts opportunistisch een gelekt token hergebruikte.
Een kijkje in de door Solana ondersteunde malware die zich richt op React Native-ontwikkelaars.
Onder de motorkap draaide in alle drie de aanvalsgolven dezelfde geavanceerde, meerfasige malware die de Solana-blockchain misbruikt als een dynamisch commando- en controlekanaal. Het leveringsmechanisme veranderde voortdurend, maar het "wapen" bleef identiek in alle iteraties, tot op het punt dat het bestand byte voor byte hetzelfde was toen het van Wave 1 naar de Wave 3-infrastructuur werd overgezet.
Het script begint met een opzettelijke vertraging van 10 seconden. setTimeoutEen klassieke truc om aan een sandbox-spel te ontsnappen. Veel geautomatiseerde sandboxes en beveiligingstools geven scripts slechts een korte uitvoeringsperiode voordat ze concluderen dat er niets verdachts is gebeurd. De malware wacht deze periode dan gewoon af voordat hij iets interessants doet.
Vervolgens voert het een geofilter uit om te voorkomen dat systemen in Rusland en delen van het GOS worden geïnfecteerd. Het inspecteert omgevingsvariabelen zoals LANG, LANGUAGE, LC_ALL, hostgebruikersinformatie, de systeemtijdzone en zelfs ruwe UTC-offsets, op zoek naar waarden die een Russische locale aangeven (zoals ru_RU or Russian) of een van de tijdzones van Rusland/GOS uit een lijst. Als een van deze overeenkomt, wordt het script onmiddellijk en geruisloos afgesloten.
Pas als de omgeving die controle doorstaat, begint de malware te communiceren met de Solana-blockchain. Het bevat een vastgelegd walletadres en raadpleegt dit via de getSignaturesForAddress De JSON-RPC-methode maakt gebruik van negen verschillende Solana RPC-eindpunten die door diverse providers worden gehost. Dit ontwerp biedt de aanvaller een hoge beschikbaarheid en maakt eenvoudige domein- of IP-blokkering ineffectief.
De truc is dat de aanvaller de URL van de volgende fase van de aanval verbergt in het memoveld van Solana-transacties naar die wallet. Het memo bevat een reeks base64-gecodeerde JSON-gegevens, waarvan... link Het veld bevat de URL van de volgende fase. Door een nieuwe transactie te plaatsen, kan de operator de payload-URL op elk gewenst moment wijzigen zonder de gepubliceerde npm-pakketten aan te passen.
Zodra de URL is achterhaald, voert de malware een HTTP-verzoek uit naar de server van de aanvaller op http://45.32.150.251/waarbij het besturingssysteemtype op een aangepaste manier wordt verzonden. os header zodat de C2 platformspecifieke binaire bestanden kan retourneren. De responsbody bevat de versleutelde payload, maar de AES-256-sleutel en IV die nodig zijn om deze te decoderen, worden alleen in HTTP-headers verzonden.secretkey en ivbase64), dus alle in de cache opgeslagen of onderschepte lichaamsgegevens zijn op zichzelf nutteloos.
De gedecodeerde tweede fase raakt de schijf nooit aan; deze wordt in het geheugen uitgevoerd. eval(atob(...)) op Unix-achtige systemen of via vm.Script Op Windows met volledige toegang tot de interne werking van Node. Daarna laat de malware een bericht achter. ~/init.json Een markerbestand dat een tijdstempel en een unieke identificatiecode opslaat, zodat dezelfde machine niet vaker dan eens per 48 uur opnieuw geïnfecteerd raakt. Deze beperking van de infectiefrequentie vermindert de ruis aanzienlijk en geeft beveiligingsspecialisten minder aanknopingspunten voor gedragsveranderingen.
De met AES ontsleutelde payload van de derde fase, die door onderzoekers werd teruggevonden door dezelfde Solana- en HTTP-stappen te herhalen, is een op Windows gerichte inloggegevens- en wallet-dief en loader. Het zorgt voor volharding met schtasks en Run registersleutel, downloadt extra versleutelde modules van 45.32.150.251en smokkelt de buit vervolgens naar een IP-adres in het bereik 217.69.3.x.
Deze payload spoort gegevens op uit desktopwallets en browserextensies zoals MetaMask, Phantom, Exodus, Atomic, Guarda, Coinomi, Daedalus, OKX Wallet, Trust Wallet, Braavos en meer, en doorzoekt browserprofielmappen en lokale walletmappen nadat Chrome en Firefox geforceerd zijn afgesloten. Bovendien haalt het npm-tokens en GitHub-referenties rechtstreeks uit lokale configuratie- en referentiehelpers, waardoor gecompromitteerde ontwikkelomgevingen perfecte lanceerplatforms worden voor verdere supply-chain-aanvallen.
Opvallend is dat de malware zelfs zijn eigen Node.js-runtimes (v22.9.0) downloadt voor zowel x86 als x64. %APPDATA%\_node_x86 en %APPDATA%\_node_x64, ervoor zorgen dat er een consistente uitvoeringsomgeving is, zelfs wanneer Node niet op het doelsysteem is geïnstalleerd.
Links naar ForceMemo en de GlassWorm-dreigingsactor
De technische kenmerken van dit React Native npm-incident komen vrijwel perfect overeen met een eerdere campagne genaamd "ForceMemo", waarbij honderden Python-repositories op GitHub werden gecompromitteerd. Beide operaties gebruikten Solana als dead-drop C2, dezelfde groep van negen RPC-eindpunten en hetzelfde JSON-memoformaat met een link veld, identieke geofilteringslogica voor Rusland/GOS, hetzelfde ~/init.json persistent lock en zelfs vergelijkbare infrastructuurreeksen worden gehost op Vultr.
Hoewel de Solana-walletadressen verschillen tussen de twee campagnes, wijst al het andere naar één zeer capabele dader, vermoedelijk de groep GlassWorm. ForceMemo richtte zich op ontwikkelaars via besmette GitHub-repositories, terwijl het React Native-incident dat deed via npm-pakketten en hun afhankelijkheidsketens. De strategie is duidelijk: hergebruik een geavanceerd, modulair malwareframework, maar koppel het aan verschillende distributiekanalen om zoveel mogelijk ontwikkelomgevingen te bereiken.
Andere kwaadwillige npm-campagnes rondom React Native en JavaScript.
De AstroNOnauta-hack is slechts één onderdeel van een bredere golf van op npm gebaseerde aanvallen die React Native-apps direct of indirect treffen. Verschillende beveiligingsleveranciers hebben parallelle campagnes gedocumenteerd die zich richten op React Native UI-bibliotheken, essentiële CLI-tools en zelfs generieke build-plugins waar veel React Native-codebases van afhankelijk zijn.
Aikido Security ontdekte in juni 2025 een grootschalige operatie in de toeleveringsketen waarbij ten minste 16 React Native-gerelateerde pakketten via een achterdeur werden beveiligd. @react-native-aria/* bereik plus @gluestack-ui/utils, die samen wekelijks ongeveer een miljoen downloads verwerken. De eerste inbreuk vond plaats op 6 juni 2025, beginnend met @react-native-aria/focus@0.2.10Vervolgens werd het op 7 juni snel uitgebreid met extra focus-, overlay-, interactie-, toggle-, switch-, checkbox-, radio-, button-, menu-, listbox-, tabs-, combobox-, disclosure-, slider- en separatorpakketten, evenals de GlueStack-hulpprogramma's.
De malware in die campagne was een Remote Access Trojan (RAT) die was aangepast aan Windows-omgevingen en die onder andere actief bleef. %LOCALAPPDATA%\Programs\Python\Python3127 en verbinding maken met C2-servers op 136.0.9[.]8 en 85.239.62[.]36. De mogelijkheden omvatten het uitvoeren van willekeurige commando's, het uploaden/downloaden van bestanden en langdurige toegang op afstand. Door de persistentie zorgde een simpele upgrade naar een schone versie van de React Native-bibliotheek er niet voor dat reeds geïnfecteerde machines werden opgeschoond.
Een andere langlopende campagne die door het Threat Research Team van Socket aan het licht is gebracht, maakte gebruik van typosquatting en mimicry om schadelijke pakketten te plaatsen die zich expliciet richten op populaire JavaScript-frameworks zoals React, Vue, Vite en Quill. De dader gebruikt de npm-alias. xuxingfengheeft gedurende meer dan twee jaar een mix van legitieme en kwaadaardige pakketten gepubliceerd, waardoor de indruk ontstond een betrouwbare beheerder te zijn.
Pakketten zoals vite-plugin-bomb, vite-plugin-bomb-extend, vite-plugin-react-extend, vite-plugin-vue-extend en vue-plugin-bomb Ze waren niet ontworpen om gegevens te stelen, maar om projecten actief te corrumperen of te vernietigen. Ze voerden meerfasige aanvallen uit die werden geactiveerd door specifieke datums, waarbij ze kritieke frameworkbestanden verwijderden. node_modules (Vue, React, Vite, TypeScript, Ant Design Vue, Pinia, ECharts en meer), soms in combinatie met geforceerde systeemafsluitingen om de seconde met behulp van shutdown -s -t 5.
Een bijzonder vervelend pakket, js-hood, heeft geknoeid met essentiële JavaScript-prototypes zoals Array.prototype.filter, map, push, pop en meerdere String methodenZe worden vervangen door functies die er syntactisch correct uitzien, maar willekeurige gegevens retourneren. Dit resulteert in applicaties die blijven draaien, maar corrupte, niet-deterministische resultaten produceren die extreem moeilijk te debuggen zijn.
De Politia Militar hield zelfs tijdens de pre-carnaval festiviteiten de zaken al nauwlettend in de gaten. quill-image-downloader De serie sloeg een andere richting in en richtte zich op sabotage van opslag aan de clientzijde. Het leverde een architectuur met drie bestanden op die, na een bepaalde activeringsdatum, alle sleutels doorloopt. localStorage, sessionStorage en cookies, en vervolgens worden hun waarden gedeeltelijk versleuteld met willekeurige tekens, terwijl de structuur behouden blijft. Authenticatietokens, winkelwagens, gebruikersvoorkeuren en alle browsergerelateerde gegevens raken subtiel beschadigd, wat leidt tot intermitterende storingen die veel teams in eerste instantie zouden toeschrijven aan applicatiefouten.
Afzonderlijk onderzoek van OP Innovate bracht een cluster van tien kwaadaardige npm-pakketten aan het licht die zich voordeden als bekende bibliotheken zoals TypeScript, discord.js, ethers.js, nodemon, react-router-dom en zustand. Na installatie tonen deze pakketten een nep-CAPTCHA-venster, identificeren ze de host en downloaden ze een omvangrijke, platformonafhankelijke informatie-diefstalsoftware van een C2-server. 195.133.79.43, wederom met expliciete ondersteuning voor Windows, macOS en Linux.
Tot slot liet de CanisterWorm-campagne, die door Aikido gedetailleerd werd beschreven, zien hoe ver aanvallers bereid zijn te gaan om npm als bezorgmiddel te misbruiken. Meer dan 135 pakketten van een gehackt uitgeversaccount werden voorzien van installatiescripts die worden uitgevoerd vóórdat uw applicatiecode of buildstappen worden uitgevoerd. Latere fasen gedragen zich anders, afhankelijk van of ze op een lokale ontwikkelomgeving, een CI-taak of een gecontaineriseerde buildnode terechtkomen. Ze communiceren met een gedecentraliseerde Internet Computer (ICP)-container die fungeert als een onzichtbare C2-server, waardoor beheerders het gedrag direct kunnen aanpassen zonder ooit nog de npm-registry aan te raken.
Kritieke kwetsbaarheden in React Native-tools: de Community CLI RCE
Niet alle beveiligingsrisico's van React Native komen voort uit regelrechte kwaadaardige pakketten; sommige vloeien voort uit ernstige kwetsbaarheden in veelgebruikte tools. Een opvallend voorbeeld is CVE‑2025‑11953 in de React Native Community CLI, een pakket dat wekelijks miljoenen keren wordt gedownload door ontwikkelaars op Windows, macOS en Linux.
Deze kwetsbaarheid maakte het mogelijk om zonder authenticatie code op afstand uit te voeren (RCE) via speciaal geconstrueerde POST-verzoeken aan de lokale ontwikkelserver die door de CLI was gestart. Omdat veel ontwikkelaars hun metro-/dev-servers op het netwerk beschikbaar stellen voor debugging of het testen op mobiele apparaten, kan een aanvaller in de buurt (of iemand die verkeer naar die poorten kan routeren) willekeurige commando's uitvoeren op de machine van de ontwikkelaar.
De impact reikt veel verder dan één ontwikkelaarswerkstation: Zodra een aanvaller code kan uitvoeren op een ontwikkelomgeving, kan hij toegang krijgen tot bedrijfsnetwerken, inloggegevens stelen, builds vergiftigen of CI/CD-pipelines manipuleren die vanaf die machine synchroniseren. Het is een schoolvoorbeeld van hoe "slechts een lokale ontwikkeltool" onderdeel kan uitmaken van je aanvalsoppervlak in de productieomgeving wanneer je werkt met cloudgekoppelde systemen.
De aanbevolen oplossing is eenvoudig maar niet onderhandelbaar: update naar React Native Community CLI 12.5.1 of hoger, controleer logboeken op verdachte POST-verzoeken of onverwachte processen die door de ontwikkelserver worden gestart, beperk de toegang tot lokale servers en integreer ontwikkeltools in uw strategie voor dreigingsdetectie. Beschouw elk DevOps- of ontwikkelaars-endpoint als een waardevol doelwit, want zo zien moderne aanvallers het ook.
Hoe verdedigers reageerden: AI-analyse, afkoelperiodes en versterkte CI
Het positieve aan deze verhalen is dat de beveiligingsgemeenschap steeds sneller en geavanceerder wordt in het opsporen van bedreigingen in de toeleveringsketen tegen React Native en de bredere JavaScript-wereld. Tools zoals StepSecurity, Socket en Aikido Security investeren fors in gedragsanalyse, geautomatiseerde vergelijkingen en machine learning-modellen die nieuwe npm-releases binnen enkele minuten na publicatie scannen.
Bij de Astronauta-aanval detecteerde StepSecurity's AI Package Analyst binnen vijf minuten kwaadaardige versies, opende GitHub-issues met volledige technische beschrijvingen en meldde later de door de aanvaller geselecteerde infrastructuurpakketten aan npm voor verwijdering. Het team documenteerde elke fase, volgde de Git-headers, analyseerde geobfusceerde code, leverde bewijs van het gebruik van Solana C2 en gaf de beheerder stapsgewijze instructies voor het oplossen van problemen.
Naast detectie winnen preventieve maatregelen steeds meer terrein in CI-pipelines. StepSecurity's npm Package Cooldown Check stelt organisaties bijvoorbeeld in staat om afhankelijkheden te blokkeren die slechts enkele uren geleden zijn gepubliceerd, waardoor scanners en mensen de tijd krijgen om ze te inspecteren. Hun controle op gecompromitteerde updates vergelijkt een continu bijgewerkte lijst met bekende problematische pakketten en weigert pull requests die proberen deze toe te voegen of te upgraden.
Netwerkbewuste tools zoals Harden-Runner beperken uitgaande verbindingen in GitHub Actions en andere CI-taken tot een lijst met toegestane eindpunten. In een wereld waarin malware payloads ophaalt van Solana RPC-nodes, Google Calendar-URL's, Vultr IP-bereiken of ICP-canisters, kan het beveiligen van de uitgaande verbindingen van uw buildsystemen het verschil maken tussen een slechte pakketvergelijking en een volwaardige inbraak.
Aan de reactiezijde helpen functies zoals organisatiebrede pakketzoekopdrachten en dreigingscentra teams om snel de impact van een aanval in kaart te brengen. Zodra een gecompromitteerd React Native-pakket of -plug-in is geïdentificeerd, kunnen beveiligingsteams zien in welke repositories, branches en lockfiles het voorkomt, welke taken het hebben uitgevoerd en welke machines met verdachte IP-adressen hebben gecommuniceerd. Vervolgens kunnen ze de herstelmaatregelen prioriteren voor tientallen of honderden codebases.
Praktische acties voor React Native-teams die te maken krijgen met npm-malware.
Voor zowel React Native-ontwikkelaars als beveiligingsengineers draait het bij de bescherming tegen aanvallen op npm-niveau om een combinatie van hygiënemaatregelen op individuele machines met vangrails in CI/CD en afhankelijkheidsbeheer. Geen enkele beveiligingsmaatregel zal u in zijn eentje volledig beschermen, maar gelaagde verdedigingsmechanismen verlagen de kans aanzienlijk dat een kwaadaardig pakket tot een volledige inbreuk leidt.
Als u de eerder genoemde gecompromitteerde pakketten gebruikt, zijn er enkele directe controles die u moet uitvoeren. Voor het Astronauta-incident, pin react-native-international-phone-number naar versie 0.11.7 en react-native-country-select naar 0.4.0waarbij alle versies die als kwaadaardig zijn gemarkeerd of die naar een andere versie leiden, worden vermeden. @latest dat momenteel overeenkomt met een gecompromitteerde release.
Controleer je thuismap op een bestand met de naam init.json onder het gebruikersprofiel (bijvoorbeeld ~/init.json op Unix- en ~\init.json op Windows). De aanwezigheid ervan suggereert dat de op Solana gebaseerde malware minstens één keer is uitgevoerd. Controleer ook de uitgaande netwerklogboeken van ontwikkelaarswerkstations en CI-runners op verbindingen met 45.32.150.251, de Solana RPC-eindpunten die in de campagnes worden gebruikt, of de andere eerder genoemde C2-adressen (bijv. 136.0.9[.]8, 85.239.62[.]36, 195.133.79.43, 217.69.3.152).
Controleer uw node_modules en lockfiles voor veelzeggende afhankelijkheden zoals @agnoliaarisian7180/string-argv, @usebioerhold8733/s-format en de kwaadaardige @react-native-aria/* or @gluestack-ui/utils versies vermeld in adviezen. Als u een van deze gegevens aantreft, beschouw de machine dan als mogelijk gecompromitteerd en vervang alle gevoelige inloggegevens: npm-tokens, GitHub-toegangstokens, SSH-sleutels, sleutels van cloudproviders en alle geheimen die aanwezig zijn in de machine. .env of configuratiebestanden tijdens de installatie.
Kijkend naar de toekomst, versterk je de positie van je toeleveringsketen voor React Native-projecten: commit en forceer lockfiles (package-lock.json, yarn.lock, pnpm-lock.yaml), schakel 2FA in voor alle npm-accounts met publicatierechten en configureer je CI om builds te laten mislukken wanneer er nieuwe afhankelijkheden verschijnen zonder beoordeling. Overweeg om het uit te voeren met --ignore-scripts bij het installeren van pakketten van derden in onbetrouwbare omgevingen, en integreer tools voor het scannen van afhankelijkheden in zowel lokale workflows als CI.
Beschouw ontwikkelomgevingen – met name die gebruikt worden voor React Native-apps die een brug slaan tussen mobiel, web en backend-API's – ten slotte als onderdeel van het aanvalsoppervlak van je productieomgeving. Of de dreiging nu bestaat uit een accountovername waarbij door Solana ondersteunde malware in een invoercomponent van een telefoon wordt geplaatst, of uit een typosquatting Vite-plugin die React verwijdert... node_modulesOf het nu gaat om een kwaadaardige Quill-integratie die client-side opslag verstoort, of een RCE-aanval in de React Native Community CLI, de rode draad is dat aanvallers ontwikkelaarstools nu zien als een van de meest efficiënte manieren om toegang te krijgen tot de meest waardevolle gegevens van uw organisatie.

