Path traversal in praktor Telegram uploads enables prompt injection
Key facts
- Attack vector
- Network
- Privileges required
- None
- User interaction
- None
- Attack complexity
- Low
- Impact type
- —
- Confidentiality · integrity · availability
- Low · High · None
- Fix status
- Fixed
Attack profile from CVSS 3.1 · CNA. Fix status from CNA and GitHub.
Summary
praktor before 0.9.1 (mtzanidakis praktor, Go module github.com/mtzanidakis/praktor) joins the attacker-controlled document filename of Telegram uploads into a destination path without sanitization, and path.Join collapses parent-directory sequences. This path traversal (CWE-22) lets a remote Telegram user who can message the bot write files outside uploads/ in the persistent agent workspace. With allow_from set to an empty list, no authentication is needed, and planted or overwritten CLAUDE.md or instruction files then steer the Claude agent in later runs.
Written with Claude Haiku 5.5 from the sources below · 2026-11-03
Description from the CNA
praktor is a multi-agent Claude Code orchestrator with Telegram input and output, Docker isolation, and a Mission Control UI. Prior to 0.9.1, both Telegram upload sites in `internal/telegram/bot.go` concatenate the attacker-controlled document filename into a destination path without sanitization, and `path.Join` collapses parent-directory traversal. A remote Telegram user who can message the bot can therefore write outside `uploads/` within the persistent agent workspace mounted at `/workspace/agent`. Because `allow_from: []` permits all senders by default, no prior authentication or privilege is required in that configuration. The attacker can plant or overwrite `CLAUDE.md`, instruction, skill, hook, or configuration files that the Claude agent reads and operates on across later runs, turning a document upload into stored instruction injection. The demonstrated arbitrary-write scope is the persistent agent workspace volume, not an unrestricted host-filesystem write. This issue is fixed in version 0.9.1.
Why it matters now
SSVC decision points
CISA ADP · SSVC 2.0.3
- Exploitation
- None
- Automatable
- Yes
- Technical impact
- Partial
The decision (Track, Attend, Act) also depends on your mission and well-being impact; see CISA's SSVC guide.
Affected products
| Vendor | Product | Affected versions | Fixed in | Status | Source |
|---|---|---|---|---|---|
| mtzanidakis | praktor | before 0.9.1 | 0.9.1 | Patch available | CNA |
| — | github.com/mtzanidakis/praktor (Go) | before 0.9.1 | 0.9.1 | Patch available | GHSA-48v2-6jcm-fc99 |
- praktor Vendormtzanidakis Affected before 0.9.1 Fixed in 0.9.1 Patch available CNA
- github.com/mtzanidakis/praktor (Go) Vendor— Affected before 0.9.1 Fixed in 0.9.1 Patch available GHSA-48v2-6jcm-fc99
Remediation
Upgrade praktor to version 0.9.1, which fixes this issue for both the mtzanidakis praktor product and the Go module github.com/mtzanidakis/praktor.
Written with Claude Haiku 5.5 from the sources below · 2026-11-03
- Fix · CNA praktor (mtzanidakis) Fixed in 0.9.1
- Fix · GHSA-48v2-6jcm-fc99 github.com/mtzanidakis/praktor (Go) Fixed in 0.9.1 Advisory →
Timeline
- 2026-10-30 Threatist record created from CVE-2026-62331
- 2026-10-30 CISA SSVC decision points changed
- 2026-10-30 Priority changed: MEDIUM → LOW
- 2026-11-01 Priority changed: LOW → MEDIUM
- 2026-11-03 Alias added: GHSA-48v2-6jcm-fc99
- 2026-11-03 Fix available: Go/github.com/mtzanidakis/[email protected] · GHSA-48v2-6jcm-fc99
- 2026-11-03 CVSS score added · GHSA-48v2-6jcm-fc99
- 2026-11-03 Weakness changed · GHSA-48v2-6jcm-fc99
- 2026-11-03 6 new references · GHSA-48v2-6jcm-fc99
References
Other 5
- https://github.com/mtzanidakis/praktor/security/advisories/GHSA-48v2-6jcm-fc99
- https://github.com/mtzanidakis/praktor/pull/228
- https://github.com/mtzanidakis/praktor/commit/c3731eeda01c0b3ec1dbd13cccd5a147c3182141
- https://github.com/mtzanidakis/praktor/releases/tag/v0.9.1
- https://github.com/mtzanidakis/praktor
Sources
- CVE-2026-62331 · CVE Program
- CVE-2026-62331 · NVD
- FIRST EPSS
- GHSA-48v2-6jcm-fc99 · GitHub Advisory Database · CC BY 4.0
This product uses the NVD API but is not endorsed or certified by the NVD. Sources and licences