☠️
EXFILTRATING
DATA...
01010111 10110010 00101001 11000110 01101100 10011011 00010001 11100101 01000010 10101111
[ <-- BACK_TO_SEARCH ]

CVE-2025-53371

CVE-2025-53371 Server-Side Request Forgery in Mediawiki
📅 PUBLISHED: 2025-07-10 17:26 UTC 🔄 UPDATED: 2026-10-09 05:42 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.36%
👁️
0.36% probability
8.9× above the median CVE
Tier: ELEVATED
30-day exploitation window · FIRST.org · updated daily
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
9.1
THREAT LEVEL
■ tracking this CVE ✓ independent patch confirmation ⧗ same-origin mirror (GHSA) ⚠ active exploitation verification policy →

Executive Summary

CVE-2025-53371 is a critical vulnerability in the MediaWiki extension DiscordNotifications, which sends notifications of wiki actions to a Discord channel. The extension allows sending HTTP requests (via curl and file_get_contents) to arbitrary URLs configured through $wgDiscordIncomingWebhookUrl and $wgDiscordAdditionalIncomingWebhookUrls. This lack of URL validation enables two primary attack vectors:

  1. Denial of Service (DoS): An attacker can configure the extension to point to a large file on the same server or an external server, causing the MediaWiki server to read and potentially exhaust resources.
  2. Server-Side Request Forgery (SSRF): An attacker can make the server send HTTP POST requests to internal, unprotected APIs. This could lead to further exploitation, including Remote Code Execution (RCE) if internal services are vulnerable.

The vulnerability has a CVSS score of 9.1 (Critical) and is fixed in a specific commit. No public exploit code or PoC is currently available, but the attack surface is significant due to the potential for SSRF and DoS.

⚡ 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

This vulnerability is specific to the DiscordNotifications extension for MediaWiki. It is not a core MediaWiki vulnerability. Administrators should verify the source and integrity of the extension code, especially if obtained from third-party repositories. The extension is typically installed via Composer or manual download from the MediaWiki extension directory.

CVSS Breakdown & Threat Level

  • CVSS Score: 9.1 (Critical)
  • Attack Vector (AV): Network (N) - The vulnerability can be exploited remotely.
  • Attack Complexity (AC): Low (L) - No special conditions are required.
  • Privileges Required (PR): None (N) - An attacker does not need to be authenticated.
  • User Interaction (UI): None (N) - No user action is required.
  • Scope (S): Unchanged (U) - The vulnerable component and the impacted component are the same.
  • Confidentiality (C): High (H) - SSRF can lead to disclosure of sensitive internal data.
  • Integrity (I): High (H) - SSRF can allow modification of internal systems.
  • Availability (A): High (H) - DoS can render the service unavailable.

Threat Level: Critical. The combination of low attack complexity, no required privileges, and the potential for SSRF leading to RCE makes this a high-priority vulnerability.

Deep Dive & Mechanics

The DiscordNotifications extension is designed to send HTTP POST requests to a Discord webhook URL when certain actions occur on the wiki (e.g., edits, page creations). The webhook URL is configured by the wiki administrator via the $wgDiscordIncomingWebhookUrl and $wgDiscordAdditionalIncomingWebhookUrls variables in LocalSettings.php.

The vulnerability arises because the extension does not validate or sanitize these URLs. An attacker who can modify these configuration variables (e.g., through another vulnerability, misconfiguration, or if the attacker has admin access) can set them to arbitrary URLs.

