CVE-2026-45754: Symfony: Mailjet Mailer Webhook Parser Never Verifies the Configured Secret — Unauthenticated Webhook Event Injection
Description
The Mailjet mailer bridge and the LOX24 SMS notifier bridge both ship webhook request parsers used to authenticate and decode the event callbacks each provider POSTs to an application's webhook endpoint. Their doParse(Request $request, #[\SensitiveParameter] string $secret) methods receive the configured webhook secret but never read it; they convert and return the payload unconditionally.
As a result, an application that wires up either webhook endpoint accepts any POST to that URL, even when a webhook secret is configured (the recommended setup). An attacker who knows the endpoint exists can submit forged event payloads, fake bounce / blocked / spam / open / click / delivery events, leading to suppression-list corruption, delivery-metrics fraud, etc.
Resolution
MailjetRequestParser::doParse() now rejects the request unless it carries the expected HTTP Basic credentials, Mailjet's webhook authentication mechanism, using a constant-time comparison. The configured webhook secret is matched against the credentials embedded in the Mailjet webhook URL as user:password (use :password when the URL has no username).
Lox24RequestParser::doParse() now rejects the request unless it carries an X-LOX24-Token HTTP header whose value matches the configured secret, using a constant-time comparison. The same token must be configured in the LOX24 dashboard under the callback settings.
When no secret is configured the behaviour is unchanged: webhook authentication remains opt-in, but it is now actually enforced once opted in.
The Mailjet patch is available here for branch 6.4.
The LOX24 patch is available here for branch 7.4 (the LOX24 bridge was introduced in 7.1 and is not present in 6.4).
Credits
Symfony would like to thank Himanshu Anand for reporting the issue, and Alexandre Daubois and Nicolas Grekas for providing the fixes.
Other sources
Symfony is a PHP framework for web and console applications and a set of reusable PHP components. Prior to 6.4.40, 7.4.12, and 8.0.12, the Mailjet mailer bridge and LOX24 notifier bridge webhook parsers received configured webhook secrets but did not verify them, allowing unauthenticated POST requests to inject forged Mailjet and LOX24 event payloads. This issue is fixed in versions 6.4.40, 7.4.12, and 8.0.12.
— MITRE
Affected Software
Remediation
Recommended actions to resolve this vulnerability, in priority order.
- Upgrade
Upgrade
composer/symfony/mailjet-mailerto a version that resolves this vulnerability.Fixed in 8.0.12 - Upgrade
Upgrade
composer/symfony/mailjet-mailerto a version that resolves this vulnerability.Fixed in 7.4.12 - Upgrade
Upgrade
composer/symfony/mailjet-mailerto a version that resolves this vulnerability.Fixed in 6.4.40 - Upgrade
Upgrade
composer/symfony/symfonyto a version that resolves this vulnerability.Fixed in 8.0.12 - Upgrade
Upgrade
composer/symfony/symfonyto a version that resolves this vulnerability.Fixed in 7.4.12 - Upgrade
Upgrade
composer/symfony/symfonyto a version that resolves this vulnerability.Fixed in 6.4.40 - Upgrade
Upgrade
composer/symfony/lox24-notifierto a version that resolves this vulnerability.Fixed in 8.0.12 - Upgrade
Upgrade
composer/symfony/lox24-notifierto a version that resolves this vulnerability.Fixed in 7.4.12 - Upgrade
Upgrade to a fixed release to a version that resolves this vulnerability.
Fixed in 6.4.40 - Upgrade
Upgrade to a fixed release to a version that resolves this vulnerability.
Fixed in 7.4.12 - Upgrade
Upgrade to a fixed release to a version that resolves this vulnerability.
Fixed in 8.0.12 - Configuration
Ensure incoming LOX24 webhook requests include an `X-LOX24-Token` HTTP header whose value matches the configured LOX24 callback token (matched via constant-time comparison).
LOX24RequestParser (Symfony LOX24 SMS notifier bridge) X-LOX24-Token HTTP header = <configured LOX24 webhook secret token> - Configuration
Ensure incoming Mailjet webhook requests include the expected HTTP Basic credentials matching the configured webhook secret embedded in the Mailjet webhook URL as `user:password` (use `:password` when the URL has no username), otherwise requests are rejected (constant-time comparison).
MailjetRequestParser (Symfony Mailjet mailer bridge) HTTP Basic credentials in webhook request = <expected Basic credentials embedded in Mailjet webhook URL as user:password>
Event History
Frequently Asked Questions
What is the severity of CVE-2026-45754?
CVE-2026-45754 has a severity score of 43, indicating a significant risk.
How do I fix CVE-2026-45754?
To fix CVE-2026-45754, update the affected Symfony mailer and notifier packages to their latest versions.
What software is affected by CVE-2026-45754?
CVE-2026-45754 affects the composer/symfony/mailjet-mailer, composer/symfony/symfony, and composer/symfony/lox24-notifier packages.
What is the main issue described in CVE-2026-45754?
CVE-2026-45754 describes vulnerabilities in the webhook request parsers used by the Mailjet mailer and LOX24 SMS notifier bridges.
When was CVE-2026-45754 published?
CVE-2026-45754 was published on May 28, 2026.