CVE-2026-93605: Kritisk sandkasse-flugt i vm2 NodeVM
vm2 NodeVM har en sikkerhedsfejl, der lader angribere bryde ud af sandkassen og køre kommandoer på serveren. Opdatér til 3.12.1.
Hvad er det?
vm2 er et populært JavaScript-bibliotek, der bruges til at køre ukendt eller ekstern kode i en isoleret sandkasse, altså et lukket miljø hvor koden ikke kan påvirke resten af serveren. NodeVM er en del af vm2, der lader udviklere køre Node.js-moduler inde i denne sandkasse. Sårbarheden CVE-2026-93605 opstår, fordi listen over farlige moduler, DANGEROUS_BUILTINS, som skal forhindre kode i at bryde ud, ved en fejl ikke blokerer modulet child_process. Med dette modul kan angribere starte systemkommandoer direkte på den server, der kører sandkassen. Fejlen rammer opsætninger, hvor NodeVM er konfigureret med builtin:[‘*’] eller med udtrykkelig adgang til child_process. Det, der skulle være en sikker isolering af ukendt kode, giver i praksis fuld adgang til serveren.
Hvem rammer det?
Sårbarheden rammer virksomheder, der har udviklet eller købt applikationer, som bruger vm2’s NodeVM til at køre brugerindsendt eller ekstern kode. Det gælder typisk platforme med plugin-systemer, online kodeeditorer, automatiserede test- og udviklingsværktøjer og SaaS-løsninger, der tilbyder brugerdefinerede scripts. Alle versioner af vm2 før 3.12.1 er sårbare, forudsat at NodeVM er sat op med builtin:[‘*’] eller eksplicit tilladelse til child_process. Danske virksomheder med egenudviklede webapplikationer eller interne værktøjer, der bygger på vm2, bør undersøge, om biblioteket indgår i deres kodebase.
Hvad kan ske?
En angriber, der kan sende kode til den sårbare sandkasse, for eksempel via en plugin-upload eller en kodeeditor, kan omgå isoleringen og køre vilkårlige kommandoer på den underliggende server. Det giver adgang til filsystem, databaser og netværksforbindelser fra serveren, samt mulighed for at installere bagdøre, stjæle data eller bruge serveren som afsæt for angreb på andre systemer i virksomhedens netværk. Da angrebet ikke kræver login eller brugerinteraktion, kan det udføres automatisk mod alle sårbare installationer, der er tilgængelige fra internettet.
Hvor alvorligt er det?
Sårbarheden har den højest mulige CVSS-score på 10 ud af 10 og er vurderet kritisk. Angrebet kan udføres over netværket, kræver ingen login eller rettigheder på forhånd, og der skal ingen bruger klikke på noget eller foretage sig noget. Kompleksiteten er lav, hvilket betyder, at angrebet er nemt at udføre for en, der kender fejlen. Konsekvensen rammer fortrolighed, integritet og tilgængelighed fuldt ud. Der er ikke oplyst aktiv udnyttelse på offentliggørelsestidspunktet, men fejlens enkelhed og alvor betyder, at den må forventes udnyttet hurtigt, når den bliver kendt bredt.
Hvad gør jeg nu?
Følgende trin lukker hullet og begrænser skaden, hvis I allerede er ramt.
- Opdatér vm2 til version 3.12.1 eller nyere i alle jeres applikationer og servere.
- Undersøg jeres kodebase for brug af vm2 og NodeVM, og find frem til hvor konfigurationen bruger builtin:[‘*’] eller eksplicit child_process.
- Kan I ikke opdatere med det samme, så fjern builtin:[‘*’] og eksplicit adgang til child_process fra NodeVM-konfigurationen som midlertidig løsning.
- Gennemgå logs for uventede kald til child_process eller mistænkelig aktivitet på servere, der kører sandkassen.
- Isolér sandkassemiljøet yderligere, for eksempel med containere med begrænsede rettigheder på systemniveau.
- Kontakt en sikkerhedsrådgiver, hvis I ikke selv kan afgøre om jeres systemer er ramt, eller hvis I finder tegn på misbrug.
Opdatér inden for 24 timer
Vi anbefaler, at I opdaterer vm2 til version 3.12.1 med det samme, hvis jeres applikationer bruger NodeVM til at køre ekstern eller brugerindsendt kode. Det er kun forsvarligt at vente, hvis I kan dokumentere, at jeres NodeVM-opsætning hverken har builtin:[‘*’] eller adgang til child_process, og at ingen ukendt kode når sandkassen. Er I i tvivl om, hvorvidt jeres kodebase er ramt, bør I få foretaget en sikkerhedsgennemgang, før I udsætter opdateringen.
Tidslinje
Konkrete eksempler
Plugin-system hos en dansk SaaS-virksomhed
En dansk virksomhed tilbyder kunder at uploade egne scripts til deres platform, og scriptene køres i en sandkasse bygget på vm2’s NodeVM. En angriber uploader et script, der kalder child_process, og opnår derved kommandoudførelse på virksomhedens server. Herfra får angriberen adgang til andre kunders data og virksomhedens interne netværk.
Ofte stillede spørgsmål
Er vi ramt af denne sårbarhed?
I er ramt, hvis jeres applikationer bruger vm2’s NodeVM i en version før 3.12.1, og NodeVM er konfigureret med builtin:[‘*’] eller eksplicit adgang til child_process. Brug ikke vm2 direkte, men et system eller en tredjepartsløsning der gør det, bør I spørge leverandøren.
Hvordan tjekker vi, om vi bruger den sårbare version?
Slå vm2 op i jeres package.json eller anden liste over afhængigheder i jeres Node.js-projekter, og se hvilken version der er installeret. Er versionen lavere end 3.12.1, og bruger I NodeVM, er I sårbare.
Kan vi vente til weekenden med at opdatere?
Nej. Med en CVSS-score på 10 og et angreb, der hverken kræver login eller brugerhandling, bør opdateringen ske inden for det næste døgn, hvis systemet er tilgængeligt fra internettet.
Skal vi anmelde hændelsen til myndighederne?
Kun hvis I finder tegn på, at sårbarheden faktisk er blevet udnyttet, og persondata eller kritiske systemer er berørt. I så fald skal I vurdere anmeldepligt efter databeskyttelsesforordningen og eventuelt kontakte Datatilsynet.
Hvad hvis vi ikke selv har skrevet koden, men bruger et tredjepartsprodukt?
Kontakt leverandøren og spørg, om produktet bruger vm2 og NodeVM, og om det er opdateret til version 3.12.1 eller nyere. Bed om en skriftlig bekræftelse, hvis produktet håndterer følsomme data.
CVSS-detaljer
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:H
CWE-svaghedstyper
Original NVD-beskrivelse (engelsk)
vm2 NodeVM versions before 3.12.1 contain a sandbox escape vulnerability where the DANGEROUS_BUILTINS denylist omits child_process despite blocking other host-spawning modules. Attackers can require child_process and execute arbitrary commands on the host system when NodeVM is configured with builtin:[‘*’] or explicit child_process allowance.
Referencer & kilder
Eksterne kilder
Brug for hjælp med jeres sikkerhed?
Vi hjælper SMV’er med at omsætte trusler som denne til konkrete handlingsplaner.