CVE-2026-97637: Login-omgåelse i JSON API Auth plugin
JSON API Auth til WordPress lækker admin-loginet via en cachet session-cookie. Deaktivér pluginet, til der findes en rettelse.
Hvad er det?
CVE-2026-97637 er en fejl i WordPress-pluginet JSON API Auth, der kræver det tilhørende plugin PI-Media/json-api for at virke. Problemet opstår, fordi parent-pluginet gemmer svar på serveren i en mellemlagring kaldet en transient, som kun identificeres ud fra webadressen og forespørgselsparametre, ikke ud fra HTTP-metoden eller selve POST-dataen. Når en administrator logger ind via endepunktet generate_auth_cookie, indlejres en gyldig login-cookie i svaret, og det svar bliver gemt i cachen. Enhver, der efterfølgende sender en almindelig, uautoriseret GET-forespørgsel til samme adresse, kan derfor få udleveret den samme administrator-cookie og bruge den til at logge ind som administrator.
Hvem rammer det?
Det rammer WordPress-sites, der kører JSON API Auth i alle versioner til og med 3.1.2, sammen med det tilhørende plugin PI-Media/json-api installeret, aktivt og med Auth-controlleren slået til. Sårbarheden kræver desuden, at en administrator har sendt en loginforespørgsel (POST) til /api/auth/generate_auth_cookie/ inden for de seneste 24 timer, som er den tid, cachen holdes aktiv.
Hvad kan ske?
En angriber, der får fat i administratorens session-cookie, kan logge ind som administrator uden at kende password. Herfra kan vedkommende oprette nye brugere, installere skadelige plugins eller temaer, ændre indhold, stjæle persondata fra formularer og databaser, eller lægge sitet ned. For en dansk virksomhed betyder det i praksis fuld overtagelse af websitet og alt, hvad der er knyttet til det, herunder kundedata og eventuel webshop.
Hvor alvorligt er det?
CVSS-scoren er 9,8 ud af 10, kritisk. Angrebet kræver ikke login, ikke adgangsrettigheder og ingen handling fra brugeren, kun en almindelig GET-forespørgsel til den rette adresse. Den indbyggede kontrol, der skulle kræve HTTPS, kan desuden omgås ved at tilføje parameteren insecure=cool til forespørgslen. Der er ikke oplysninger om aktiv udnyttelse eller offentliggjort angrebskode på offentliggørelsesdatoen, men fejlen er enkel at udnytte, hvis forudsætningerne er til stede.
Hvad gør jeg nu?
Følg punkterne i rækkefølge. Det første lukker hullet med det samme.
- Deaktivér JSON API Auth-pluginet, eller slå Auth-controlleren fra i PI-Media/json-api, indtil der findes en rettet version.
- Undersøg, om jeres site kører PI-Media/json-api med Auth-controlleren aktiveret, og om JSON API Auth er installeret i version 3.1.2 eller ældre.
- Log alle brugere, især administratorer, ud og rotér de hemmelige nøgler (auth keys og salts) i wp-config.php, så eksisterende cookies ikke længere er gyldige.
- Gennemgå webserverens logfiler for uautoriserede GET-forespørgsler til /api/auth/generate_auth_cookie/ eller get_currentuserinfo.
- Opdatér til en rettet version af JSON API Auth, så snart udvikleren udsender en.
- Hent hjælp udefra, hvis I finder tegn på, at kontoen allerede er misbrugt, eller hvis I er i tvivl om, hvorvidt jeres opsætning er sårbar.
Deaktivér pluginet inden for 24 timer
Vi anbefaler, at I deaktiverer JSON API Auth eller slår Auth-controlleren fra med det samme, uanset om I kan bekræfte aktivt misbrug. Det er kun forsvarligt at vente, hvis pluginet eller dets Auth-funktion ikke er i brug på jeres site. Når der findes en rettet version, bør I opdatere og samtidig rotere administratorernes adgangskoder og de hemmelige nøgler i wp-config.php som en ekstra sikkerhed.
Tidslinje
Konkrete eksempler
Overtagelse af en kommunal institutions WordPress-site
En dansk skole eller forening bruger JSON API Auth til at give en mobilapp adgang til deres WordPress-site. En medarbejder logger ind via appen om morgenen, og svaret bliver liggende i serverens cache resten af dagen. En angriber sender en almindelig forespørgsel til samme adresse, får udleveret administratorens session-cookie og opretter en ny administratorkonto, som bruges til at indsætte skadelig kode på sitet.
Ofte stillede spørgsmål
Hvordan ved vi, om vores WordPress-site er ramt?
Tjek om pluginet JSON API Auth er installeret, og om det tilhørende plugin PI-Media/json-api kører med Auth-controlleren aktiveret. Er begge dele til stede i version 3.1.2 eller ældre, er sitet sårbart.
Kan vi vente med at reagere til i næste uge?
Nej. Fejlen kræver hverken login eller brugerinteraktion, og CVSS-scoren er 9,8. Deaktivér pluginet eller Auth-funktionen samme dag, I opdager det.
Er det nok at skifte administratorens password?
Nej. Angrebet udnytter en gyldig session-cookie, ikke selve passwordet. I skal rotere de hemmelige nøgler i wp-config.php og logge alle brugere ud, for at ugyldiggøre eksisterende cookies.
Skal vi anmelde hændelsen til Datatilsynet?
Kun hvis I finder konkrete tegn på, at en uvedkommende faktisk har fået administratoradgang og behandlet persondata uretmæssigt. Uden tegn på misbrug er der ikke tale om et anmeldelsespligtigt brud, men I bør dokumentere jeres undersøgelse.
Hvad gør vi, hvis vi finder tegn på, at sitet allerede er kompromitteret?
Tag sitet offline eller sæt det i vedligeholdelsestilstand, skift alle adgangskoder og hemmelige nøgler, og gennemgå for uautoriserede brugere, plugins og filer. Kontakt en it-sikkerhedsrådgiver, hvis I er usikre på omfanget.
Påvirker det vores site, hvis vi slet ikke bruger PI-Media/json-api?
Nej. Sårbarheden kræver, at PI-Media/json-api er installeret og aktivt, og at Auth-controlleren er slået til. Uden det er sitet ikke ramt af denne specifikke fejl.
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 JSON API Auth plugin for WordPress is vulnerable to Authentication Bypass via Cached Session Cookie Disclosure in all versions up to, and including, 3.1.2. The vulnerability exists because the required PI-Media/json-api parent plugin caches controller dispatch results in transients keyed solely by URI and query string, ignoring HTTP method and POST body; this causes the `generate_auth_cookie()` endpoint — which embeds a live WordPress `logged_in` cookie produced by `wp_generate_auth_cookie()` directly in its JSON response body — to serve that cached authenticated response to any subsequent unauthenticated GET request to the same URI. This makes it possible for unauthenticated attackers to retrieve a valid Administrator `logged_in` session cookie from the cached response and use it to fully authenticate as the site Administrator, including via the same plugin’s `get_currentuserinfo` endpoint and any cookie-authenticated controller action. Exploitation requires the PI-Media/json-api parent plugin to be installed and active with the Auth controller enabled, and a legitimate Administrator must have POSTed to `/api/auth/generate_auth_cookie/` within the preceding 24-hour cache TTL; the nominal HTTPS enforcement gate present in `Auth.php` is trivially bypassed by supplying `insecure=cool` as a request parameter.
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.