CVE-2026-14345: Kritisk RCE-fejl i WPFunnels til WordPress
WPFunnels til WordPress har en kritisk fejl (CVE-2026-14345), der lader angribere køre kode på serveren uden login. Slå logfunktionen fra i dag.
Hvad er det?
WPFunnels er et plugin til WordPress, der bygger salgstragte og upsell-flows til WooCommerce-webshops. Fejlen ligger i, hvordan plugin’et gemmer logdata. Når funktionen ‘Enable Logs’ er slået til, skriver plugin’et brugerdata fra parameteren postData direkte ind i en logfil uden at rense indholdet. Logfilen har filtypen .log, men plugin’et indlæser den senere med PHP-funktionen include_once, når en administrator åbner logvisningen. Det betyder, at PHP-kode skrevet ind i logfilen bliver kørt af serveren. Det tekniske sikkerhedsnøgletal, der beskriver denne type fejl, kaldes CWE-434 og handler om filer, der kan udnyttes til at indsætte og køre uønsket kode. Den kode, der skal til for at starte injektionen, kræver ikke login, fordi den nødvendige sikkerhedstoken (nonce) vises åbent på alle tragtens sider.
Hvem rammer det?
Sårbarheden rammer alle websteder, der bruger WPFunnels i version 3.12.7 og tidligere, sammen med WooCommerce. Det gælder typisk danske webshops og virksomheder, der bruger salgstragte til upsell, checkout-tilpasning eller kampagnesider. Risikoen er størst, hvis logfunktionen ‘Enable Logs’ i plugin’ets logindstillinger er slået til, hvilket ofte sker ved fejlsøgning eller support.
Hvad kan ske?
En angriber kan uden at logge ind sende data, der senere bliver kørt som kode på serveren, når en administrator åbner logvisningen. I praksis kan det give fuld kontrol over webserveren: installation af en webshell, adgang til kundedata og betalingsoplysninger i WooCommerce, eller ændring af priser og indhold i webshoppen. For en dansk virksomhed betyder det risiko for datatab, driftsstop og i værste fald en anmeldelsespligtig sikkerhedsbrist efter databeskyttelsesloven.
Hvor alvorligt er det?
CVSS-scoren er 9,8 af 10, hvilket er kritisk. Angrebet kan udføres over internettet, kræver ikke login og kræver ingen handling fra offeret for selve injektionen, fordi den nødvendige nonce er offentligt tilgængelig på alle tragtens sider. Det sidste trin, hvor koden faktisk køres, kræver dog, at en administrator åbner logvisningen, mens ‘Enable Logs’ er aktiveret. Der er ikke fundet bevis for, at fejlen er udnyttet i praksis endnu, men angrebsvejen er fuldt beskrevet og teknisk enkel at gennemføre.
Hvad gør jeg nu?
Følgende trin lukker hullet og begrænser skaden, hvis det allerede er udnyttet.
- Slå ‘Enable Logs’ fra i WPFunnels’ logindstillinger, hvis funktionen er aktiveret. Det stopper angrebsvejen med det samme, uanset om der findes en opdatering endnu.
- Tjek, om leverandøren har udgivet en nyere version af WPFunnels end 3.12.7, og opdatér til den, så snart den er tilgængelig.
- Gennemgå eksisterende logfiler under wp-content for usædvanligt indhold, og slet filer, der indeholder kode eller tegn, der ikke hører til en normal logtekst.
- Begræns adgang til WPFunnels’ administrationsside, for eksempel med IP-begrænsning eller en webapplikationsfirewall.
- Overvåg webserverens logfiler for uventede POST-anmodninger mod tragtens sider i perioden efter offentliggørelsen.
- Få hjælp udefra, hvis I ikke selv kan afgøre, om ‘Enable Logs’ har været aktiveret, eller om jeres logfiler er blevet manipuleret.
Luk hullet inden for 24 timer
Vi anbefaler, at I slår ‘Enable Logs’ fra i WPFunnels med det samme, uanset om I planlægger at opdatere plugin’et. Det er den handling, der reelt lukker angrebsvejen, da selve injektionen kan ske uden login. Det er kun forsvarligt at vente, hvis logfunktionen allerede er slået fra i jeres opsætning, og I har bekræftet det. Er I i tvivl om jeres konfiguration, bør I få det tjekket, før I venter til en almindelig opdateringscyklus.
Tidslinje
Konkrete eksempler
Webshop med upsell-tragte rammes
En dansk webshop bruger WPFunnels til at vise upsell-tilbud under kassen i WooCommerce. Butikken har tidligere aktiveret logfunktionen for at fejlsøge en betalingsintegration og har ikke slået den fra igen. En angriber sender skadelig kode til plugin’ets postData-parameter uden at logge ind. Da en medarbejder senere åbner logvisningen for at tjekke en fejl, bliver koden kørt på serveren, og angriberen får adgang til kundedata og webshoppens database.
Ofte stillede spørgsmål
Hvordan tjekker vi, om vi bruger den sårbare version?
Gå til Plugins i jeres WordPress-administration, find WPFunnels, og se versionsnummeret. Er det 3.12.7 eller tidligere, er I sårbare, hvis logfunktionen er aktiveret.
Kan vi vente til weekenden med at rette det?
Det er ok at vente med selve opdateringen, hvis I allerede har slået ‘Enable Logs’ fra. Er funktionen aktiveret, bør I slå den fra i dag, da injektionen kan ske uden login.
Er vi ramt, hvis vi ikke bruger logfunktionen?
Hvis ‘Enable Logs’ aldrig har været slået til, kan det sidste trin i angrebet ikke fuldføres, fordi der ikke er en logfil at inkludere. Angriberen kan dog stadig forsøge injektionen, så det er sikrest at holde funktionen slået fra permanent.
Skal vi anmelde dette til Datatilsynet?
Kun hvis I finder tegn på, at fejlen faktisk er udnyttet, og at personoplysninger er blevet tilgået eller ændret. Find og gennemgå eventuelle spor i logfilerne, før I tager stilling til anmeldepligten.
Hvordan opdaterer vi WPFunnels sikkert?
Tag en sikkerhedskopi af webstedet, opdatér plugin’et via WordPress-administrationen eller manuelt via FTP, og test derefter, at salgstragtene stadig fungerer korrekt.
Rammer fejlen også andre plugins fra samme leverandør?
Denne konkrete sårbarhed er specifik for WPFunnels’ logfunktion. Andre plugins fra samme leverandør er ikke nævnt i denne sag, men bør holdes opdateret som en generel regel.
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 WPFunnels – Funnel Builder for WooCommerce with Checkout & One Click Upsell plugin for WordPress is vulnerable to Remote Code Execution in all versions up to, and including, 3.12.7 via the ‘postData’ parameter parameter. This is due to unsanitized write of attacker-controlled postData values into a PHP-includeable .log file combined with the use of include_once to render that file in wpfnl_show_log. This makes it possible for unauthenticated attackers to execute code on the server. Exploitation requires that the Log Settings “Enable Logs” toggle is on and that an administrator subsequently opens the polluted log file via the plugin’s Log Settings View UI; however, the nonce required to reach the optin endpoint is publicly emitted on every funnel step page, so the injection step itself is fully unauthenticated.
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.