CVE-2026-39847
Python vulnerability analysis and mitigation

Overview

CVE-2026-39847 is a path traversal vulnerability in the RSGI static handler of Emmett, a full-stack Python web framework. The flaw affects Emmett versions 2.5.0 through 2.8.0, allowing unauthenticated remote attackers to read arbitrary files outside the intended assets directory by crafting requests with ../ sequences targeting the /__emmett__ path prefix. The vulnerability was published on April 7, 2026, and a fix was released in version 2.8.1. The CVSS v3.1 base score is 7.5 (High) per the GitHub Advisory Database, and 9.1 (Critical) per the vendor's own advisory, reflecting differing assessments of availability impact (GitHub Advisory, Emmett Advisory).

Technical details

The root cause is CWE-22 (Improper Limitation of a Pathname to a Restricted Directory), where the RSGI static file handler serving Emmett's internal assets under /__emmett__ fails to properly sanitize or canonicalize user-supplied path components before resolving them on the filesystem (GitHub Advisory). An attacker can craft an HTTP GET request such as GET /__emmett__/../rsgi/handlers.py to traverse outside the restricted assets directory and read arbitrary files accessible to the web server process. No authentication, special privileges, or user interaction is required, making this trivially exploitable over the network (Emmett Advisory).

Impact

Successful exploitation allows an unauthenticated attacker to read arbitrary files from the server's filesystem, limited only by the permissions of the process running Emmett. This can lead to disclosure of sensitive data including application source code, configuration files containing credentials, environment variables, and private keys. The vendor advisory also notes a potential availability impact, suggesting the possibility of service disruption in addition to confidentiality loss (Emmett Advisory, GitHub Advisory).

Exploitability

No public proof-of-concept exploit code or evidence of in-the-wild exploitation has been reported as of the time of this report (GitHub Advisory). The EPSS score is approximately 0.019% (6th percentile), indicating a low near-term probability of exploitation. The vulnerability is not listed in the CISA Known Exploited Vulnerabilities (KEV) catalog. Despite the low EPSS, the trivial exploitation mechanics — no authentication, no user interaction, network-accessible — make it a meaningful risk for any exposed Emmett deployment running an affected version.

Exploitation steps

  1. Reconnaissance: Identify internet-facing web applications built on the Emmett framework (versions 2.5.0–2.8.0) using HTTP fingerprinting, Shodan, or Censys searches for Emmett-specific response headers or the /__emmett__ path.
  2. Probe the vulnerable endpoint: Send a baseline request to /__emmett__/ to confirm the static handler is active and responding.
  3. Craft path traversal payload: Construct an HTTP GET request using ../ sequences to escape the assets directory, for example: GET /__emmett__/../rsgi/handlers.py HTTP/1.1.
  4. Target sensitive files: Iterate over common sensitive file paths relative to the application root, such as configuration files (e.g., /__emmett__/../../.env, /__emmett__/../../config.py), source code files, or system files like /etc/passwd depending on traversal depth.
  5. Exfiltrate data: Collect returned file contents from HTTP responses to extract credentials, API keys, database connection strings, or other sensitive information for further exploitation or lateral movement (Emmett Advisory).

Indicators of compromise

  • Network: Unusual HTTP GET requests to paths beginning with /__emmett__/ that contain ../ sequences or URL-encoded equivalents (%2e%2e%2f, %2e%2e/, .%2e/); repeated requests to /__emmett__ paths from a single source IP probing different file paths.
  • Logs: Web server or application access logs showing requests such as GET /__emmett__/../<filename> returning HTTP 200 responses with unexpected content types; high volume of 404 or 200 responses from the /__emmett__ handler for non-asset paths.
  • File System: No direct file system artifacts are expected from read-only path traversal exploitation; however, if chained with other vulnerabilities, look for new or modified files in the application directory.
  • Process: No unusual child processes expected from a pure file-read exploit; monitor for follow-on activity such as credential reuse or unauthorized access to databases or external services after potential credential disclosure (Emmett Advisory).

Mitigation and workarounds

The primary remediation is to upgrade Emmett to version 2.8.1 or later, which contains the fix for this path traversal vulnerability (Emmett Advisory, GitHub Advisory). If immediate patching is not feasible, organizations should restrict external access to the /__emmett__ endpoint via a reverse proxy or WAF rule that blocks requests containing ../ sequences or their URL-encoded variants. Additionally, monitor application and web server logs for path traversal patterns targeting the /__emmett__ handler as a detection measure until patching is complete.

Community reactions

The vulnerability was covered by The Hacker Wire in a dedicated write-up shortly after disclosure, and was indexed by multiple vulnerability tracking platforms including VulDB, CVEFeed, and ENISA's EUVD (The Hacker Wire). No significant broader media coverage or notable researcher commentary beyond standard vulnerability reporting has been identified. Community reaction appears muted, consistent with the low EPSS score and absence of public exploit code.

Additional resources


SourceThis report was generated using AI

Related Python vulnerabilities:

CVE ID

Severity

Score

Technologies

Component name

CISA KEV exploit

Has fix

Published date

CVE-2026-84366HIGH7.4
  • Python logoPython
  • python3.7
NoYesSep 01, 2026
GHSA-8423-8fgw-73vqMEDIUM6.9
  • Python logoPython
  • tornado
NoYesSep 01, 2026
CVE-2026-84311MEDIUM4.8
  • Python logoPython
  • pypdf2
NoYesSep 01, 2026
CVE-2026-84310MEDIUM4.8
  • Python logoPython
  • pypdf
NoYesSep 01, 2026
GHSA-wwv5-g3v4-889xLOW2.3
  • Python logoPython
  • tornado
NoYesSep 01, 2026

Free Vulnerability Assessment

Benchmark your Cloud Security Posture

Evaluate your cloud security practices across 9 security domains to benchmark your risk level and identify gaps in your defenses.

Request assessment

Get a personalized demo

Ready to see Wiz in action?

"Best User Experience I have ever seen, provides full visibility to cloud workloads."
David EstlickCISO
"Wiz provides a single pane of glass to see what is going on in our cloud environments."
Adam FletcherChief Security Officer
"We know that if Wiz identifies something as critical, it actually is."
Greg PoniatowskiHead of Threat and Vulnerability Management