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

CVE-2024-51998

CVE-2024-51998 Supply Chain Attack in Changedetection.io
📅 PUBLISHED: 2024-11-07 23:34 UTC 🔄 UPDATED: 2026-10-11 17:46 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.69%
👁️
0.69% probability
17.2× above the median CVE
Tier: ELEVATED
30-day exploitation window · FIRST.org · updated daily
Country: Australia 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
8.6
THREAT LEVEL
■ tracking this CVE ✓ independent patch confirmation ⧗ same-origin mirror (GHSA) ⚠ active exploitation verification policy →

Executive Summary

CVE-2024-51998 is a critical vulnerability in changedetection.io, a free open source web page change detection tool. The flaw resides in the URL validation logic, specifically within the is_safe_url function. An attacker can bypass the ALLOW_FILE_URI restriction by exploiting the fact that the file URI scheme (file:) does not require double slashes (//). This allows an unauthenticated attacker to read arbitrary files on the server, leading to a high confidentiality impact. The vulnerability only affects instances with a webdriver enabled and ALLOW_FILE_URI set to false or undefined. The CVSS score is 8.6 (High). No public exploit code is available, but the vulnerability is trivial to exploit.

⚡ 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

changedetection.io is a Python-based application distributed via PyPI and GitHub. The vulnerability is in the core application logic, not in a third-party dependency. Users should verify the integrity of the package by checking the SHA256 checksum of the release tarball from the official GitHub repository. The package is not signed, so users should rely on HTTPS and trusted mirrors.

CVSS Breakdown & Threat Level

  • CVSS Score: 8.6 (High)
  • Vector: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N
  • Attack Vector: Network
  • Attack Complexity: Low
  • Privileges Required: None
  • User Interaction: None
  • Scope: Unchanged
  • Confidentiality: High
  • Integrity: None
  • Availability: None

The threat level is high due to the ease of exploitation and the potential for sensitive data exposure. The EPSS score is 0.0%, indicating low exploitation activity in the wild, but this may change as details become public.

Deep Dive & Mechanics

The vulnerability is in the is_safe_url function, which is used to validate URLs before processing. The function checks if the URL starts with file:// to determine if local file access is allowed. However, the file URI scheme can also be written as file: (without double slashes). The validation logic fails to account for this variant, allowing an attacker to bypass the ALLOW_FILE_URI restriction.

For example, an attacker can submit a URL like file:/etc/passwd or file:etc/passwd (relative path) to read arbitrary files. The webdriver then processes this URL, reading the file and returning its contents in the response.

The vulnerable code path:

  1. User submits a URL to the change detection service.
  2. The is_safe_url function checks if the URL starts with file://.
  3. If it does not start with file://, the function proceeds without blocking.
  4. The webdriver then fetches the URL, which is interpreted as a file URI.
  5. The file contents are returned to the user.

The fix in version 0.47.06 adds a more robust check that also catches file: without double slashes.

Vulnerable vs. Patched Code

Vulnerable Code (simplified):

def is_safe_url(url):
    if url.startswith('file://'):
        if not ALLOW_FILE_URI:
            return False
    return True

Patched Code (simplified):

def is_safe_url(url):
    parsed = urlparse(url)
    if parsed.scheme == 'file':
        if not ALLOW_FILE_URI:
            return False
    return True

The patched version uses urlparse to correctly parse the scheme, regardless of whether the URI uses file:// or file:.

Exploitation & Lab Setup

Red Team

Prerequisites:

  • A changedetection.io instance with webdriver enabled and ALLOW_FILE_URI set to false or not defined.
  • Network access to the instance.

Exploitation Steps:

  1. Identify the target instance (e.g., via Shodan dork changedetection.io).
  2. Send a POST request to the API endpoint that accepts URLs for monitoring.
  3. Use a payload like file:/etc/passwd or file:/proc/self/environ.
  4. The response will contain the contents of the file.

Example using curl:

curl -X POST https://target/api/v1/watch \
  -H "Content-Type: application/json" \
  -d '{"url": "file:/etc/passwd", "webdriver": true}'

Expected Output:

{
  "status": "success",
  "content": "root:x:0:0:root:/root:/bin/bash\n..."
}

Blue Team

Detection:

  • Monitor for URLs containing file: scheme in API requests.
  • Look for requests to /etc/passwd, /proc/self/environ, or other sensitive files.
  • Check webdriver logs for file URI accesses.

Hunting:

  • Search for file: in application logs.
  • Use the Sigma rule below to detect exploitation attempts.

Mitigation:

  • Upgrade to version 0.47.06 immediately.
  • If upgrade is not possible, disable the webdriver feature or set ALLOW_FILE_URI to true (not recommended) and implement additional network-level controls.

Indicators of Compromise (IOCs)

  • Network IOCs:
    • HTTP requests with file: scheme in the URL parameter.
    • Responses containing sensitive file contents (e.g., /etc/passwd).
  • File IOCs:
    • Unexpected access to /etc/passwd, /etc/shadow, /proc/self/environ, or other sensitive files.
  • Log IOCs:
    • Webdriver logs showing file: URI accesses.
    • Application logs with file: in the URL field.

Detection Engineering

YARA Rule

rule CVE_2024_51998_File_URI_Exploit {
    meta:
        description = "Detects attempts to exploit CVE-2024-51998 in changedetection.io"
        author = "Valters IT"
        date = "2025-04-10"
        reference = "https://nvd.nist.gov/vuln/detail/CVE-2024-51998"
    strings:
        $file_uri = /file:\/{0,1}[a-zA-Z0-9_\/\.\-]+/
        $sensitive_file = /(passwd|shadow|environ|config|\.env|\.git)/
    condition:
        $file_uri and $sensitive_file
}

Sigma Rule

title: CVE-2024-51998 Exploitation Attempt
id: 8a9b7c6d-5e4f-3a2b-1c0d-9e8f7a6b5c4d
status: experimental
description: Detects HTTP requests with file URI scheme targeting changedetection.io
author: Valters IT
date: 2025-04-10
logsource:
    category: webserver
    product: apache
detection:
    selection:
        cs-method: 'POST'
        cs-uri-query|contains: 'file:'
    condition: selection
falsepositives:
    - Legitimate use of file URI in other contexts (rare)
level: high

Suricata Rule

alert http any any -> any any (msg:"CVE-2024-51998 changedetection.io File URI Exploit"; flow:to_server; content:"file:"; http_client_body; classtype:attempted-recon; sid:1000001; rev:1;)

Remediation & Mitigation

Immediate Actions:

  1. Upgrade changedetection.io to version 0.47.06 or later.
  2. If upgrade is not possible, disable the webdriver feature by setting WEBDRIVER_ENABLED=false in the configuration.
  3. Implement network segmentation to restrict access to the changedetection.io instance.

Long-term Measures:

  • Regularly update all software components.
  • Implement a Web Application Firewall (WAF) to block requests with file: scheme.
  • Conduct regular security audits and penetration testing.
  • Monitor for similar vulnerabilities in URL validation logic.

Workarounds:

  • Set ALLOW_FILE_URI=true (not recommended as it allows legitimate file access).
  • Use a reverse proxy to filter out file: URIs before they reach the application.

Valters IT
Senior DevSecOps & Cyber Threat Intelligence Expert

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