Attack Flow:

  1. Configuration Manipulation: An attacker gains the ability to modify the $wgDiscordIncomingWebhookUrl variable. This could be achieved through:
    • A separate vulnerability (e.g., SQL injection, XSS leading to admin session hijacking).
    • A misconfigured wiki where non-admin users can edit LocalSettings.php.
    • A compromised admin account.
  2. Malicious URL Injection: The attacker sets the webhook URL to a malicious target:
    • For DoS: http://localhost/path/to/a/very/large/file or http://attacker-controlled-server.com/largefile.bin.
    • For SSRF: http://internal-api.service:8080/sensitive-endpoint (e.g., a cloud metadata service like http://169.254.169.254/latest/meta-data/).
  3. Triggering the Request: The attacker triggers an action on the wiki that causes the extension to send a notification (e.g., creating a new page, editing an existing page).
  4. Exploitation:
    • DoS: The server attempts to read the large file, consuming memory and CPU, potentially leading to a crash or resource exhaustion.
    • SSRF: The server sends an HTTP POST request to the internal API. If the API is unprotected, the attacker can read sensitive data, modify configurations, or trigger actions that lead to RCE.

Vulnerable vs. Patched Code

The vulnerability is fixed in commit 1f20d850cbcce5b15951c7c6127b87b927a5415e. The exact code changes are not publicly detailed, but the fix likely involves:

  • Vulnerable Code (Conceptual):

    // No validation of the webhook URL
    $url = $wgDiscordIncomingWebhookUrl;
    $response = file_get_contents($url, false, stream_context_create(['http' => ['method' => 'POST', 'content' => $payload]]));
    
  • Patched Code (Conceptual):

    $url = $wgDiscordIncomingWebhookUrl;
    // Validate the URL
    if (filter_var($url, FILTER_VALIDATE_URL) === false) {
        // Log error and abort
        return;
    }
    // Restrict to HTTPS only
    if (parse_url($url, PHP_URL_SCHEME) !== 'https') {
        // Log error and abort
        return;
    }
    // Optionally, validate the host against a whitelist
    $host = parse_url($url, PHP_URL_HOST);
    if (!in_array($host, ['discord.com', 'discordapp.com'])) {
        // Log error and abort
        return;
    }
    $response = file_get_contents($url, false, stream_context_create(['http' => ['method' => 'POST', 'content' => $payload]]));
    

Exploitation & Lab Setup

Red Team

Prerequisites:

  • A MediaWiki instance with the DiscordNotifications extension installed and configured.
  • Ability to modify $wgDiscordIncomingWebhookUrl (e.g., admin access or another vulnerability).

