Åbner i en ny fane
CVE-2026-93603
Kritisk

CVE-2026-93603: Kritisk sandkasse-flugt i vm2

Kritisk fejl i vm2 (CVE-2026-93603) gør det muligt at bryde ud af sandkassen og køre kode på serveren. Opdatér til 3.12.1.

CVSS Score
10
Offentliggjort
18/09/2026
Patch-status
Opdatering findes
Exploit
Angrebskode er offentlig
Tidsfrist
Opdatér inden for 24 timer

Hvad er det?

vm2 er et udbredt JavaScript-bibliotek til Node.js, som udviklere bruger til at køre upålidelig kode i en sandkasse, altså et lukket miljø, der skal forhindre koden i at røre resten af serveren. CVE-2026-93603 er en fejl i vm2’s bro-funktion (bridge.js), som håndterer kald mellem sandkassen og værtsprogrammet. Når kode i sandkassen kalder en værtsfunktion uden at angive en modtager for ‘this’, indsætter JavaScript-motoren V8 automatisk hele det globale objekt fra værten som ‘this’. vm2 videregiver ved en fejl dette objekt til sandkassen, som dermed får levende adgang til hele værtens miljø, herunder ‘process’-objektet, som kan bruges til at afvikle systemkommandoer. Det svarer til, at en gæst i et aflåst lokale pludselig får nøglen til hele bygningen.

Hvem rammer det?

Sårbarheden rammer virksomheder, der har udviklet eller driver applikationer i Node.js, som bruger vm2 til at afvikle brugerindsendt eller på anden måde upålidelig kode. Det gælder for eksempel online kodeeditorer, plugin- og udvidelsessystemer, low-code platforme, CI/CD-værktøjer og chatbots eller automatiseringstjenester, der lader brugere indtaste formler eller scripts. Alle versioner af vm2 til og med 3.12.0 er berørte. Fejlen kræver, at den omkringliggende applikation stiller mindst én værtsfunktion til rådighed for sandkassen, som ikke er skrevet i strict mode. Da strict mode ikke er standard i almindelig JavaScript, gælder det de fleste typiske installationer.

Hvad kan ske?

En angriber, der kan få sin kode afviklet i sandkassen, for eksempel via et plugin, en formel eller et script, kan bryde helt ud og køre vilkårlige kommandoer direkte på serveren. I praksis betyder det, at angriberen kan læse databaseoplysninger og adgangskoder fra miljøvariabler, installere skadelig software, slette eller kryptere data og bruge serveren som springbræt videre ind i jeres netværk. Da sandkassen normalt bruges til at isolere upålidelig kode, kan konsekvensen være langt større, end hvis den samme fejl fandtes i en almindelig funktion, fordi hele sikkerhedsformålet med vm2 forsvinder.

Hvor alvorligt er det?

CVSS-scoren er 10,0 ud af 10, den højeste mulige. Angrebet kræver ingen adgangskoder, ingen brugerinteraktion og kan udføres over netværket med lav kompleksitet. Fortrolighed, integritet og tilgængelighed rammes alle fuldt ud, og angrebet kan påvirke systemer ud over selve vm2-komponenten, fordi hele værtsmiljøet bliver blotlagt. Der er offentliggjort en detaljeret teknisk beskrivelse af, hvordan fejlen udnyttes, hvilket gør det forholdsvis let for en angriber at bygge et fungerende angreb. Der er ikke oplysninger om, at fejlen er udnyttet i angreb, men den tekniske beskrivelse fungerer i praksis som en køreklar opskrift.

Hvad gør jeg nu?

