Severity by source
CVSS:4.0/AV:N/AC:H/AT:N/PR:N/UI:N/VC:N/VI:L/VA:N/SC:N/SI:N/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X
Network-reachable public webhook endpoint (AV:N, PR:N), but forging a signature without the secret requires advanced cryptanalytic capability against a weak primitive (AC:H); impact is integrity-only with no confidentiality or availability effect.
Primary rating from Vendor (https://github.com/symfony/symfony).
CVSS VectorVendor: https://github.com/symfony/symfony
Lifecycle Timeline
3DescriptionCVE.org
Description
Symfony\Component\Mailer\Bridge\Mailomat\Webhook\MailomatRequestParser::validateSignature() parses the X-MOM-Webhook-Signature request header as algo=signature and passes the wire-supplied $algo directly to hash_hmac() when verifying the request against the configured webhook secret. The request therefore selects the HMAC primitive used to authenticate it.
PHP's hash_hmac() enforces only that the chosen algorithm is HMAC-compatible. That set still includes primitives with known cryptanalysis (md4, md5, ripemd128, tiger128,3, … - e.g. existential forgery of HMAC-MD4, Contini & Yin, ASIACRYPT 2006). This is the canonical algorithm-confusion shape, analogous to JWT alg=none / alg=HS256 downgrades: any future cryptographic weakness in any HMAC primitive PHP exposes becomes immediately exploitable against a Mailomat webhook receiver, the moment an attacker is in a position to compute a signature for that primitive, without a code change on the Symfony side.
Mailomat's documented webhook security pins SHA-256; the parser did not.
Resolution
MailomatRequestParser::validateSignature() now requires the signature header to be of the form sha256=<hex> and verifies the signature with HMAC-SHA256 keyed by the configured secret using a constant-time comparison. Any other algorithm declared on the wire (including the HMAC primitives PHP would otherwise accept) is rejected.
The patch for this issue is available here for branch 7.4 (and forward-ported to 8.0 and 8.1).
Credits
Symfony would like to thank Omar Alshammari, Essam Alanazi and Alwaleed Alshammari for reporting the issue and Nicolas Grekas for providing the fix.
AnalysisAI
Algorithm-confusion in Symfony's Mailomat webhook parser allows an attacker to downgrade the HMAC primitive used for signature verification, bypassing webhook authentication. Symfony packages symfony/mailomat-mailer and symfony/symfony versions 7.2.0 through 7.4.12 and 8.0.0 through 8.0.12 accept an attacker-controlled algorithm field from the inbound X-MOM-Webhook-Signature request header and pass it directly to PHP's hash_hmac(), enabling an adversary who can exploit cryptographic weaknesses in weaker HMAC primitives (e.g., HMAC-MD4 existential forgery) to inject fraudulent webhook payloads. No public exploit has been identified at time of analysis, and this CVE is not listed in CISA KEV.
Technical ContextAI
The vulnerability resides in Symfony\Component\Mailer\Bridge\Mailomat\Webhook\MailomatRequestParser::validateSignature(), a PHP method that processes inbound callbacks from the Mailomat email service. The X-MOM-Webhook-Signature header is parsed as algo=signature, and the extracted $algo string is forwarded unmodified to PHP's hash_hmac() for verification against the configured webhook secret. PHP's hash_hmac() enforces only that the selected algorithm is HMAC-compatible, a set that includes cryptographically weak primitives such as md4, md5, ripemd128, and tiger128,3. CWE-347 (Improper Verification of Cryptographic Signature) precisely captures the root cause: the implementation fails to restrict which algorithm is acceptable before invoking the cryptographic operation. This is the canonical algorithm-confusion pattern - structurally identical to JWT alg=none and alg=HS256 downgrade attacks - wherein the attacker controls a security-critical parameter (the algorithm selector) that the verifier should enforce from a fixed allowlist. Mailomat's own API documentation (https://api.mailomat.swiss/docs/#tag/webhook-security) specifies SHA-256, but the server-side parser did not enforce this contract. The affected packages identified by CPE are pkg:composer/symfony/mailomat-mailer and pkg:composer/symfony/symfony.
RemediationAI
Upgrade symfony/mailomat-mailer (or symfony/symfony) to version 7.4.13 or later on the 7.x line, or to 8.0.13 or later on the 8.x line; these are the vendor-confirmed fixed versions per GHSA-rrj9-5q2j-4gvr. The fix commit at https://github.com/symfony/symfony/commit/bdfe9fe0d94d33dfaca0bc2fe0b00b54767b0c88 enforces that the X-MOM-Webhook-Signature header must be of the exact form sha256=<hex> and rejects all other algorithm declarations at parse time using a constant-time HMAC-SHA256 comparison. If an immediate upgrade is not feasible, deploy a WAF or reverse-proxy rule on the webhook ingress path that rejects any request whose X-MOM-Webhook-Signature header value does not match the pattern ^sha256=[0-9a-f]+$ before forwarding to Symfony; this blocks the algorithm-substitution attack without application changes, but must be maintained independently and introduces a separate failure mode if the WAF rule is misconfigured or bypassed. Refer to the Symfony security page at https://symfony.com/cve-2026-48747 for authoritative guidance.
In PHP versions 7.1.x below 7.1.33, 7.2.x below 7.2.24 and 7.3.x below 7.3.11 in certain configurations of FPM setup it
sapi/cgi/cgi_main.c in PHP before 5.3.12 and 5.4.x before 5.4.2, when configured as a CGI script (aka php-cgi), does not
(1) boardData102.php, (2) boardData103.php, (3) boardDataJP.php, (4) boardDataNA.php, and (5) boardDataWW.php in Netgear
The '/common/download_agent_installer.php' script in the Quest KACE System Management Appliance 8.0.318 is accessible by
ProjectSend versions prior to r1720 are affected by an improper authentication vulnerability. Rated critical severity (C
Roundcube Webmail contains a critical PHP object deserialization vulnerability (CVE-2025-49113, CVSS 9.9) that allows au
Util/PHP/eval-stdin.php in PHPUnit before 4.8.28 and 5.x before 5.6.3 allows remote attackers to execute arbitrary PHP c
Palo Alto Networks PAN-OS management web interface contains an authentication bypass allowing unauthenticated attackers
Nagios XI version xi-5.7.5 is affected by OS command injection. Rated high severity (CVSS 8.8), this vulnerability is re
Nagios XI version xi-5.7.5 is affected by OS command injection. Rated high severity (CVSS 8.8), this vulnerability is re
The get_referers function in /opt/ws/bin/sblistpack in Sophos Web Appliance before 3.7.9.1 and 3.8 before 3.8.1.1 allows
The Backup Migration plugin for WordPress is vulnerable to Remote Code Execution in all versions up to, and including, 1
Same technique Information Disclosure
View allShare
External POC / Exploit Code
Leaving vuln.today
EUVD-2026-44375
GHSA-rrj9-5q2j-4gvr