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

CVE-2026-44183

CVE-2026-44183 Authentication Bypass in Cleanuparr
📅 PUBLISHED: 2026-05-12 18:17 UTC 🔄 UPDATED: 2026-10-08 23:08 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.33%
👁️
0.33% probability
8.2× above the median CVE
Tier: ELEVATED
30-day exploitation window · FIRST.org · updated daily
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
9.8
THREAT LEVEL
■ tracking this CVE ✓ independent patch confirmation ⧗ same-origin mirror (GHSA) ⚠ active exploitation verification policy →

Executive Summary

CVE-2026-44183 is a critical authentication bypass vulnerability in Cleanuparr, a tool for automating the cleanup of unwanted or blocked files in Sonarr, Radarr, and supported download clients like qBittorrent. The vulnerability resides in the TrustedNetworkAuthenticationHandler.ResolveClientIp method, which parses the leftmost entry of the X-Forwarded-For header as the client IP. Since the X-Forwarded-For header is append-only and attacker-controlled, an unauthenticated remote attacker can spoof a local IP (e.g., 127.0.0.1 or a private subnet IP) to bypass the trusted-network check and gain administrative access to the Cleanuparr instance. This allows full control over the application, including the ability to delete or manipulate files in connected services. The vulnerability has a CVSS score of 9.8 (Critical) and is fixed in version 2.9.10. No public exploit code or PoC is available at this time.

⚡ 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

Cleanuparr is a .NET application distributed via GitHub releases and potentially through package managers. Users should verify the integrity of downloaded binaries using checksums provided by the vendor. The vulnerability does not directly affect the supply chain of dependencies, but the administrative access gained could be used to tamper with connected services (Sonarr, Radarr, qBittorrent), potentially leading to supply chain attacks on media files or configurations.

CVSS Breakdown & Threat Level

  • CVSS Score: 9.8 (Critical)
  • Vector: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
  • Attack Vector: Network (AV:N) – The vulnerability can be exploited remotely over the network.
  • Attack Complexity: Low (AC:L) – No special conditions or complex steps are required.
  • Privileges Required: None (PR:N) – No authentication is needed.
  • User Interaction: None (UI:N) – No user action is required.
  • Scope: Unchanged (S:U) – The vulnerability does not affect other components beyond Cleanuparr.
  • Confidentiality Impact: High (C:H) – An attacker can access all data managed by Cleanuparr.
  • Integrity Impact: High (I:H) – An attacker can modify or delete files and configurations.
  • Availability Impact: High (A:H) – An attacker can disrupt the service or delete critical files.

Threat Level: Critical. The vulnerability allows unauthenticated remote attackers to gain full administrative control over Cleanuparr, which can then be used to compromise connected services.

Deep Dive & Mechanics

The vulnerability is rooted in the TrustedNetworkAuthenticationHandler.ResolveClientIp method. This method is responsible for determining the client's IP address when the application is behind a reverse proxy. The intended logic is to trust the X-Forwarded-For header only if it comes from a known proxy. However, the implementation incorrectly parses the leftmost entry of the header as the client IP without validating the source of the header.

How the Attack Works:

  1. An attacker sends an HTTP request to the Cleanuparr instance with a spoofed X-Forwarded-For header containing a local IP address (e.g., 127.0.0.1 or 192.168.1.1).
  2. The ResolveClientIp method extracts the leftmost IP from the header and uses it as the client IP.
  3. The application then checks if this IP is within the trusted network range (e.g., localhost or private subnets).
  4. Since the spoofed IP matches the trusted network, the authentication check passes, and the attacker is logged in as the administrator.

Root Cause: The lack of validation of the X-Forwarded-For header source. The application should only trust the header if it is added by a known reverse proxy, not by the client.

Impact: Full administrative access to Cleanuparr, allowing the attacker to:

  • View and delete files in Sonarr, Radarr, and download clients.
  • Modify application settings.
  • Potentially pivot to connected services.

Vulnerable vs. Patched Code

Vulnerable Code (Pre-2.9.10):

public string ResolveClientIp(HttpRequest request)
{
    var forwardedFor = request.Headers["X-Forwarded-For"].FirstOrDefault();
    if (!string.IsNullOrEmpty(forwardedFor))
    {
        // Vulnerable: Takes the leftmost IP without validation
        return forwardedFor.Split(',')[0].Trim();
    }
    return request.HttpContext.Connection.RemoteIpAddress.ToString();
}

Patched Code (2.9.10):

public string ResolveClientIp(HttpRequest request)
{
    var forwardedFor = request.Headers["X-Forwarded-For"].FirstOrDefault();
    if (!string.IsNullOrEmpty(forwardedFor))
    {
        // Patched: Only trust the header if it comes from a known proxy
        var remoteIp = request.HttpContext.Connection.RemoteIpAddress;
        if (IsTrustedProxy(remoteIp))
        {
            // Take the rightmost IP (the one added by the last trusted proxy)
            return forwardedFor.Split(',').Last().Trim();
        }
    }
    return request.HttpContext.Connection.RemoteIpAddress.ToString();
}

