CVE-2026-93399: Kritisk IDOR-fejl i Bookly til WordPress
Bookly-pluginet til WordPress har en kritisk IDOR-fejl (CVE-2026-93399). Uautoriserede angribere kan se og slette andres bookinger. Opdatér straks.
Hvad er det?
Sårbarheden findes i Bookly, et populært bookingsystem til WordPress, som mange virksomheder bruger til at lade kunder reservere tider online. Fejlen er en IDOR (Insecure Direct Object Reference), en usikker direkte objektreference, hvor systemet ikke tjekker om den, der spørger, faktisk ejer den booking eller ordre, der spørges om.
Fire AJAX-funktioner i pluginet, bookly_get_form_id, bookly_render_complete, bookly_add_to_calendar og bookly_rollback_order, stoler blindt på et ordre-id, som angriberen selv sender med. Ved at gætte fortløbende ordre-numre kan en angriber uden login få adgang til andre kunders ordre-tokens, se aftaledetaljer og i visse tilfælde slette bookinger permanent.
Hvem rammer det?
Alle WordPress-sites med Bookly-pluginet installeret i version 28.2 eller ældre. Det gælder typisk frisører, klinikker, tandlæger, konsulentvirksomheder, kommunale borgerservicecentre og andre, der bruger Bookly til tidsbestilling og kalenderbooking på deres hjemmeside.
Sårbarheden kræver ikke login eller nogen handling fra en bruger, så alle installationer med pluginet aktivt er udsat, uanset om bookingfunktionen bruges af mange eller få kunder.
Hvad kan ske?
En angriber kan systematisk gennemgå ordre-numre og derved trække andre kunders ordre-tokens, aftaleoplysninger og kalenderdata ud, uden at have en konto på siden. Det giver indblik i, hvem der har booket hvad og hvornår, hvilket kan være følsomt for eksempel ved klinikker eller sundhedsrelaterede bookinger.
Endnu mere alvorligt kan angriberen bruge bookly_rollback_order til at slette vilkårlige, ikke-afsluttede bookinger. Det sletter kundens aftale og i nogle tilfælde hele den underliggende tid i kalenderen, hvilket rammer driften direkte: kunder møder ikke op, eller personalet opdager først fejlen, når kunden står i receptionen.
Hvor alvorligt er det?
CVSS-score er 9,1 ud af 10, kritisk. Angrebet kræver ikke login (PR:N) og ingen handling fra en bruger (UI:N), det kan udføres over internettet (AV:N) og kræver ikke avanceret teknik (AC:L). Det gør sårbarheden let at automatisere og masseudnytte.
Konsekvensen rammer primært dataintegritet og driftstabilitet: aftaler og ordredata kan læses og slettes, mens selve kundedatabasen ikke nødvendigvis kompromitteres direkte. Der er ikke oplyst aktiv udnyttelse i det fri på offentliggørelsesdatoen, men den lave kompleksitet gør det sandsynligt, at automatiserede scanninger vil forsøge sig hurtigt.
Hvad gør jeg nu?
Sådan lukker I hullet og begrænser skaden:
- Opdatér Bookly-pluginet til den nyeste version via WordPress-administrationen. Producenten har rettet fejlen i en version nyere end 28.2.
- Kan I ikke opdatere med det samme, så deaktivér Bookly-pluginet midlertidigt, indtil opdateringen er gennemført.
- Gennemgå logfiler for usædvanligt mange kald til bookly_get_form_id, bookly_render_complete eller bookly_rollback_order, som kan indikere forsøg på udnyttelse.
- Tjek om bookinger er blevet slettet eller ændret uden kundens medvirken, og orientér berørte kunder hvis det er tilfældet.
- Gennemgå jeres liste over øvrige WordPress-plugins for tilsvarende bookingfunktioner, der kan have samme type fejl.
- Har I ikke selv ressourcer til at verificere opdateringen eller undersøge logfiler, så kontakt en it-sikkerhedsrådgiver.
Opdatér Bookly inden for 24 timer
Vi anbefaler, at I opdaterer Bookly-pluginet med det samme, da fejlen ikke kræver login og er nem at automatisere. Har I ikke straks mulighed for at opdatere, bør I deaktivere pluginet, indtil det er gjort. Det er ikke forsvarligt at vente til en planlagt opdateringsrunde, da sårbarheden kan udnyttes af enhver med internetadgang.
Tidslinje
Konkrete eksempler
Klinik med online tidsbestilling
En dansk fysioterapiklinik bruger Bookly til at lade patienter booke tider online. En angriber gennemgår systematisk ordre-numre og trækker andre patienters aftaledetaljer ud via bookly_add_to_calendar. Angriberen sletter derefter en række kommende tider med bookly_rollback_order, hvilket får patienter til at møde op til aftaler, der reelt er annulleret uden klinikkens vidende.
Ofte stillede spørgsmål
Bruger vi Bookly, og er vi ramt?
Tjek under Plugins i jeres WordPress-administration, om Bookly er installeret, og se hvilken version der er angivet. Er versionen 28.2 eller ældre, er I sårbare.
Kan vi vente til en planlagt opdatering i næste uge?
Nej. Sårbarheden kræver hverken login eller brugerinteraktion, og angrebet kan automatiseres. Vi anbefaler at opdatere eller deaktivere pluginet inden for et døgn.
Hvordan finder vi ud af, om vi allerede er blevet udnyttet?
Gennemgå serverlogs for gentagne kald til bookly_get_form_id, bookly_render_complete eller bookly_rollback_order med fortløbende ordre-numre. Se også efter bookinger, der er slettet uden dokumenteret kundehandling.
Skal vi anmelde hændelsen, hvis vi finder tegn på udnyttelse?
Er persondata om kunder blevet udstillet, kan det udløse anmeldepligt efter databeskyttelsesforordningen. Vurder omfanget sammen med jeres dataansvarlige eller en rådgiver, og anmeld til Datatilsynet inden for 72 timer, hvis der er tale om et brud på persondatasikkerheden.
Er det nok at opdatere pluginet, eller skal vi gøre mere?
Opdateringen lukker selve sårbarheden. Derudover bør I tjekke, om eksisterende bookinger er blevet manipuleret eller slettet, og orientere de kunder, det måtte gælde.
CVSS-detaljer
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:H/A:H
CWE-svaghedstyper
Original NVD-beskrivelse (engelsk)
The Bookly plugin for WordPress is vulnerable to Insecure Direct Object Reference in versions up to, and including, 28.2 via the ‘bookly_get_form_id’, ‘bookly_render_complete’, ‘bookly_add_to_calendar’ and ‘bookly_rollback_order’ AJAX actions. This is due to the ‘bookly_get_form_id’ handler blindly storing the attacker-controlled ‘order_id’ from the submitted form_data into a new booking session, which the ‘bookly_render_complete’ handler then trusts to look up and return the corresponding Order’s secret token without verifying that the current session created that order. This makes it possible for unauthenticated attackers to enumerate sequential order IDs, disclose other customers’ order tokens, retrieve calendar/appointment information via ‘bookly_add_to_calendar’ and permanently delete arbitrary non-completed bookings via ‘bookly_rollback_order’, which cascade-deletes the customer_appointment and (when no other customers are attached) the underlying appointment.
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.