Følg disse trin, i denne rækkefølge:

  1. Opdatér vm2 til version 3.12.1 i alle applikationer og tjenester, hvor biblioteket indgår, enten direkte eller som en afhængighed.
  2. Kortlæg hvor vm2 bruges. Kør en søgning i jeres package.json- og package-lock.json-filer eller brug ‘npm ls vm2’ på tværs af jeres Node.js-projekter.
  3. Kan I ikke opdatere med det samme, så begræns hvilke værtsfunktioner sandkassen har adgang til, og isolér tjenesten yderligere med containerisering eller netværkssegmentering.
  4. Gennemgå logs for usædvanlig aktivitet fra tjenester, der kører vm2, hvis opdateringen har ventet.
  5. Overvej på sigt at migrere væk fra vm2, da projektet ikke længere vedligeholdes aktivt, og skift til et alternativ som isolated-vm.
  6. Få hjælp udefra, hvis I ikke selv har overblik over, hvilke systemer der bruger vm2, eller om jeres applikation er sårbar.
Tidsfrist

Opdatér inden for 24 timer

Sådan ser Auroa det

Vi anbefaler, at I opdaterer vm2 til 3.12.1 med det samme, uanset om biblioteket bruges direkte eller ligger skjult i en anden komponent. Det er kun i orden at vente, hvis I kan dokumentere, at ingen af jeres systemer bruger vm2, eller at sandkassen aldrig eksponerer værtsfunktioner uden strict mode. Da CVSS-scoren er den højeste mulige og teknikken er offentliggjort i detaljer, bør opdateringen prioriteres over andre driftsopgaver.

Tidslinje

18/09/2026
Sårbarheden offentliggjort
CVE-2026-93603 blev offentliggjort med en detaljeret teknisk beskrivelse af fejlen, samtidig med at rettelsen i vm2 3.12.1 blev udgivet.

Konkrete eksempler

Formel-felt i en dansk webshop-platform

En dansk e-handelsvirksomhed driver en tilpasset webshop-platform, hvor kunder kan indtaste egne prisformler i et administrationsmodul, der afvikles i en vm2-sandkasse på serveren. En angriber opretter en formel, der udnytter CVE-2026-93603 til at bryde ud af sandkassen og får derved adgang til at læse databasens loginoplysninger fra en miljøvariabel på serveren. Herfra tilgår angriberen kundedata og betalingsoplysninger, som opbevares i samme system.

Ofte stillede spørgsmål

CVSS-detaljer

Attack Vector
NETWORK
Attack Complexity
LOW
Privileges Required
NONE
User Interaction
NONE
Scope
CHANGED
Confidentiality
HIGH
Integrity
HIGH
Availability
HIGH

CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:H

CWE-svaghedstyper

CWE-94

Original NVD-beskrivelse (engelsk)

vm2 through 3.12.0 (fixed in 3.12.1) does not correctly handle a nullish `this` receiver in the apply trap of its bridge (lib/bridge.js): when sandboxed code calls a host-provided non-strict (sloppy-mode) function without a receiver — e.g. `fn()`, a detached method, `fn.call()`, `fn.apply(undefined)`, `Reflect.apply(fn, undefined, [])`, or `fn.bind()()` — the undefined receiver is passed straight through to the host call, and V8 substitutes the host realm’s global object for `this`. vm2 then wraps and returns that object to the sandbox, giving sandboxed script a live proxy of the host global. This allows a complete sandbox escape: untrusted script can reach `process` and execute arbitrary code/commands on the host (for example via `process.getBuiltinModule(‘child_process’).execSync`). Exploitation requires that the embedding application expose at least one non-strict host function to the sandbox; strict-mode and ES module host functions are not affected.

Referencer & kilder

Eksterne kilder

Sværhedsgrad
Kritisk
CVSS Base Score
10
Hurtige fakta
CVE-ID
CVE-2026-93603
Offentliggjort
18/09/2026
Sidst opdateret
18/09/2026
Exploit-status
Angrebskode er offentlig
Patch-status
Opdatering findes

Brug for hjælp med jeres sikkerhed?

Vi hjælper SMV’er med at omsætte trusler som denne til konkrete handlingsplaner.