private bool IsTrustedProxy(IPAddress ip)
{
    // Check against a list of known proxy IPs
    return trustedProxies.Contains(ip);
}

Key Difference: The patched code validates the source IP of the request before trusting the X-Forwarded-For header. It also takes the rightmost IP (added by the last trusted proxy) instead of the leftmost (attacker-controlled).

Exploitation & Lab Setup

Red Team

Prerequisites:

  • A target Cleanuparr instance running version < 2.9.10.
  • Network access to the target.

Exploitation Steps:

  1. Identify the target Cleanuparr instance (e.g., http://target:8080).
  2. Send a request with a spoofed X-Forwarded-For header containing a local IP:
    curl -X GET http://target:8080/api/admin -H "X-Forwarded-For: 127.0.0.1"
    
  3. The application will treat the request as coming from a trusted network and grant administrative access.
  4. Use the administrative session to perform actions (e.g., delete files, modify settings).

Note: No public exploit code is available. The above is a conceptual demonstration.

Blue Team

Detection Steps:

  1. Monitor for requests with X-Forwarded-For headers containing local IPs (e.g., 127.0.0.1, 10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16) from external sources.
  2. Check logs for authentication events where the client IP is a local address but the request originates from an external IP.
  3. Verify that the application is behind a reverse proxy and that the proxy is configured to strip or overwrite the X-Forwarded-For header from clients.

Lab Setup:

  • Deploy a vulnerable Cleanuparr instance (version < 2.9.10) in an isolated environment.
  • Use a tool like Burp Suite or curl to send spoofed headers.
  • Monitor logs and network traffic to observe the attack.

Indicators of Compromise (IOCs)

  • Network IOCs:

    • HTTP requests with X-Forwarded-For headers containing private IP addresses (e.g., 127.0.0.1, 10.0.0.1, 192.168.1.1) from external sources.
    • Unusual administrative actions (e.g., file deletions, configuration changes) originating from IPs that should not have administrative access.
  • Log IOCs:

    • Authentication logs showing successful login with a client IP that is a private address but the request source IP is external.
    • Access logs showing requests to administrative endpoints (e.g., /api/admin) with spoofed headers.
  • File IOCs:

    • Unexpected deletion or modification of files in connected services (Sonarr, Radarr, qBittorrent).

Detection Engineering

YARA Rule

rule CVE_2026_44183_Cleanuparr_XForwardedFor_Spoofing {
    meta:
        description = "Detects attempts to exploit CVE-2026-44183 by spoofing X-Forwarded-For header with local IP"
        author = "Valters IT"
        date = "2025-04-10"
        reference = "CVE-2026-44183"
    strings:
        $x_forwarded_for = "X-Forwarded-For"
        $local_ip1 = "127.0.0.1"
        $local_ip2 = "10." ascii
        $local_ip3 = "172.16." ascii
        $local_ip4 = "192.168." ascii
    condition:
        $x_forwarded_for and ($local_ip1 or $local_ip2 or $local_ip3 or $local_ip4)
}

Sigma Rule

title: CVE-2026-44183 - Cleanuparr X-Forwarded-For Spoofing
id: 8a9b3c4d-5e6f-7a8b-9c0d-1e2f3a4b5c6d
status: experimental
description: Detects HTTP requests with spoofed X-Forwarded-For headers containing local IPs targeting Cleanuparr
author: Valters IT
date: 2025-04-10
references:
    - https://nvd.nist.gov/vuln/detail/CVE-2026-44183
logsource:
    category: webserver
    product: apache
    service: access_combined
detection:
    selection:
        cs-uri-query|contains: "Cleanuparr"
        cs-headers|contains: "X-Forwarded-For"
        cs-headers|contains|any:
            - "127.0.0.1"
            - "10."
            - "172.16."
            - "192.168."
    condition: selection
falsepositives:
    - Legitimate reverse proxy configurations
level: high

Suricata Rule

alert http any any -> any any (msg:"CVE-2026-44183 - Cleanuparr X-Forwarded-For Spoofing Attempt"; flow:to_server; content:"X-Forwarded-For"; http_header; pcre:"/X-Forwarded-For\x3a\s*(127\.0\.0\.1|10\.\d{1,3}\.\d{1,3}\.\d{1,3}|172\.(1[6-9]|2[0-9]|3[0-1])\.\d{1,3}\.\d{1,3}|192\.168\.\d{1,3}\.\d{1,3})/Hi"; sid:1000001; rev:1;)

Remediation & Mitigation

Immediate Actions:

  1. Upgrade to version 2.9.10 or later – This is the only complete fix.
  2. If immediate upgrade is not possible, implement a reverse proxy (e.g., Nginx, Apache) that strips or overwrites the X-Forwarded-For header from client requests.
  3. Restrict network access to Cleanuparr to trusted IPs only using firewall rules.

Long-Term Mitigations:

  • Ensure that the application is always behind a reverse proxy that validates headers.
  • Implement additional authentication mechanisms (e.g., API keys, OAuth) for administrative access.
  • Regularly update Cleanuparr and monitor for security advisories.

Workaround:

  • Configure the reverse proxy to set the X-Forwarded-For header only from trusted sources and strip any existing header from clients.

Valters IT

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