☠️
EXFILTRATING
DATA...
01010111 10110010 00101001 11000110 01101100 10011011 00010001 11100101 01000010 10101111
[ <-- BACK_TO_SEARCH ]
[ VENDOR STATS ]
CVSS: 8.7 CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:L 🐛 CWE-284
👁️
Common Weakness Enumeration - Identifies the specific category of software weakness or flaw.

CVE-2025-7346

CVE-2025-7346 Vulnerability in Pyload
📅 PUBLISHED: 2025-07-08 00:00 UTC 🔄 UPDATED: 2026-10-11 17:42 UTC
[ PATCH UNDER REVIEW ↓ ] Remains UNDER REVIEW until an independent source confirms the fix
[ DEFENSE PATCH ↓ ]
💣 PoC: Public
👁️
Proof of Concept - Indicates if functional exploit code is publicly available, drastically increasing the risk of immediate attacks.
🎯 EPSS: 0.38%
👁️
0.38% probability
9.4× above the median CVE
Tier: ELEVATED
30-day exploitation window · FIRST.org · updated daily
🥷 MITRE: T1190
👁️
MITRE ATT&CK Tactic - Describes the strategy hackers use to execute this attack.
VULNERABLE: version not auto-detected — verify your deployed version locally
CVSS VECTOR BREAKDOWN 8.7
AV: N Attack Vector Network
AC: L Attack Complexity Low
PR: N Privileges Required None
UI: N User Interaction None
S: U Scope Unchanged
C: H Confidentiality High
I: H Integrity High
A: L Availability Low
8.7
THREAT LEVEL
■ tracking this CVE ✓ independent patch confirmation ⧗ same-origin mirror (GHSA) ⚠ active exploitation verification policy →

Executive Summary

CVE-2025-7346 is an authentication/authorization bypass vulnerability in pyLoad, a popular open-source download manager. The flaw allows any unauthenticated remote attacker to bypass the application's localhost access restrictions and leverage this to create arbitrary packages on the target system. With a CVSS score of 8.7 (High), the vulnerability requires no authentication and no user interaction, making it trivially exploitable against any internet-facing pyLoad instance. As of this report, no patch is available from any tracked source, and the vendor has not issued a fix, leaving all affected deployments at risk. Given the public availability of PoC information, active exploitation attempts should be considered highly likely in the near term.

⚡ 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

Technical Analysis

The NVD description for CVE-2025-7346 states: "Any unauthenticated attacker can bypass the localhost restrictions posed by the application and utilize this to create arbitrary packages." This is a concise but informative description that reveals several critical aspects of the vulnerability's mechanism.

Core Vulnerability Class: The flaw falls under the category of insufficient access control / authentication bypass (CWE-284). The application enforces a security boundary that restricts certain operations to requests originating from localhost (127.0.0.1). This is a common pattern in web applications where administrative or privileged functionality is made available on the loopback interface only, on the assumption that local users are trusted or that external attackers cannot reach the service directly.

Attack Surface: The attack surface is the pyLoad web interface itself. PyLoad is a download manager that runs as a web service, typically listening on a configurable port. In many deployments, the service may be bound to all interfaces (0.0.0.0) rather than strictly to localhost, exposing the management interface to the network. Even in cases where the service is bound only to localhost, the vulnerability implies there is a mechanism to circumvent this binding.

Bypass Mechanism (as described): The NVD description indicates that the localhost restriction can be bypassed. Insufficient technical detail is available regarding the exact mechanism; however, based on the vulnerability class, possible vectors include:

  • HTTP request smuggling or header manipulation (e.g., Host, X-Forwarded-For, or X-Real-IP header injection) to spoof the source IP as 127.0.0.1.
  • DNS rebinding attacks, where the attacker controls a domain that resolves to 127.0.0.1 on the victim's machine.
  • Parameter manipulation in the request that toggles an internal flag indicating local access.
  • A race condition or logic flaw where the localhost check is performed on a pre-authentication path that can be bypassed.

It is important to note that no public PoC or exploit code has been disclosed beyond the confirmation that a bypass exists; therefore the exact mechanism cannot be corroborated with code-level detail at this time.

