CVE-2026-74899: Sandkasseudbrud i openssl_encrypt
Kritisk sikkerhedsfejl i openssl_encrypt lader angribere bryde ud af sandkassen og køre kommandoer på jeres server. Opdatér til version 1.4.0.
Hvad er det?
openssl_encrypt er et Python-bibliotek, som mange systemer bruger til at kryptere data og til at køre tilføjelser (plugins) i en afgrænset udførelsesmiljø, kaldet en sandkasse. Sandkassen skal forhindre, at et plugin får adgang til resten af serveren. I versioner før 1.4.0 er komponenten IsolatedPluginExecutor fejlkonfigureret, så Python-programmets interne typeobjekter er tilgængelige inde i den afgrænsede kode. Det betyder, at en angriber kan bruge en kendt Python-teknik, hvor man går gennem klassehierarkiet med kommandoen __class__.__mro__.__subclasses__(), til at finde og aktivere systemfunktioner, som sandkassen ellers skulle blokere. Fejlen er registreret som CWE-95, som betyder utilstrækkelig kontrol af kode, der udføres dynamisk i programmet (eval injection). Resultatet er, at angriberen kan afvikle vilkårlige styresystemskommandoer på den server, hvor biblioteket kører.
Hvem rammer det?
Det rammer virksomheder og organisationer, der bruger Python-biblioteket openssl_encrypt i version før 1.4.0, og som benytter funktionen IsolatedPluginExecutor til at køre plugins, scripts eller anden brugerleveret kode i en afgrænset kontekst. Det kan for eksempel være interne værktøjer til dokumenthåndtering, krypteringstjenester eller integrationsplatforme, hvor tredjepartskode eller kundeleveret data behandles automatisk. Alle systemer, hvor biblioteket er inkluderet, uanset om plugin-funktionen aktivt bruges af jeres organisation, bør tjekkes.
Hvad kan ske?
En angriber, der kan sende input til den sårbare komponent, kan bryde ud af sandkassen og få de samme rettigheder som den proces, biblioteket kører under. I praksis betyder det, at angriberen kan læse og ændre filer, installere bagdøre, stjæle data eller bruge serveren som springbræt til resten af netværket. For en dansk virksomhed kan det føre til datalæk, driftsstop og i værste fald ransomware, hvis serveren har adgang til andre systemer.
Hvor alvorligt er det?
CVSS-scoren er 9,8 ud af 10, hvilket er kritisk. Angrebet kræver ingen adgangskode eller brugerkonto (PR:N), ingen handling fra en bruger (UI:N), og kan udføres over netværket (AV:N) med lav teknisk kompleksitet (AC:L). Konsekvensen er fuld kompromittering af fortrolighed, integritet og tilgængelighed. Der er ikke fundet dokumentation for, at sårbarheden aktivt udnyttes i angreb, men teknikken bag angrebet er en velkendt metode til at bryde Python-sandkasser, hvilket gør det sandsynligt, at et angreb kan udvikles hurtigt.
Hvad gør jeg nu?
Sådan lukker I hullet og begrænser risikoen:
- Opdatér openssl_encrypt til version 1.4.0 eller nyere på alle systemer, hvor biblioteket er installeret.
- Find ud af, om jeres systemer bruger funktionen IsolatedPluginExecutor til at køre plugins eller anden ekstern kode, og prioritér disse systemer først.
- Gennemgå logfiler for usædvanlig aktivitet, herunder uventede systemkommandoer eller processer startet af biblioteket.
- Begræns netværksadgang til de sårbare systemer, indtil opdateringen er gennemført, for eksempel med firewallregler eller adgangskontrol.
- Kontakt jeres it-leverandør eller Auroa, hvis I ikke selv kan verificere, om openssl_encrypt indgår i jeres systemer, eller hvis opdateringen kræver kodeændringer.
Opdatér inden for 24 timer
Vi anbefaler, at I opdaterer openssl_encrypt til version 1.4.0 hurtigst muligt, da sårbarheden kræver hverken login eller brugerhandling og kan udnyttes fra netværket. Det er ikke forsvarligt at vente til en planlagt opdateringsrunde, hvis biblioteket bruges i systemer, der er tilgængelige fra internettet eller behandler eksterne data. Bruger I derimod biblioteket kun internt, uden plugin-funktionen aktiveret, kan opdateringen indgå i næste ordinære vedligeholdelsesvindue, men bør ikke skubbes længere end en uge.
Tidslinje
Konkrete eksempler
Plugin-baseret dokumentsystem hos en dansk virksomhed
En mellemstor virksomhed bruger openssl_encrypt til at lade kunder uploade og behandle krypterede dokumenter gennem et internt plugin-system baseret på IsolatedPluginExecutor. En angriber sender et specialfremstillet dokument, der udløser sandkasseudbrudet, og får dermed adgang til at afvikle kommandoer på serveren. Herfra får angriberen adgang til virksomhedens interne netværk og kan stjæle kundedata eller installere skadelig software.
Ofte stillede spørgsmål
Hvordan finder vi ud af, om vi bruger den sårbare version af openssl_encrypt?
Tjek jeres Python-afhængigheder, for eksempel med kommandoen pip show openssl_encrypt eller i jeres requirements-fil, og se om versionen er før 1.4.0. Er I i tvivl, kan jeres udviklingsteam eller leverandør bekræfte det.
Kan vi vente med opdateringen til weekenden?
Det afhænger af, om systemet er tilgængeligt fra internettet og bruger funktionen IsolatedPluginExecutor. Er det tilfældet, bør opdateringen ske samme dag, da angrebet ikke kræver login eller brugerhandling.
Er vi ramt, hvis vi ikke selv bruger plugin-funktionen?
Er IsolatedPluginExecutor ikke i brug, er den direkte angrebsvej lukket, men vi anbefaler stadig at opdatere til 1.4.0, da fremtidige ændringer i jeres kode kan aktivere funktionen uden at det bliver bemærket.
Kan vi se, om vi allerede er blevet angrebet?
Gennemgå logfiler for processer, der ikke normalt hører til biblioteket, herunder kald til systemfunktioner eller uventede netværksforbindelser fra den server, hvor openssl_encrypt kører.
Skal vi anmelde dette til en myndighed?
Kun hvis I konstaterer, at sårbarheden faktisk er blevet udnyttet og persondata er kompromitteret. I så fald skal I vurdere anmeldepligt efter databeskyttelsesreglerne. Selve sårbarheden uden konstateret misbrug kræver ikke anmeldelse.
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)
openssl_encrypt versions before 1.4.0 contain a sandbox escape vulnerability in IsolatedPluginExecutor that exposes Python type objects in restricted exec() builtins. Attackers can traverse the Python class hierarchy via __class__.__mro__.__subclasses__() to access system functions and execute arbitrary OS commands.
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.