Cafiyn Pulse
← Startup Signals
6 min readUpdated 2026-09-17Issue 3

What Brevo's SSO incident teaches about multi-tenant SAML and hijacked sending accounts.

One incident, two lessons: why email authentication did not help, and the tenant-scoping mistake anyone shipping SSO can make.

ByKarthik KumarCafiyn Innovations
At a glance
Accounts accessed
138, per Brevo
Identified
10 September 2026, 06:30 UTC
Contained
08:30 UTC, all users signed out
Root cause
SSO access not scoped to the owning organisation
Downstream
Trezor: phishing sent to about 347,000 addresses

What happened

Brevo's incident write-up says an attacker exploited a flaw in how it handled SAML single sign-on and reached 138 customer accounts. Brevo identified the issue at 06:30 UTC on 10 September. At 08:30 UTC it closed the route the attacker used and signed out every user on the platform. Brevo says six of the accounts were used to send phishing and that contacts were exported from 43.

Trezor, which uses Brevo for its newsletter, said phishing was sent from its account to roughly 347,000 email addresses, warning of a fake hardware vulnerability and directing recipients to enter their wallet backup. Trezor says its products, wallets and account systems were not affected.

The root cause, in Brevo's words

Brevo's summary of the principle that was violated is admirably direct: a login arriving through one company's SSO configuration should only ever reach that company's account. That was not how access was scoped.

According to Brevo, the attacker created their own account, enabled SSO on it, and invited legitimate Brevo users into that SSO configuration. That wrongly granted access to every organisation those users could already reach. Brevo's permanent fix limits SSO access strictly to the organisation that owns the SSO configuration.

Lesson one: authentication records did not help

SPF, DKIM and DMARC exist to stop someone sending mail that pretends to come from your domain. They do nothing when the mail genuinely comes from your domain, through your own sending provider, from your own account. Brevo says the phishing passed the usual email authentication checks.

For any company whose customers trust its emails, the useful question is operational rather than technical: who can suspend your sending account, and how fast? In an incident like this, minutes matter, and the answer should be written down before you need it.

Lesson two: a checklist for anyone shipping SAML SSO

The pattern behind this flaw is not specific to email providers. Any multi-tenant product with both SSO and an invite flow has the same shape of risk. Use this as a test plan.

  • An SSO configuration can only grant access to the organisation that created it, with no exceptions
  • Accepting an invite into one organisation never extends that organisation's SSO to the user's other memberships
  • A user who belongs to several organisations authenticates separately into each, and the session is scoped to one
  • Creating a new organisation and enabling SSO on it cannot affect existing users who have not joined it
  • Test the combination explicitly: attacker-owned tenant, SSO enabled, legitimate user invited, then check what that user's session can reach

What to do

  1. 1If you use Brevo, review team members, SSO settings, contact exports and sending logs for 9 and 10 September.
  2. 2Rotate your Brevo API keys.
  3. 3Name the person who can suspend your email sending account, and confirm they know how.
  4. 4If you ship SAML SSO, run the cross-tenant test above against your own product.

Common questions

How many Brevo accounts were affected?

Brevo says 138 customer accounts were accessed. It says six were used to send phishing emails and contacts were exported from 43.

When did the Brevo incident happen?

Brevo identified it at 06:30 UTC on 10 September 2026 and contained it at 08:30 UTC, when it closed the attacker's route and signed out every user on the platform.

Why did the phishing emails pass SPF and DKIM?

Because they were sent from the victims' own legitimate Brevo accounts. Email authentication confirms a message came from an authorised sender, and in this case it did.

Was Trezor breached?

Trezor says its products, wallets and account systems were not affected. The phishing was sent through its third-party email provider, Brevo.

Sources

Read against the primary documentation rather than secondary coverage. Where a figure comes from a provider's own docs, it is quoted as published on 2026-09-17.

Related

More from Signals

1.8 million Android apps were scanned for hardcoded keys. Here is how to check yours.
Finding secrets in shipped apps is now a cheap, automated pipeline. Anything compiled into an APK, an IPA or a JavaScript bundle should be treated as already published.
OpenAI's Agents API will hold your agent state. What breaks if you ever need to leave.
Two major providers moved into the agent state layer in the same week. A managed harness is a real shortcut, as long as you keep a copy of what it holds.
Meta's Muse agent can now check out at your store. What merchants should change.
Agent purchases are arriving through wallets and single-use cards, not through merchants adopting a new protocol. Many merchants will receive them without choosing to.
Cloudflare now sorts bots into Search, Training and Agent. What it means for your site and your agent.
The same change lands on two audiences. Site owners can now accidentally block search; agent builders will find more doors closed.
OpenAI has published seven shutdown dates. Here is the calendar.
Seven dates between 23 October and 26 February. Every one announced months ahead, in public. The failure mode is never the notice.
Nvidia bought Hugging Face. Your open-weight fallback is now a vendor relationship.
The commitments say nothing breaks. The structural change is that "we can always self-host" is now a dependency on one vendor rather than on a neutral commons.
The Videos API goes away on 24 September and OpenAI names nothing to move to.
Every other deprecation on OpenAI's page offers a migration target. This one does not, which makes it a different kind of problem.
Whisper shuts down on 26 February. The risk is not the deadline.
Five months is a generous window. Whisper is also typically wired into a background job that fails into a queue rather than into a user's face.
The Assistants API is gone. Your app may not have told you yet.
It shut down on 26 August 2026. The replacement is not a drop-in, and the most common migration mistake changes your model's behaviour without throwing an error.
One Copilot code review costs 13 requests. Here is the rest of the maths.
Copilot now bills on usage rather than seats. The headline change is simple. The multipliers underneath it are where teams get surprised.
Row-level security is on by default now. That is not the same as being protected.
Lovable fixed the default. The gap that actually leaks data was never the default, it was the policy, and no platform can write that for you.
Your model comparison is measuring the wrong number.
Every price list is per token. Your bill is per finished piece of work. Those two numbers can rank models in opposite orders.
An agent with production log access is a new identity. Treat it like one.
Always-on agents that read production logs are arriving fast. The access-control question they raise is old and well understood, which is the good news.

Open the tool.

Ten production categories, three minutes, and a ranked list of what to fix first.

Check your own stack