Lab Setup:

  1. Install MediaWiki: Set up a local MediaWiki instance (e.g., using Docker).
  2. Install DiscordNotifications: Download and install the vulnerable version of the extension.
  3. Configure Webhook: In LocalSettings.php, set $wgDiscordIncomingWebhookUrl to a placeholder URL (e.g., http://localhost:9999/test).
  4. Set Up Listener: Use netcat to listen for incoming requests:
    nc -lvp 9999
    
  5. Trigger Action: Create a new page or edit an existing page on the wiki.
  6. Observe: The netcat listener should receive an HTTP POST request from the MediaWiki server.

Exploitation Scenarios:

  • SSRF to Cloud Metadata:

    # Set the webhook URL to the AWS metadata endpoint
    # $wgDiscordIncomingWebhookUrl = 'http://169.254.169.254/latest/meta-data/';
    # Trigger a wiki action
    

    The server will send a POST request to the metadata service, potentially leaking IAM credentials.

  • DoS via Large File:

    # Create a large file on the server
    dd if=/dev/zero of=/tmp/largefile bs=1M count=1000
    # Set the webhook URL to the file
    # $wgDiscordIncomingWebhookUrl = 'file:///tmp/largefile';
    # Trigger a wiki action
    

    The server will attempt to read the 1GB file, causing resource exhaustion.

Blue Team

Detection:

  • Monitor for unusual outbound HTTP POST requests from the MediaWiki server to unexpected destinations (e.g., internal IPs, cloud metadata IPs).
  • Monitor for modifications to LocalSettings.php or the DiscordNotifications extension configuration.
  • Monitor for high CPU or memory usage on the MediaWiki server.

Hunting:

  • Search logs for file_get_contents or curl calls to non-standard URLs.
  • Check the $wgDiscordIncomingWebhookUrl and $wgDiscordAdditionalIncomingWebhookUrls values in LocalSettings.php for any suspicious URLs.

Indicators of Compromise (IOCs)

  • Network IOCs:

    • Outbound HTTP POST requests to internal IP addresses (e.g., 10.x.x.x, 172.x.x.x, 192.168.x.x).
    • Outbound HTTP POST requests to cloud metadata IPs (169.254.169.254, fd00:ec2::254).
    • Outbound HTTP POST requests to file:// URIs.
    • Unusual traffic to high-numbered ports on internal hosts.
  • File IOCs:

    • Modified LocalSettings.php containing suspicious URLs in $wgDiscordIncomingWebhookUrl or $wgDiscordAdditionalIncomingWebhookUrls.
    • Large temporary files created in /tmp or other writable directories.
  • Log IOCs:

    • PHP warnings or errors related to file_get_contents or curl failures.
    • Web server logs showing POST requests to the wiki followed by outbound connections.

Detection Engineering

YARA Rule

rule DiscordNotifications_SSRF_DoS {
    meta:
        description = "Detects vulnerable DiscordNotifications extension configuration"
        author = "Valters IT"
        date = "2025-04-10"
        reference = "CVE-2025-53371"
        hash = "unknown"
    strings:
        $s1 = "$wgDiscordIncomingWebhookUrl" nocase
        $s2 = "$wgDiscordAdditionalIncomingWebhookUrls" nocase
        $s3 = "file_get_contents" nocase
        $s4 = "curl" nocase
    condition:
        any of ($s1, $s2) and any of ($s3, $s4)
}

Sigma Rule

title: DiscordNotifications SSRF or DoS Activity
id: 7b8c9d0e-1f2a-3b4c-5d6e-7f8a9b0c1d2e
status: experimental
description: Detects potential exploitation of CVE-2025-53371 via outbound HTTP POST requests to suspicious destinations.
author: Valters IT
date: 2025-04-10
references:
    - https://nvd.nist.gov/vuln/detail/CVE-2025-53371
logsource:
    category: network_connection
    product: windows
    service: sysmon
detection:
    selection:
        Initiated: 'true'
        DestinationPort: 80
        Protocol: 'tcp'
        Image|endswith: '\php.exe'
    filter:
        DestinationIp:
            - 'discord.com'
            - 'discordapp.com'
    condition: selection and not filter
falsepositives:
    - Legitimate Discord webhook traffic to discord.com or discordapp.com
level: high

Suricata Rule

alert http $HOME_NET any -> $EXTERNAL_NET any (msg:"CVE-2025-53371 DiscordNotifications SSRF Attempt"; flow:to_server,established; content:"POST"; http_method; content:"/api/webhooks/"; http_uri; distance:0; pcre:"/^Host\x3a\x20(?!discord\.com|discordapp\.com)/Hmi"; sid:1000001; rev:1;)

Remediation & Mitigation

Immediate Actions:

  1. Apply the Patch: Update the DiscordNotifications extension to the latest version that includes the fix from commit 1f20d850cbcce5b15951c7c6127b87b927a5415e.
  2. Restrict Configuration Access: Ensure that only trusted administrators can modify LocalSettings.php and the extension's configuration.
  3. Validate Webhook URLs: Manually verify that $wgDiscordIncomingWebhookUrl and $wgDiscordAdditionalIncomingWebhookUrls point to legitimate Discord webhook endpoints (https://discord.com/api/webhooks/... or https://discordapp.com/api/webhooks/...).

Long-Term Mitigations:

  1. Network Segmentation: Restrict outbound traffic from the MediaWiki server to only necessary destinations (e.g., Discord's IP ranges).
  2. Web Application Firewall (WAF): Deploy a WAF to inspect outbound requests and block those to suspicious destinations.
  3. Code Review: Conduct a security review of all MediaWiki extensions, especially those that make outbound HTTP requests.
  4. Principle of Least Privilege: Ensure the web server user has minimal permissions and cannot read arbitrary files.

Valters IT Signature This report was generated by Valters IT DevSecOps AI. For questions, contact security@valters.it.

◈ SOURCE Analysis & enrichment: valtersit.com/cve/CVE-2025-53371/ · 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.