Skip to content

Security Reports disagree3 publishers 3 min read Published Updated

Attackers rewrote Brevo's embedded scripts at Cloudflare's edge with a hardcoded full-permission key

Brevo says a long-lived Cloudflare key with full account permissions sat in its application source code, and the Worker built with it stripped Content-Security-Policy headers from scripts that Sansec estimates reach 100,000 sites.

The Watch · Security desk

Send a correction

Illustration accompanying Attackers rewrote Brevo's embedded scripts at Cloudflare's edge with a hardcoded full-permission key
Generated illustration

What happened

  • Brevo confirmed that attackers stole a Cloudflare API key and used it to create a malicious Cloudflare Worker that modified content at the CDN edge for about five and a half hours on September 14.
  • The Worker altered pages on brevo.com, sendinblue.com and sibforms.com plus the Brevo forms script, the Conversations widget and the SDK loader scripts that customers embed on their own sites.
  • Sansec, which reported the incident first, said up to 100,000 websites use the affected Brevo components, and confirmed the malicious subdomains stopped resolving on September 15.
  • Visitors to affected pages were shown a fake Cloudflare verification page followed by ClickFix instructions urging them to run a command on Windows.

Why it matters

  • What's now possible capability File integrity monitoring on a vendor's origin tells you nothing about what its CDN serves, and a Content-Security-Policy header is no help when the code rewriting the response can delete the header.
  • Who's exposed exposure Any WordPress administrator who browsed an affected site while logged in on September 14 may be running a plugin that hides from the plugin list and mints administrator sessions without the password.
  • What doesn't add up contradiction Brevo's rounded duration is longer than the timestamps in its own advisory and longer than Sansec's observed window, so log review should be scoped to the timestamps rather than the summary figure.
  • Who has to decide decision With no public link between the SSO account hijacking and the Cloudflare key, customers weighing whether to keep Brevo script tags in their pages are deciding without knowing if one intruder had access or two.

A Cloudflare API key with full account permissions can create Workers, routes and DNS records across every zone on the account. Brevo says the key in its application source code was long-lived and did all three for the attackers without triggering an alert [4]. The Worker they built sat in front of the origin and edited what came out of it. "Because the Worker rewrote responses at the edge and removed security headers such as Content-Security-Policy, our origin servers and files remained unmodified and standard integrity checks did not detect the change," Brevo said in its post-mortem [7]. Anyone hashing files on Brevo's servers that afternoon would have found them correct.

The duration is unsettled. Brevo calls it approximately five and a half hours of edge modification [1] and elsewhere defines the exposure window as 16:07 to 20:30 UTC, a span of 4 hours 23 minutes [23][26]. Sansec dates the activity from 16:05 to 20:13 UTC, 4 hours 8 minutes [25][27]. Both observed windows run about an hour shorter than the figure in Brevo's own summary [28]. Brevo also says the key may have been exposed as early as late August, with no evidence of malicious use before September 14 [8].

On WordPress sites embedding an affected widget, the injected script checked whether the visitor was logged in as an administrator, then tried to upload wm.zip from cdn10.sendibt1[.]com [11]. BleepingComputer pulled a copy from VirusTotal and describes a plugin named "Web Media Optimizer" that works as a persistent backdoor and JavaScript loader [12]. It hides itself from the plugin list, copies itself into the must-use plugins directory, and polls glegchner.com/ads.php [13]. That server returns a Base64 string, currently decoding to corralos[.]beer/a412dkoq.js [14], and the plugin caches the last working URL so it keeps loading code if the server stops answering [15]. A hardcoded authentication key inside it generates a valid administrator session without the password [16]. BleepingComputer also saw the plugin and scripts served from yelahaye[.]surf and boiseno[.]club [20].

Brevo revoked the key, removed the credential from source, deleted attacker hostnames and purged its edge caches [9]. None of that touches an installed copy of the plugin, which persists locally and calls its own server [22].

Brevo says app.brevo.com, its API, email delivery infrastructure and customer account data were not affected [19]. If you do not embed the forms script, the Conversations widget or the SDK loader, and no administrator browsed an affected site on September 14, this one is closed for you [2][3][6].

This is Brevo's second disclosure in five days. On September 10 the company reported an SSO-related incident in which attackers hijacked customer accounts and ran phishing against those customers' users [5]. Trezor said on September 11 that the phishing reached 347,000 email addresses and compromised at least 2,500, about 0.7% [17][21]. Brevo did not answer BleepingComputer's questions about whether the two incidents are connected [18].

What to watch

  • Fresh distribution hosts for the fake plugin once yelahaye[.]surf and boiseno[.]club stop resolving.
  • Any named actor or shared infrastructure tying the September 10 SSO account hijacking to the Worker campaign.
  • Reports of unauthorised administrator logins on WordPress sites where the plugin's hardcoded key was used.

Clarity's read

What the record supports and how the coverage leans. The claims behind it follow.

Reality

Evidence78
Adoption60
Hype gap+20
Incentives58
Confidence72

Perspective Coverage

3 publishers
Builder
Builder 34%
Operator
Operator 48%
Investor
Investor 18%
Why these scores

Claim ledger

