Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessAuthenticate as standard user
-
DeliverySend crafted /api/documents/upload with traversal path
-
ExploitWrite malicious .pth into site-packages
-
ExecutionAwait next Python interpreter restart
-
ImpactCode auto-executed in app context
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A01:2025 - Broken Access Control
ASVS 5.0
V5 - File Handling Path traversal prevention
|
| Exploitation Conditions | Requires a valid authenticated Papermerge account at standard (non-privileged) user level and network access to the /api/documents/upload API endpoint on a deployment running version 3.5.3. The attacker must supply a filename with directory-traversal sequences that resolves into the Python interpreter's site-packages directory, and the written file must be a .pth file whose embedded code Python auto-executes. The decisive limiting factor is timing: the payload runs only 'upon the next start of the Python interpreter,' i.e. an application/worker restart the attacker typically does not control, so exploitation is not instantaneous. Additional limiters: authentication is mandatory (not a pre-auth flaw), and success depends on the application process having write permission to site-packages (common in single-user/venv or container deployments, less so where site-packages is read-only). |
| Impact | This is a credible but conditionally-gated RCE. The provided CVSS 3.1 vector (AV:N/AC:H/PR:L/UI:N/S:U/C:H/I:H/A:H, base 7.5) aligns well with the description: network-reachable API, a low-privileged ('standard user') authenticated account required (PR:L), no user interaction, and full confidentiality/integrity/availability impact consistent with arbitrary code execution. The AC:H rating is justified and important - the .pth payload does not execute on upload but only 'upon the next start of the Python interpreter,' a precondition the attacker generally does not control, which both delays and makes exploitation less deterministic. Public exploit code exists (a documented PoC with write-up), so weaponization effort is low once an attacker has a valid account. No CISA KEV listing and no EPSS score were provided in the input, so there is no evidence of active, widespread exploitation at time of analysis; the combination of PoC-available + authentication-required + delayed trigger points toward opportunistic/targeted risk rather than mass exploitation. Net: a real, patch-worthy priority for anyone running Papermerge 3.5.3 with multiple user accounts, but the PR:L and interpreter-restart dependency meaningfully lower real-world risk below a drive-by unauthenticated RCE. Missing signals to verify: EPSS probability and KEV status were not supplied and should be checked independently. |
| Exploit ScenarioDerived | A standard (non-admin) Papermerge user authenticates and sends a crafted POST to /api/documents/upload whose filename contains directory-traversal sequences, causing a Python .pth file to be written into the interpreter's site-packages directory. The next time the Papermerge/Python process restarts (deploy, crash-recovery, or scheduled restart), the interpreter automatically executes the attacker's code embedded in the .pth file, yielding code execution in the application's context. A public PoC (PDF write-up and supporting files) demonstrating this arbitrary-file-write-to-RCE chain is available. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Oct 05, 2026
Papermerge 3.5.3 permits an authenticated standard user to achieve remote code execution by uploading a crafted file to /api/documents/upload with directory-traversal sequences in the filename, causing a malicious Python .pth file to be written into the interpreter's site-packages directory; the embedded code executes only when the Python interpreter next starts, for example on an application or worker restart. Publicly available exploit code exists via a GitHub PoC repository and accompanying PDF, and the flaw is conditionally gated by requiring the Papermerge process to have write access to site-packages and by the attacker not controlling restart timing, making it a credible but conditionally-gated RCE rather than an immediately triggerable one.
RemediationAI
No vendor-released patch version was identified in the provided intelligence; treat any Papermerge version above 3.5.3 as potentially fixed only after checking the project's release notes. Primary compensating controls: run the Papermerge application process under an account that does not have write permission to the Python interpreter's site-packages directory, for example a dedicated service user in a container or virtualenv where site-packages is owned by root and mounted read-only; this stops the traversal write but may break workflows that pip-install packages at runtime. Restrict upload privileges and monitor or restrict access to /api/documents/upload to trusted, authenticated users, since the flaw requires a valid standard account. Sanitize or reject multipart filenames containing traversal sequences at a reverse proxy or WAF, though filename parsing inconsistencies across proxies can create bypasses and may block legitimate files with dots or slashes. Because the .pth payload only executes on the next Python interpreter start, monitor site-packages for unexpected .pth files and remove them before any restart. No vendor advisory URL was supplied; the public PoC references are https://github.com/kashishtopi/cve-pocs/tree/main/papermerge-core-arbitrary-file-write-rce and https://github.com/kashishtopi/cve-pocs/blob/main/papermerge-core-arbitrary-file-write-rce/HR-papermerge-core-path-traversal-rce.pdf.
Affected VersionsENISA
Affected Packages
Source: OSV (Open Source Vulnerabilities)
Affects your stack
Affects 1 package in euvd
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
Papermerge is an open-source document management system; its papermerge-core component exposes a document upload API endpoint (/api/documents/upload) that accepts multipart file uploads. CWE-24 (Path Traversal: '../filedir') describes the root cause: the application fails to adequately neutralize traversal sequences in the user-supplied filename, so a filename such as ../../.../site-packages/evil.pth escapes the intended upload directory. Python's .pth files are special: when placed in a directory on sys.path, typically site-packages, lines beginning with 'import ' or any executable line are processed at interpreter startup, enabling code execution. Per the CVSS vector CVSS:3.1/AV:N/AC:H/PR:L/UI:N/S:U/C:H/I:H/A:H, the attack is network-reachable, requires low-privileged authentication, needs no user interaction, and has high complexity driven by the need for write permission into site-packages and the timing dependency on a subsequent interpreter restart, since the payload runs only upon the next start of the Python interpreter. The referenced upstream files papermerge/core/features/document/router.py (upload routing) and papermerge/core/pathlib.py (path handling) are the likely vulnerable code locations.
Know when Python gets its next vulnerability
- Watch products and get an email when something new is published
- Check this CVE against your own stack and servers
- Exploit and PoC references, threat intelligence from 22 sources
No credit card · 7-day full trial
Severity by source
AV:N/AC:H/PR:L/UI:N/S:U/C:H/I:H/A:H
Network-reachable API with a required standard user account (PR:L); AC:H because code execution depends on an interpreter restart outside attacker control; RCE yields full C/I/A impact.
Primary rating from Vendor (mitre).
CVSS VectorVendor: mitre
DescriptionCVE.org
Papermerge 3.5.3 allows remote code execution by a standard user via directory traversal in a /api/documents/upload call. A Python .pth file can be written to site-packages, and its code is executed upon the next start of the Python interpreter.
Articles & Coverage 2
Technical POC Analysis
Evidence note: the supplied PDF (HR-papermerge-core-path-traversal-rce.pdf) is a ReportLab researcher report whose text streams are compressed/image data and are not readable here.
Full technical POC analysis - root cause, step-by-step exploitation and patch breakdown - is part of the Pro and Business plans.
Latest POC
2 public PoC links from github
Sign in to open the public PoC links collected for this CVE.
Executive ViewAI
Papermerge 3.5.3 is affected by a high-severity remote code execution flaw that could allow an attacker to run malicious code on the server hosting the document management platform. Publicly available exploit code exists, and no vendor-released patch is currently available, so organizations using this version to store or process sensitive documents face elevated risk of data compromise, service disruption, or lateral movement. Leadership should prioritize identifying affected instances and reducing the application's ability to write to system directories.
No vendor-released patch identified at time of analysis. Interim mitigations include restricting access to the /api/documents/upload endpoint, running Papermerge with least privilege so it cannot write to Python site-packages, using read-only or restricted-write containers/filesystems, blocking directory-traversal sequences in filenames via application validation or a WAF, auditing site-packages for unexpected .pth files, controlling service/worker restarts, and segmenting the application from critical systems.
Threat Intelligence Overview
How this decision was reached
The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.
What every action level means
SSVC AssessmentENISA
Priority Score
Attack Technique
Path traversal exploits occur when applications use user-controlled input to construct file system paths without proper validation.
Remote Code Execution represents the critical moment when an attacker successfully runs arbitrary code on a target system without physical access.
Wazuh SIEM platform versions 4.4.0 through 4.9.0 contain an unsafe deserialization vulnerability in the DistributedAPI t
BentoML version 1.4.2 and earlier contains an unauthenticated remote code execution vulnerability through insecure deser
pgAdmin 4 contains critical remote code execution vulnerabilities in the Query Tool download and Cloud Deployment endpoi
The renderLocalView function in render/views.py in graphite-web in Graphite 0.9.5 through 0.9.10 uses the pickle Python
BentoML is a Python library for building online serving systems optimized for AI apps and model inference. Rated critica
OpenSSL before 0.9.8za, 1.0.0 before 1.0.0m, and 1.0.1 before 1.0.1h does not properly restrict processing of ChangeCiph
pyLoad download manager version prior to 0.5.0b3.dev77 exposes the Flask SECRET_KEY through an unauthenticated endpoint.
Langflow (a visual LLM pipeline builder) contains a critical unauthenticated code execution vulnerability (CVE-2026-3301
In Mercurial before 4.1.3, "hg serve --stdio" allows remote authenticated users to launch the Python debugger, and conse
Unauthenticated remote code execution affects Kestra OSS (the open-source event-driven orchestration platform) prior to
Unauthenticated remote code execution in Marimo ≤0.20.4 allows attackers to execute arbitrary system commands via the `/
pyLoad is the free and open-source Download Manager written in pure Python. Rated medium severity (CVSS 5.3), this vulne
EUVD-2026-92275
GHSA-5557-484j-55xw
NVD
CVE.org
EPSS
Vulnrichment
VulDB
Exploit-DB