CVE-2026-9109: XSS-sårbarhed i GPTranslate til WordPress
Sårbarhed i WordPress-pluginnet GPTranslate lader uautoriserede angribere indsætte skadelig kode på jeres hjemmeside via oversættelsesfunktionen.
Hvad er det?
CVE-2026-9109 er en sårbarhed i WordPress-pluginnet GPTranslate – Multilingual AI Translation, som bruges til at oversætte hjemmesider automatisk. Fejlen er en lagret cross-site scripting, forkortet XSS, hvor ondsindet kode gemmes permanent på siden og køres, hver gang en besøgende åbner den ramte side. Problemet opstår, fordi pluginnet ikke renser eller escaper (omdanner kode til harmløs tekst) de oversættelser, der gemmes via en REST API, et interface til at sende data til hjemmesiden. Sagen forværres af, at pluginnets nøgle til at bruge dette interface beregnes ud fra hjemmesidens URL og står synligt i sidens kildekode, så enhver kan finde den uden at logge ind.
Hvem rammer det?
Alle hjemmesider, der kører WordPress med pluginnet GPTranslate – Multilingual AI Translation for WordPress: Automatically Translate Websites i version 2.31 eller tidligere. Det gælder både danske virksomheder og kommuner, der bruger pluginnet til at gøre deres hjemmeside eller borgerportal tilgængelig på flere sprog.
Hvad kan ske?
En angriber kan uden at logge ind indsætte skadeligt script i en oversat side. Når en medarbejder, kunde eller borger besøger siden, kører scriptet i deres browser. Det kan bruges til at stjæle login-cookies, omdirigere besøgende til svindelsider, eller vise falsk indhold på virksomhedens hjemmeside. Rammer det en administrators session i wp-admin, kan angriberen i værste fald overtage kontrollen med hele hjemmesiden.
Hvor alvorligt er det?
CVSS-score er 7,2 ud af 10, hvilket NVD klassificerer som alvorlig. Angrebet kræver hverken login eller adgangskode og ingen brugerhandling fra angriberens side: nøglen til at sende ondsindede oversættelser ligger frit tilgængelig i sidens kildekode. Det eneste, der skal til, for at skaden sker, er at en almindelig besøgende åbner den ramte side. Der er ikke oplysninger om, at sårbarheden aktivt udnyttes, men de tekniske detaljer er offentligt beskrevet, hvilket gør det nemt at bygge et angreb.
Hvad gør jeg nu?
Sådan lukker I hullet og begrænser skaden:
- Deaktivér pluginnet GPTranslate på alle hjemmesider, indtil der findes en opdateret version, der retter fejlen.
- Tjek pluginets side i WordPress eller hos udvikleren for en ny version, og opdatér med det samme, den udkommer.
- Gennemgå oversatte sider for uventet indhold, skjulte script-tags eller ukendte links.
- Skift URL-struktur eller kontakt udvikleren, hvis muligt, da den nuværende API-nøgle er offentligt kendt og ikke kan ændres ved et almindeligt kodeord.
- Gennemgå adgangslogs for kald til /wp-json/gptranslate/v1/request fra ukendte kilder.
- Kontakt en it-sikkerhedsrådgiver, hvis I ikke selv kan vurdere, om siden allerede er kompromitteret, eller hvis I mangler ressourcer til at rense og overvåge hjemmesiden.
Deaktivér pluginnet nu
Vi anbefaler, at I deaktiverer GPTranslate-pluginnet på alle hjemmesider, indtil udvikleren udsender en rettet version. Da nøglen til at udnytte sårbarheden ligger offentligt i sidens kildekode, er der ingen praktisk måde at afskærme sig på, mens pluginnet er aktivt. Det er ikke forsvarligt at vente til en planlagt vedligeholdelsesrunde, da angrebet ikke kræver login eller særlige forudsætninger.
Tidslinje
Konkrete eksempler
Flersproget kommunehjemmeside rammes af injiceret script
En dansk kommune bruger GPTranslate til at oversætte sin borgerportal til engelsk og arabisk. En angriber finder den offentligt synlige API-nøgle i sidens kildekode og sender et ondsindet script som oversættelse. Da en medarbejder i kommunen senere logger ind i wp-admin og besøger den oversatte side, stjæles medarbejderens session-cookie, og angriberen får administratoradgang til hele hjemmesiden.
Ofte stillede spørgsmål
Hvordan ved vi, om vores hjemmeside bruger det ramte plugin?
Gå ind under Plugins i jeres WordPress-administration og se, om GPTranslate – Multilingual AI Translation for WordPress er installeret, og hvilken version der er angivet. Er versionen 2.31 eller lavere, er I ramt.
Kan vi vente med at reagere til efter weekenden?
Vi fraråder det. Angrebet kræver ikke login, og de nødvendige oplysninger til at udnytte fejlen står frit tilgængelige i sidens kildekode. Deaktivér pluginnet, så snart det er praktisk muligt.
Er vi allerede ramt, hvis vi har haft pluginnet aktivt et stykke tid?
Det kan I ikke vide med sikkerhed uden at undersøge sagen. Gennemgå oversatte sider for ukendt eller uventet script-kode, og tjek serverlogs for kald til /wp-json/gptranslate/v1/request fra ukendte IP-adresser.
Er det nok bare at opdatere pluginnet, når en rettelse kommer?
Ja, når udvikleren udsender en rettet version, bør I opdatere med det samme. Indtil da anbefaler vi at holde pluginnet deaktiveret, da der ikke findes en sikker måde at bruge det på.
Skal vi anmelde hændelsen, hvis vi finder tegn på misbrug?
Finder I beviser på, at hjemmesiden er blevet kompromitteret, og at persondata kan være berørt, skal I vurdere anmeldelsespligt efter databeskyttelsesreglerne og eventuelt anmelde til Datatilsynet inden for 72 timer.
Kan vi bruge et sikkerhedsplugin i stedet for at deaktivere GPTranslate?
Et generelt sikkerhedsplugin kan reducere risikoen, men fjerner ikke selve fejlen. Vi anbefaler at deaktivere GPTranslate, indtil den underliggende sårbarhed er rettet af udvikleren.
CVSS-detaljer
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:L/I:L/A:N
CWE-svaghedstyper
Original NVD-beskrivelse (engelsk)
The GPTranslate – Multilingual AI Translation for WordPress: Automatically Translate Websites plugin for WordPress is vulnerable to Stored Cross-Site Scripting via REST API Translation Storage in all versions up to, and including, 2.31 due to insufficient input sanitization and output escaping. This makes it possible for unauthenticated attackers to inject arbitrary web scripts in pages that will execute whenever a user accesses an injected page. The deterministically derived API key (sha256 of the site URL) is printed in the HTML source of every page via the JavaScript variable gptApiKey, meaning any unauthenticated visitor can retrieve the key and submit malicious translation payloads to the /wp-json/gptranslate/v1/request endpoint without any additional precondition.
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.