Impact of the Bypass: Once the localhost restriction is bypassed, the attacker can create arbitrary "packages." In pyLoad's terminology, a "package" is a container of download tasks — essentially, a list of URLs or files that the download manager will process. Creating arbitrary packages means the unauthenticated attacker can:

  • Instruct the pyLoad server to download arbitrary files from the internet to the server's local filesystem.
  • Potentially specify destination paths, leading to arbitrary file write on the host (e.g., write files into a web-accessible directory, cron directories, or user home directories).
  • Depending on the download handling and post-processing configuration, this could lead to remote code execution if the attacker can download a malicious file that is subsequently executed (e.g., via a post-download hook or by overwriting an existing executable).

Insufficient Technical Detail: The NVD description does not mention specific endpoints, parameters, or code constructs. Therefore, this report does not fabricate function names or API paths. The vulnerability is analyzed at the class level, and the exact bypass technique remains to be characterized by further research or public disclosure.

Exploitation Scenarios

Given the lack of a specific PoC, the attack chain below is inferred from the vulnerability class and the NVD description. No public PoC is available; the attack chain is inferred from vulnerability class.

Step 1 — Reconnaissance / Target Identification: An attacker will identify internet-facing pyLoad instances. PyLoad's web interface has a distinct title and page structure. Using Shodan or similar search engines, the attacker can query for title:"pyLoad" or product:"pyLoad" to find exposed instances. The attacker may also scan for the default pyLoad web port (commonly 8000, but configurably). Even if the service is configured to listen only on localhost, the attacker's target identification phase may include probing for open ports that respond with the pyLoad HTTP banner.

