Brevo heeft bevestigd dat aanvallers een Cloudflare API-sleutel hebben gestolen en deze gebruikten om kwaadaardige ClickFix scripts te injecteren in hun websites en JavaScript-bestanden die op klantwebsites zijn ingebed. De klantrelatiebeheer- en digitale marketingorganisatie meldt dat de aanvallers met deze sleutel een kwaadaardige Cloudflare Worker hebben aangemaakt die gedurende ongeveer vijf en een half uur op 14 september content aanpaste aan de CDN-edge.

De aanval trof pagina's op brevo.com, sendinblue.com, login/account/my/onboarding.brevo.com en sibforms.com. De Cloudflare Worker wijzigde ook het Brevo forms script, de Brevo Conversations widget en de Brevo SDK loader scripts die klanten op hun websites gebruiken. In een post-mortem gepubliceerd door Brevo wordt uitgelegd dat de aanvallers een langlevende Cloudflare API-sleutel met volledige accountrechten wisten te bemachtigen, die hardcoded in de applicatiecode aanwezig was. Hierdoor konden zij Cloudflare Workers, routes en DNS-records aanmaken binnen de Brevo-zones zonder dat er een waarschuwing werd geactiveerd.

Omdat de Worker de responses aan de edge herschreef en beveiligingsheaders zoals Content-Security-Policy verwijderde, bleven de origin servers en bestanden ongewijzigd, waardoor standaard integriteitscontroles de wijziging niet detecteerden. Brevo vermoedt dat de sleutel mogelijk al eind augustus was gecompromitteerd, maar er is geen bewijs van eerdere kwaadaardige activiteiten. Na ontdekking verwijderde Brevo de Worker en de bijbehorende routes, waarbij het blootstellingsvenster werd vastgesteld tussen 16:07 en 20:30 UTC op 14 september. Vervolgens werden de gecompromitteerde sleutel en daarmee aangemaakte credentials ingetrokken, de hardcoded credential uit de broncode verwijderd, door aanvallers beheerde hostnamen verwijderd en edge caches geleegd.

Volgens Brevo waren app.brevo.com, de API, e-mailinfrastructuur en klantaccountgegevens niet getroffen. De aanval werd aanvankelijk gemeld door beveiligingsbedrijf Sansec, dat stelde dat mogelijk tot 100.000 websites die de getroffen Brevo-componenten gebruiken, impact konden ondervinden. Bezoekers van deze sites kregen een valse Cloudflare verificatiepagina te zien, gevolgd door ClickFix instructies die hen aanspoorden een commando op Windows uit te voeren.

Op WordPress-websites met een getroffen Brevo-widget controleerde het script ook of de bezoeker als beheerder was ingelogd en probeerde het een kwaadaardige plugin te uploaden vanaf https://cdn10.sendibt1[.]com/p/wm.zip. Hoewel Sansec het archief niet kon bemachtigen, vond BleepingComputer het terug op VirusTotal. Deze plugin doet zich voor als "Web Media Optimizer" maar functioneert als een persistente backdoor en JavaScript-loader.

Andere domeinen die deze kwaadaardige WordPress-plugin en scripts verspreidden zijn onder meer https://yelahaye[.]surf en https://boiseno[.]club. Na installatie verbergt de plugin zich uit de WordPress pluginlijst, kopieert zichzelf naar de must-use plugins directory voor persistentie en maakt periodiek contact met een aanvallersserver op 'https://glegchner.com/ads.php'. Deze URL levert een Base64-gecodeerde URL met JavaScript die de plugin injecteert in de pagina's van bezoekers. De plugin slaat ook een back-up op van de laatste geldige JavaScript URL om kwaadaardige code te blijven laden als de externe server onbereikbaar is. Daarnaast bevat de plugin een hardcoded authenticatiesleutel waarmee aanvallers toegang behouden.