CVE-2026-80203: Kritisk fejl i Grav CMS-tilføjelsen grav-plugin-api
En rettighedsfejl i tilføjelsen grav-plugin-api til Grav CMS gør det muligt at kapre superadmin-konti. Opdatér til version 1.0.18.
Hvad er det?
CVE-2026-80203 er en fejl i tilføjelsen grav-plugin-api til indholdssystemet Grav CMS. Tilføjelsen bruger API-nøgler, som er adgangskoder til at styre systemet automatisk uden om den normale login-side. Fejlen ligger i funktionen requireNotSuperTarget() i UsersController.php, som skal forhindre, at en begrænset API-nøgle kan ændre superadmin-konti. Kontrollen kigger på, om den bagvedliggende brugerkonto er superadmin, men ikke på, om den konkrete API-nøgle selv har superadmin-rettigheder. En API-nøgle med begrænsede rettigheder, men koblet til en superadmin-konto, kan derfor bruges til at deaktivere andre superadmin-brugeres tofaktor-godkendelse, slette deres profilbillede eller oprette og slette API-nøgler i deres navn.
Hvem rammer det?
Det rammer alle, der kører Grav CMS med tilføjelsen grav-plugin-api i en version ældre end 1.0.18. Det gælder typisk danske virksomheder og kommuner, der har koblet integrationer, automatiseringer eller eksterne værktøjer til deres Grav-installation via API-nøgler. Er tilføjelsen ikke installeret, er I ikke ramt af denne konkrete sårbarhed.
Hvad kan ske?
En medarbejder eller integration med en begrænset API-nøgle, der tilhører en superadmin-konto, kan bruge fejlen til at overtage andre superadmin-konti. I praksis kan det betyde, at en angriber slår tofaktor-godkendelse fra på en administrator, opretter nye API-nøgler i administratorens navn og dermed får fuld, varig kontrol over hjemmesiden og dens indhold, uden at den oprindelige administrator ser det i sin daglige brug.
Hvor alvorligt er det?
CVSS-scoren er 9,8 ud af 10, hvilket er kritisk. Angrebet kræver ikke, at nogen klikker på noget eller udfører en handling, og det kan udføres over internettet. Det kræver dog, at angriberen allerede har en gyldig API-nøgle, som er koblet til en superadmin-konto, men nøglen behøver ikke selv have superadmin-rettigheder. Der er ikke oplysninger om, at fejlen er udnyttet i praksis, men rettelsen er offentliggjort, og angrebsvejen er nu kendt.
Hvad gør jeg nu?
Følg punkterne i denne rækkefølge:
- Opdatér tilføjelsen grav-plugin-api til version 1.0.18 eller nyere. Det lukker hullet.
- Gennemgå alle udstedte API-nøgler, og fjern eller udskift dem, I ikke aktivt bruger.
- Tjek logfiler for uventede ændringer på superadmin-konti, særligt deaktivering af tofaktor-godkendelse eller nye API-nøgler oprettet uden kendt anledning.
- Begræns antallet af konti med superadmin-rettigheder til det strengt nødvendige.
- Har I ikke selv overblik over jeres Grav-installationer eller API-nøgler, bør I få en sikkerhedskonsulent til at gennemgå opsætningen.
Opdatér inden for 7 dage
Vi anbefaler, at I opdaterer grav-plugin-api til version 1.0.18 så hurtigt som muligt, og at I samtidig gennemgår jeres API-nøgler for at fjerne unødvendig adgang. Det er kun forsvarligt at vente, hvis I med sikkerhed ikke bruger tilføjelsen grav-plugin-api eller ikke har udstedt API-nøgler til superadmin-konti. I alle andre tilfælde bør opdateringen ske inden for kort tid, da konsekvensen er fuld kontooverdragelse.
Tidslinje
Konkrete eksempler
Kompromitteret integrationsnøgle hos dansk kommune
En dansk kommune bruger Grav CMS med grav-plugin-api til at koble deres hjemmeside til et internt sagssystem via en API-nøgle med begrænsede rettigheder. Nøglen tilhører en superadmin-konto og lækkes ved en fejl i et testmiljø. En angriber bruger nøglen til at deaktivere superadministratorens tofaktor-godkendelse og opretter en ny, fuld API-nøgle i dennes navn, hvorefter kommunens hjemmeside kan ændres uden yderligere spærringer.
Ofte stillede spørgsmål
Hvordan finder vi ud af, om vi bruger grav-plugin-api?
Log ind i jeres Grav-administration, og se under Tilføjelser eller Plugins, om grav-plugin-api er installeret og aktivt. Er den ikke der, er I ikke ramt af denne konkrete sårbarhed.
Kan vi vente til weekenden med at opdatere?
Er tilføjelsen aktiv og I har udstedt API-nøgler til superadmin-konti, bør I ikke vente. Konsekvensen ved misbrug er fuld overtagelse af administratorkonti, og opdateringen er allerede tilgængelig.
Skal vi udskifte alle vores API-nøgler efter opdateringen?
Det er en god idé. Selv efter opdateringen kan gamle nøgler have været brugt til at oprette nye, uautoriserede nøgler før rettelsen, så en gennemgang og oprydning giver mest tryghed.
Er vi ramt, hvis vi ikke bruger tofaktor-godkendelse?
Fejlen påvirker jer stadig, da angriberen også kan slette profilbilleder og udstede eller slette API-nøgler uafhængigt af, om tofaktor-godkendelse er aktiveret. Bruger I tofaktor-godkendelse, mister I dog en ekstra beskyttelseslag, hvis den bliver slået fra af en angriber.
Skal vi anmelde dette til Datatilsynet?
Kun hvis I finder tegn på, at fejlen faktisk er udnyttet, og at persondata er blevet tilgået eller ændret uretmæssigt. En opdatering uden tegn på misbrug kræver ikke anmeldelse.
Hvor finder vi den opdaterede version af tilføjelsen?
Version 1.0.18 og nyere kan hentes via Grav CMS’s eget tilføjelses-system eller via projektets officielle GitHub-side, hvor rettelsen er offentliggjort.
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)
The getgrav/grav-plugin-api plugin before 1.0.18 does not enforce API-key scope in the requireNotSuperTarget() function in UsersController.php across seven sensitive user-management endpoints. The check uses isSuperAdmin() on the acting account rather than verifying whether the specific API key carries super authority (via isSuperWithinScope()). As a result, an API key scoped below full super authority but belonging to a super-admin account can act against other super-admin accounts—disabling their 2FA, deleting their avatar, minting new API keys under their identity, or deleting their existing API keys.
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.