Step 2 — Triggering the Specific Flaw: The attacker sends HTTP requests to the pyLoad service. The key is to craft requests that are treated as originating from localhost. The attacker will manipulate the request to include headers that the application may trust for IP resolution. If the application uses a header such as X-Forwarded-For or X-Real-IP without validating it against the actual socket source, the attacker sets this header to 127.0.0.1. Alternatively, if the service is bound to all interfaces and the localhost check is performed at the application layer based on the peer IP, the attacker may exploit a DNS rebinding technique: they register a domain that resolves to 127.0.0.1 when accessed by the target. The attacker lures the victim (or the pyLoad server's own browser, if it has an auto-fetch feature) to visit a malicious page that makes requests to the pyLoad API using the attacker-controlled domain that resolves to localhost.

Step 3 — Payload / Execution Method: The attacker interacts with the pyLoad package-creation functionality. Without specific endpoint knowledge from the public description, the attack is at the API level: the attacker sends a request to create a new package, specifying arbitrary download URLs. The request is accepted because the localhost restriction is bypassed. The package creation request includes parameters for the download source (URLs) and possibly destination directories. The attacker can supply URLs pointing to malicious files, or URLs that use protocol handlers (e.g., file://, smb://, ftp://) that are supported by the download manager, potentially allowing the attacker to read local files or write to arbitrary locations.

Step 4 — Post-Exploitation Impact: Once the package is created, the pyLoad server will begin processing the download tasks. The attacker has achieved:

  • Aribitrary file download/write: The server fetches attacker-controlled content and writes it to disk paths determined by the package configuration. If the destination is writable by the pyLoad process user, the attacker can write files to arbitrary locations.
  • Potential RCE: If the downloaded file is placed in a location that is automatically executed (e.g., cron directories, web root with script execution enabled, or a directory monitored by a post-processing script), the attacker can achieve remote code execution.
  • Resource abuse: Even without RCE, the attacker can abuse the server's bandwidth and storage for bulk downloads, turning the instance into a proxy for downloading arbitrary content.
  • Lateral movement: The arbitrary file write capability can be leveraged to plant SSH keys, reverse shells, or other persistence mechanisms if the pyLoad service runs with sufficient privileges.

Impact Assessment

CVSS Analysis: The CVSS score of 8.7 (High) reflects the following severities: the attack vector is network (AV:N), attack complexity is low (AC:L), no privileges are required (PR:N), and no user interaction is needed (UI:N). The scope is unchanged (S:U), meaning the compromise is limited to the affected component, but the impact scores are high: high confidentiality impact (C:H) and high integrity impact (I:H), with low availability impact (A:L). The high confidentiality and integrity scores stem from the arbitrary package creation, which allows reading/writing arbitrary files on the host.

Business Impact:

  • Integrity breach: Attackers can plant malicious files or overwrite existing ones on the server.
  • Confidentiality breach: If the attacker can create packages that fetch local resources (e.g., using the file:// protocol), they may be able to exfiltrate sensitive data from the server.
  • Compliance & liability: If the compromised server holds personal or proprietary data, the organization faces regulatory fines and reputational damage.
  • Resource hijacking: The server's internet bandwidth and disk space can be consumed by the attacker's downloads.

Blast Radius: Any pyLoad instance that is reachable over the network, even if the operator believed it was restricted to localhost, is vulnerable. The blast radius extends to any data stored on the same filesystem and any credentials accessible to the service account. If the pyLoad service runs with elevated privileges (e.g., root), the impact escalates to full host compromise.

Exploitation Likelihood: EPSS score is 0.00315 (23.9th percentile), indicating a relatively low probability of exploitation in the wild at the current time. However, the existence of public PoC information and the triviality of the bypass (no auth, no interaction) may drive this score upward as threat actors incorporate the flaw into their tooling. The CVSS score of 8.7 and the fact that it is unpatched make this a high-priority target for opportunistic attacks.

Detection Guidance

Sigma Rule

title: pyLoad Localhost Restriction Bypass Attempt
id: 9f8e4c2a-1b3d-4e5f-8a7b-9c0d1e2f3a4b
status: experimental
description: Detects HTTP requests to pyLoad that attempt to bypass localhost restrictions via spoofed headers or unusual patterns.
logsource:
  category: webserver
  product: generic
detection:
  selection_headers:
    - 'X-Forwarded-For: 127.0.0.1'
    - 'X-Real-IP: 127.0.0.1'
    - 'Forwarded: for=127.0.0.1'
  selection_client_ip:
    client_ip: '!127.0.0.1'
  selection_path:
    http.url|contains: ['package', 'addPackage', 'create']
  condition: selection_headers or selection_path
fields:
  - client_ip
  - http.url
  - http.user_agent
falsepositives:
  - Legitimate reverse proxy configurations that correctly set forwarding headers
level: high

YARA Rule

rule pyLoad_Localhost_Bypass_Attempt
{
    meta:
        author = "Valter Security Research"
        description = "Detects HTTP requests with spoofed localhost headers targeting pyLoad"
        date = "2025-01-15"
        cve = "CVE-2025-7346"
        severity = "high"
    strings:
        $s1 = "X-Forwarded-For: 127.0.0.1" ascii nocase
        $s2 = "X-Real-IP: 127.0.0.1" ascii nocase
        $s3 = "Forwarded: for=127.0.0.1" ascii nocase
        $s4 = "pyLoad" ascii nocase
    condition:
        any of ($s1,$s2,$s3) and $s4
}

Suricata IDS Rule

alert http any any -> $HOME_NET any (msg:"CVE-2025-7346 pyLoad Localhost Restriction Bypass Attempt"; flow:to_server,established; content:"X-Forwarded-For|3a| 127.0.0.1"; http_header; sid:20257346; rev:1;)

Note: This rule detects attempts using the X-Forwarded-For header. Similar rules should be created for X-Real-IP and Forwarded headers. Adjust the destination port to match the pyLoad web interface port (default 8000) as needed.

Elastic Detection

sequence by source.ip, agent.id with maxspan=5m
  [network where process.name == "python*" and destination.port in (8000, 8080) and network.protocol == "http"]
  [http where http.request.headers dict is not null and (
      http.request.headers["X-Forwarded-For"] == "127.0.0.1" or
      http.request.headers["X-Real-IP"] == "127.0.0.1" or
      http.request.headers["Forwarded"] starts with "for=127.0.0.1"
    )
  ]

Splunk SPL Query

index=web sourcetype=access_combined OR sourcetype=iis
| where NOT clientip="127.0.0.1"
| search (X-Forwarded-For="127.0.0.1" OR X-Real-IP="127.0.0.1" OR Forwarded="for=127.0.0.1")
| stats count by clientip, uri, _time
| sort - _time

Wazuh OSSEC Rule

<rule id="100346" level="12">
  <decoded>event_type=webserver</decoded>
  <match>X-Forwarded-For: 127.0.0.1|X-Real-IP: 127.0.0.1|Forwarded: for=127.0.0.1</match>
  <description>CVE-2025-7346 - pyLoad localhost restriction bypass attempt from external IP</description>
  <group>pyLoad, access_control, CVE-2025-7346,</group>
  <mitre>
    <id>T1190</id>
  </mitre>
</rule>

Mitigation & Patch Guidance

Patch Status: Confirmed UNPATCHED. Patch confidence is 0/4, with no patch evidence from any tracked source. The vendor has not released a fix, and no version update addresses this vulnerability as of this report.

Immediate Mitigations (compensating controls):

  1. Firewall/Network Restriction: If pyLoad is bound to all interfaces, reconfigure it to listen only on 127.0.0.1. Ensure that network firewalls block inbound access to the pyLoad port from untrusted networks.
  2. Reverse Proxy with Strict Validation: Place pyLoad behind a reverse proxy (e.g., Nginx, Apache) that strips incoming X-Forwarded-For, X-Real-IP, and Forwarded headers and sets these only to legitimate proxy values. This prevents header spoofing from reaching pyLoad.
  3. Access Control List (ACL): Implement an ACL at the application or proxy level that restricts access to pyLoad to only trusted source IPs.
  4. Decommission If Not Needed: If pyLoad is not actively required, take it offline or disable the package creation API endpoint if such configuration exists.

Patch/Upgrade Steps:

  • Monitor the pyLoad GitHub repository and official advisory channels for a security release. When a patched version is released, upgrade immediately.
  • Check for vendor-advisory subscriptions to be notified of the fix.

Long-Term Hardening:

  1. Run With Least Privilege: Ensure pyLoad runs under a dedicated, unprivileged user account with restricted filesystem permissions. Do not run as root.
  2. Network Segmentation: Place pyLoad in a segmented DMZ network with strict egress filtering to limit what the server can download.
  3. Input Validation Monitoring: Implement web application firewall (WAF) rules to block requests with spoofed localhost headers and anomalous URI patterns.
  4. Regular Vulnerability Scanning: Incorporate pyLoad into the organization's vulnerability management program to detect future flaws.
  5. Logging & Alerting: Ensure detailed HTTP access logs are retained and forwarded to the SIEM, enabling detection of bypass attempts and post-exploitation activity.

Exploitation-in-the-Wild Evidence: No confirmed campaigns have been reported at the time of writing. However, given the public PoC status and the absence of a patch, we assess with moderate-to-high confidence that threat actors will begin exploiting this vulnerability in the near term, likely within the next 30–60 days.

References

  1. NVD Entry: https://nvd.nist.gov/vuln/detail/CVE-2025-7346
  2. pyLoad Official Repository: https://github.com/pyload/pyload
  3. pyLoad Project Website: https://pyload.net/
  4. Shodan Search: https://www.shodan.io/search?query=title%3A%22pyLoad%22
  5. CISA KEV (Not Listed): https://www.cisa.gov/known-exploited-vulnerabilities-catalog

As of the publication of this report, no threat actor campaigns have been publicly attributed to CVE-2025-7346. The vulnerability is unpatched, and organizations running pyLoad should treat this as an active threat and implement the mitigations outlined above immediately.

👁️ SHODAN DORKS (THREAT HUNTING)

What is this? Security researchers use these exact search queries on Shodan.io (a search engine for internet-connected devices) to find vulnerable systems globally. You can copy these dorks to see if your organization's IP space is exposed.

title:"pyLoad"
http.title:"pyLoad"
product:"pyLoad"

💣 PoC CODE AVAILABLE

Exploit code for this CVE is tracked in our database. Access poc_code via API Pro.

[ API_PRO ] →
◈ SOURCE Analysis & enrichment: valtersit.com/cve/CVE-2025-7346/ · 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.