Description
Pi is a minimal terminal coding harness. From 0.74.0 until 0.78.1, Pi HTML exports render session Markdown into a static HTML file. It did not consistently reject unsafe Markdown link and image URL schemes. In versions with scheme filtering, C0 control characters in the URL scheme could bypass the check because browsers normalize those characters before navigation. This vulnerability is fixed in 0.78.1.
Published: 2026-06-23
Score: 2.5 Low
EPSS: < 1% Very Low
KEV: No
Impact: n/a
Action: n/a
AI Analysis

Impact

Pi is a minimal terminal coding harness that, from version 0.74.0 through 0.78.0, renders session Markdown into a static HTML file. The exporter does not consistently reject unsafe Markdown link and image URL schemes. In releases that include scheme filtering, a C0 control character embedded in the URL scheme can bypass the check because browsers normalize those characters before navigation, allowing an attacker to embed arbitrary scripts in the HTML export. When a user opens the malicious exported file, the scripts execute in the context of the local browser, resulting in cross‑site scripting. This issue is mitigated in release 0.78.1, which enforces stricter scheme validation.

Affected Systems

Pi versions 0.74.0 through 0.78.0 from the earendil‑works product are affected. The flaw was fixed in release 0.78.1; any installation older than that remains vulnerable.

Risk and Exploitability

The CVSS score of 2.5 indicates low severity, and no EPSS score is available, suggesting a limited likelihood of widespread exploitation. The vulnerability is not listed in CISA KEV. Exploitation requires an attacker to supply a malicious session that contains a crafted URL, export that session to HTML, and a local user to open the resulting file. Thus the risk is local and depends on the use of the HTML export feature.

Generated by OpenCVE AI on June 24, 2026 at 10:09 UTC.

Remediation

No vendor fix or workaround currently provided.

OpenCVE Recommended Actions

  • Upgrade to Pi 0.78.1 or later to apply the upstream fix that addresses this issue.
  • If an upgrade cannot be performed immediately, avoid using the HTML export feature until the system can be updated.
  • Apply an external sanitization step to any exported HTML files to strip or escape Markdown links and images before they are accessed.

Generated by OpenCVE AI on June 24, 2026 at 10:09 UTC.

Tracking

Sign in to view the affected projects.

Advisories
Source ID Title
Github GHSA Github GHSA GHSA-7v5m-pr3q-6453 Pi Agent: Potential XSS in HTML session exports via Markdown URL sanitization bypass
History

Wed, 24 Jun 2026 16:45:00 +0000

Type Values Removed Values Added
First Time appeared Earendil-works
Earendil-works pi
Vendors & Products Earendil-works
Earendil-works pi

Wed, 24 Jun 2026 13:30:00 +0000

Type Values Removed Values Added
Metrics ssvc

{'options': {'Automatable': 'no', 'Exploitation': 'none', 'Technical Impact': 'partial'}, 'version': '2.0.3'}


Tue, 23 Jun 2026 19:45:00 +0000

Type Values Removed Values Added
Description Pi is a minimal terminal coding harness. From 0.74.0 until 0.78.1, Pi HTML exports render session Markdown into a static HTML file. It did not consistently reject unsafe Markdown link and image URL schemes. In versions with scheme filtering, C0 control characters in the URL scheme could bypass the check because browsers normalize those characters before navigation. This vulnerability is fixed in 0.78.1.
Title Pi: Potential XSS in HTML session exports via Markdown URL sanitization bypass
Weaknesses CWE-79
References
Metrics cvssV3_1

{'score': 2.5, 'vector': 'CVSS:3.1/AV:L/AC:H/PR:N/UI:R/S:U/C:L/I:N/A:N'}


Subscriptions

Earendil-works Pi
cve-icon MITRE

Status: PUBLISHED

Assigner: GitHub_M

Published:

Updated: 2026-06-24T13:09:14.395Z

Reserved: 2026-06-12T18:42:02.224Z

Link: CVE-2026-54326

cve-icon Vulnrichment

Updated: 2026-06-24T13:09:10.311Z

cve-icon NVD

No data.

cve-icon Redhat

No data.

cve-icon OpenCVE Enrichment

Updated: 2026-06-24T16:05:37Z

Weaknesses
  • CWE-79

    Improper Neutralization of Input During Web Page Generation ('Cross-site Scripting')