CVE-2026-72826: Kritisk fejl i Grav-plugin API
Fejl i Grav-pluginet API (CVE-2026-72826) lader en bruger med en begrænset adgangsnøgle oprette en nøgle med fuld adgang. Opdatér til 1.0.13.
Hvad er det?
CVE-2026-72826 er en sårbarhed i pluginet grav-plugin-api til content management-systemet Grav. Pluginet bruger API-nøgler, altså digitale adgangskoder, til at styre hvilke funktioner et system eller en integration må tilgå. Fejlen ligger i funktionen createApiKey, der opretter nye API-nøgler. Systemet tjekker ikke, at rettighederne (scopes) på en ny nøgle rent faktisk er en delmængde af den nøgle, der bruges til at oprette den. En bruger med en nøgle, der kun har den mest basale adgang, kan derfor bede om en ny nøgle med tomme rettigheder og i praksis få en nøgle uden begrænsninger tilbage, hvis kontoen bag har superadgang.
Hvem rammer det?
Sårbarheden rammer alle Grav-installationer, der bruger pluginet grav-plugin-api i en version før 1.0.13. Det gælder danske virksomheder og kommuner, der bruger Grav CMS til hjemmesider eller intranet, og som har aktiveret API-pluginet for at give eksterne systemer eller integrationer programmatisk adgang til indholdet.
Hvad kan ske?
En angriber, der allerede har fået tildelt en API-nøgle med minimal adgang, for eksempel til én bestemt integration, kan udnytte fejlen til at skabe en ny nøgle med fuld adgang på en superkonto. Med den nøgle kan angriberen læse og ændre alt indhold og konfiguration i Grav. Da konfigurationsændringer i Grav i visse tilfælde kan bruges til at få systemet til at udføre kode, kan sårbarheden i værste fald ende med, at angriberen får fuld kontrol over den bagvedliggende server.
Hvor alvorligt er det?
CVSS-scoren er 9,8 ud af 10, hvilket er kritisk. Angrebet kan gennemføres over netværket, kræver ingen kompleks forberedelse og ingen handling fra en almindelig bruger. Ifølge NVD’s vurdering kræver angrebet ingen forudgående rettigheder, men beskrivelsen af fejlen forudsætter, at angriberen allerede besidder en gyldig, om end begrænset, API-nøgle på en superkonto. Konsekvensen er fuld kompromittering af fortrolighed, integritet og tilgængelighed, hvis nøglen først er misbrugt. Der er ikke oplysninger om aktiv udnyttelse på offentliggørelsestidspunktet.
Hvad gør jeg nu?
Sådan lukker I hullet og begrænser skaden, hvis I bruger Grav med API-pluginet:
- Opdatér grav-plugin-api til version 1.0.13 eller nyere. Det lukker selve fejlen.
- Gennemgå alle eksisterende API-nøgler og tilbagekald dem, der ikke aktivt bruges eller ikke har et klart formål.
- Kontrollér superkonti for uventede eller nyoprettede API-nøgler, især nøgler med brede rettigheder.
- Gennemgå Grav-konfigurationen for uautoriserede ændringer, hvis der har været adgang til API-pluginet før opdateringen.
- Begræns hvilke systemer der overhovedet må kalde API-pluginet, for eksempel via firewallregler, hvis det er muligt i jeres opsætning.
- Er I i tvivl om, hvorvidt jeres nøgler allerede er misbrugt, eller mangler I ressourcer til at gennemgå logs, så bør I hente ekstern hjælp til en gennemgang.
Opdatér inden for få dage
Vi anbefaler, at I opdaterer grav-plugin-api til version 1.0.13 med det samme, hvis I bruger pluginet, da fejlen kan give fuld adgang til jeres Grav-installation. Det er kun forsvarligt at vente, hvis pluginet ikke er installeret eller er slået fra i jeres opsætning. Er API-pluginet i brug af eksterne integrationer, bør I samtidig gennemgå eksisterende nøgler for at være sikre på, at ingen allerede har udnyttet fejlen.
Tidslinje
Konkrete eksempler
Integration med begrænset nøgle misbruges
En mindre dansk virksomhed bruger Grav CMS til deres website og har givet et eksternt bookingsystem en API-nøgle med adgang til kun at læse indhold. En fejl i konfigurationen betyder, at bookingsystemets nøgle er knyttet til en superkonto. En kompromitteret leverandørkonto udnytter derfor sårbarheden til at oprette en ny nøgle uden begrænsninger, får adgang til hele websitets indhold og konfiguration, og ændrer indstillinger, der i sidste ende giver mulighed for at afvikle kode på serveren.
Ofte stillede spørgsmål
Er vi ramt af denne sårbarhed?
I er kun berørt, hvis jeres website eller system kører Grav CMS med pluginet grav-plugin-api installeret i en version før 1.0.13. Tjek pluginlisten i Grav’s administrationspanel for at se, om pluginet er aktivt, og hvilken version der kører.
Hvordan tjekker vi, om vi allerede er blevet ramt?
Gennemgå listen over API-nøgler i systemet og se efter nøgler, I ikke selv har oprettet, eller nøgler med bredere rettigheder end forventet. Se også serverlogs for usædvanlig aktivitet fra kendte API-nøgler omkring perioder med adgang til createApiKey-funktionen.
Kan vi vente med at opdatere til efter weekenden?
Det afhænger af, om jeres API-nøgler er eksponeret til systemer eller personer uden for fuld tillid. Har eksterne parter eller mindre betroede integrationer adgang til en API-nøgle på en superkonto, bør opdateringen ske hurtigst muligt og ikke vente til efter weekenden.
Skal vi anmelde hændelsen til myndighederne?
Kun hvis I finder tegn på, at fejlen faktisk er blevet udnyttet, og at persondata eller følsomme oplysninger er kompromitteret. I så fald kan der være anmeldelsespligt efter databeskyttelsesreglerne, og vi anbefaler, at I kontakter jeres databeskyttelsesrådgiver eller Auroa for en konkret vurdering.
Er alle Grav-installationer ramt, eller kun dem med API-pluginet?
Kun installationer med grav-plugin-api installeret og aktiveret er berørt. Grav CMS’s kerneprodukt uden dette plugin er ikke ramt af denne konkrete sårbarhed.
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.13 fails to validate that the scopes of a newly created API key are a subset of the caller’s scopes in createApiKey. The self-target path of requireApiKeyPermission() requires only the baseline api.access scope, and the new key’s scopes are read directly from the request body with no subset check. An attacker holding a minimal-scope API key on a super account can submit an empty scopes array to mint an unscoped, full-access super key, bypassing scope restrictions (and enabling further chains such as configuration write to RCE).
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.