CVE-2026-96755: Kritisk kodeinjektion i orval
Kodegeneratoren orval (CVE-2026-96755) kan narres til at køre vilkårlig JavaScript-kode via en manipuleret OpenAPI-fil. Opdatér orval og gennemgå jeres API-specifikationer.
Hvad er det?
orval er et udviklerværktøj, der automatisk genererer TypeScript-kode til at kalde et API, ud fra en OpenAPI-specifikation (en fil, der beskriver et API’s endepunkter og datatyper). CVE-2026-96755 er en fejl af typen kodeinjektion (CWE-94) i den del af orval, der hedder @orval/effect. Fejlen opstår, fordi orval indsætter standardværdier fra OpenAPI-filen direkte ind i den genererede kode uden at rense dem. Hvis en standardværdi indeholder tegnkombinationen ${…}, bliver indholdet fortolket som JavaScript-kode og kørt, når den genererede kode bygges eller indlæses. Det betyder, at en OpenAPI-fil kan bruges som angrebsvektor, ikke kun som databeskrivelse.
Hvem rammer det?
Det rammer virksomheder, der bruger orval version 8.14.0 til 8.28.1 med generatoren @orval/effect til at generere API-klienter. Særligt udsatte er teams, der genererer kode ud fra OpenAPI-specifikationer, som kommer fra eksterne parter, kunder, leverandører eller offentligt tilgængelige kilder, som ikke er fuldt betroede. Både udviklermaskiner og byggeservere (CI/CD-pipelines), hvor kodegenereringen kører, kan blive ramt.
Hvad kan ske?
En angriber, der kan påvirke indholdet af den OpenAPI-fil, som orval genererer kode ud fra, kan indsætte vilkårlig JavaScript-kode i en standardværdi. Koden bliver kørt automatisk, når en udvikler bygger projektet eller når byggeserveren kører generatoren. I praksis kan det give angriberen adgang til at stjæle adgangskoder og nøgler fra byggemiljøet, indsætte bagdøre i den færdige software, eller sprede sig videre til andre systemer i udviklingsmiljøet.
Hvor alvorligt er det?
CVSS-scoren er 9,8 af 10, hvilket er kritisk. Angrebet kræver hverken login eller brugerhandling, og det kan udføres over netværket. Den praktiske betingelse er dog, at angriberen skal kunne styre eller manipulere den OpenAPI-fil, som orval bruger som input. Det er ikke oplyst, at sårbarheden aktivt bliver udnyttet, og der er ikke offentliggjort eksempelkode på angrebstidspunktet.
Hvad gør jeg nu?
Sådan lukker I hullet og begrænser risikoen:
- Opdatér orval til en version nyere end 8.28.1, hvor fejlen er rettet.
- Gennemgå, hvilke OpenAPI-filer jeres byggeprocesser bruger, og fjern eller kontrollér filer fra kilder, I ikke stoler fuldt ud på.
- Tjek jeres CI/CD-pipelines for, om orval kører automatisk på inputfiler, der kan påvirkes udefra, for eksempel fra en leverandørs API-beskrivelse.
- Har I brugt orval på en upålidelig OpenAPI-fil før opdateringen, bør I rotere nøgler og adgangskoder, der var tilgængelige i byggemiljøet.
- Gennemgå tidligere genereret kode for uventede JavaScript-udtryk, der ikke burde være der.
- Er I i tvivl om, hvorvidt jeres byggemiljø har været eksponeret, bør I hente ekstern hjælp til en gennemgang af pipeline og genereret kode.
Opdatér før næste kodegenerering
Vi anbefaler, at I opdaterer orval til en rettet version, inden I genererer kode ud fra OpenAPI-filer, som ikke kommer fra jeres egne systemer. Bruger I kun orval på OpenAPI-filer, I selv har fuld kontrol over og har skrevet internt, er risikoen begrænset, og opdateringen kan planlægges som en del af den normale vedligeholdelse. Modtager I derimod OpenAPI-specifikationer fra kunder, partnere eller eksterne leverandører, bør opdateringen ske, før I kører generatoren på nye filer.
Tidslinje
Konkrete eksempler
Kompromitteret leverandør-API rammer et softwarehus
Et dansk softwarehus integrerer med en leverandørs API og bruger orval til automatisk at generere en TypeScript-klient ud fra leverandørens OpenAPI-fil hver nat via byggeserveren. Leverandørens dokumentationsside bliver kompromitteret, og en ondsindet standardværdi indsættes i OpenAPI-filen. Ved næste natlige kørsel udføres koden på byggeserveren, hvor angriberen får adgang til API-nøgler, der ligger i byggemiljøet.
Ofte stillede spørgsmål
Er vi ramt af denne sårbarhed?
I er kun berørt, hvis jeres udviklingsteam bruger orval version 8.14.0 til 8.28.1 sammen med generatoren @orval/effect. Tjek jeres package.json eller lockfil for den installerede orval-version.
Hvordan tjekker vi, om vi har brugt en skadelig OpenAPI-fil?
Gennemgå de OpenAPI-filer, I har brugt til kodegenerering, for standardværdier, der indeholder tegnkombinationen ${ efterfulgt af kode. Se også den genererede TypeScript-kode efter uventede funktionskald eller JavaScript-udtryk, der ikke stammer fra jeres egen skabelon.
Kan vi vente til weekenden med at opdatere?
Bruger I kun interne, betroede OpenAPI-filer, kan opdateringen indgå i den normale opdateringscyklus. Genererer I derimod kode ud fra eksterne kilder løbende, bør I opdatere, før næste kørsel af generatoren.
Skal vi anmelde hændelsen, hvis vi har været udsat?
Hvis udnyttelse har givet en angriber adgang til persondata eller systemer med persondata, kan det udløse anmeldelsespligt efter databeskyttelsesforordningen. Vurdér omfanget sammen med jeres databeskyttelsesrådgiver, og anmeld til Datatilsynet inden for 72 timer, hvis der er tale om et brud på persondatasikkerheden.
Påvirker det vores færdige, bygningen software, eller kun udviklingsmiljøet?
Angrebet sker, når koden genereres eller bygges, altså typisk i udviklermiljøet eller på byggeserveren. Er der indsat ondsindet kode i den genererede fil, kan den dog blive en del af den software, I i sidste ende leverer, hvis den ikke opdages først.
Hvor finder vi den rettede version af orval?
Tjek orvals officielle sider på npm og GitHub for den nyeste udgivelse efter 8.28.1, og opdatér til den i jeres projekts afhængigheder.
CVSS-detaljer
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
CWE-svaghedstyper
Original NVD-beskrivelse (engelsk)
orval versions 8.14.0 through 8.28.1 contain a code injection vulnerability in the @orval/effect generator that converts OpenAPI schema defaults into template literals. Attackers can inject arbitrary JavaScript expressions via schema defaults containing ${…} syntax, which are executed at module scope when the generated code is built or imported.
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.