Ranked by verification strength, evidence, and original report placement.

  1. [1]

    Brevo confirmed that attackers stole a Cloudflare API key and used it to create a malicious Cloudflare Worker that modified content at the CDN edge for approximately five and a half hours on September 14, injecting malicious ClickFix scripts into its websites and JavaScript files embedded on customer sites.

    Reported SupportedView cited source
  2. [2]

    The attack affected pages on brevo.com, sendinblue.com, login/account/my/onboarding.brevo.com and sibforms.com.

    Reported SupportedView cited source
  3. [3]

    The Cloudflare Worker also modified the Brevo forms script, the Brevo Conversations widget and the Brevo SDK loader scripts that customers embed on their websites.

    Reported SupportedView cited source
  4. [4]

    In a post-mortem, Brevo said attackers obtained a long-lived Cloudflare API key with full account permissions that had been hardcoded in application source code, which allowed them to create Cloudflare Workers, routes and DNS records across Brevo's zones without triggering an alert.

    Reported SupportedView cited source
  5. [5]

    On September 10 Brevo disclosed a different SSO-related incident where attackers hijacked customer accounts and launched phishing attacks targeting customers of companies using Brevo.

    Reported SupportedView cited source
  6. [6]

    WordPress administrators who visited an affected site while logged in on September 14 should check for unusual plugins installed or activated that day.

    Reported SupportedView cited source
  7. [7]

    "Because the Worker rewrote responses at the edge and removed security headers such as Content-Security-Policy, our origin servers and files remained unmodified and standard integrity checks did not detect the change," Brevo said.

    Reported SupportedView cited source
  8. [8]

    Brevo says the key may have been compromised as early as late August, but there is no evidence of prior malicious activity.

    Reported SupportedView cited source
  9. [9]

    In the hours after detection Brevo revoked the compromised key and credentials created with it, removed the hardcoded credential from its source code, deleted attacker-controlled hostnames and purged its edge caches.

    Reported SupportedView cited source
  10. [10]

    Visitors to affected websites were shown a fake Cloudflare verification page followed by ClickFix instructions urging them to run a command on Windows.

    Reported SupportedView cited source
  11. [11]

    On WordPress websites embedding an affected Brevo widget, the script checked whether the visitor was logged in as an administrator and attempted to upload a malicious plugin from https://cdn10.sendibt1[.]com/p/wm.zip.

    Reported SupportedView cited source
  12. [12]

    Sansec was not able to retrieve the archive; BleepingComputer found it uploaded to VirusTotal and confirms it pretends to be a WordPress plugin named "Web Media Optimizer" but acts as a persistent backdoor and JavaScript loader.

    Reported SupportedView cited source
  13. [13]

    Once installed, the plugin hides itself from the WordPress plugin list, copies itself into the must-use plugins directory for persistence, and periodically contacts the attacker-controlled https://glegchner.com/ads.php server.

    Reported SupportedView cited source
  14. [14]

    That URL is currently returning a Base64-encoded URL that decodes to https://corralos[.]beer/a412dkoq.js, which the site injects to fetch a ClickFix lure.

    Reported SupportedView cited source
  15. [15]

    The plugin stores a backup copy of the last valid JavaScript URL so it can continue loading malicious code if the remote server becomes unavailable.

    Reported SupportedView cited source
  16. [16]

    The plugin contains a hardcoded authentication key that allows attackers to generate a valid login session for a WordPress administrator account without knowing the account password.

    Reported SupportedView cited source
  17. [17]

    Cryptocurrency wallet vendor Trezor reported on September 11 that phishing attacks reached 347,000 user email addresses and successfully compromised at least 2,500.

    Reported SupportedView cited source
  18. [18]

    Brevo did not respond to BleepingComputer's questions as to whether the SSO incident and the Cloudflare compromise were connected.

    Reported SupportedView cited source
  19. [19]

    Brevo says app.brevo.com, its API, email delivery infrastructure and customer account data were not affected.

    Reported SupportedView cited source
  20. [20]

    Other domains BleepingComputer saw distributing the malicious WordPress plugin and scripts include https://yelahaye[.]surf and https://boiseno[.]club.

    Reported SupportedView cited source
  21. [21]

    The at-least-2,500 compromised Trezor users are about 0.7% of the 347,000 addresses the phishing reached.

    Derived Supported
  22. [22]

    Brevo's remediation of its own key, source code, hostnames and edge caches does not remove an installed copy of the plugin, which persists in the must-use plugins directory and contacts its own command server.

    Derived Supported
  23. [23]

    On detecting the compromise Brevo removed the Worker and its routes, defining the exposure window as between 16:07 and 20:30 UTC.

    Reported ContestedView cited source
  24. [24]

    The incident was first reported by security firm Sansec, which said it may have impacted up to 100,000 websites that use the affected Brevo components, and confirmed that all malicious subdomains stopped resolving on September 15 and that Brevo files are now clean.

    Reported ContestedView cited source
  25. [25]

    Sansec says the incident began on September 14, 2026, between 16:05 and 20:13 UTC.

    Reported ContestedView cited source
  26. [26]

    Brevo's stated exposure window of 16:07 to 20:30 UTC is 4 hours 23 minutes.

    Derived Contested
  27. [27]

    Sansec's observed window of 16:05 to 20:13 UTC is 4 hours 8 minutes.

    Derived Contested
  28. [28]

    Brevo's approximate figure of five and a half hours exceeds the window defined by its own timestamps by about 1 hour 7 minutes.

    Derived Contested

Sources

3 independent publishers whose own reporting we read for this story.

  1. bleepingcomputer.com

    1 article · September 17, 2026

    Brevo supply-chain attack injected ClickFix scripts on customer sites
  2. securityaffairs.com

    1 article · September 18, 2026

    Brevo Supply-Chain Attack Infected Over 100,000 Websites
  3. securityweek.com

    1 article · September 18, 2026

    Brevo Supply Chain Attack Injects Malware Into 100,000 Websites

Topics and entities

Topics