Tracecat: The Expression Editor Puts Stored Text into the Tooltip as HTML

The expression editor's tooltip built its content as markup rather than text, turning stored expression text into script.

Advisory ID: TP-2026-091
Product: Tracecat (automation platform for security teams, Python and React)
Vulnerability type: Stored cross-site scripting (CWE-79)
CVE: requested (GitHub CNA), assignment pending
CVSS 3.1: 7.3 (High) · CVSS:3.1/AV:N/AC:L/PR:L/UI:R/S:U/C:H/I:H/A:N
Affected versions: >= 0.37.0, < 1.0.0-beta.51-rc.14
Vendor advisory: GHSA-44g6-p5rh-fj3v
Fixed in: 1.0.0-beta.51-rc.14
Reported: 3 June 2026

Summary

Tracecat automates workflows for security teams, and those workflows contain expressions that refer to the results of earlier steps. When a user hovers over such an expression in the editor, a tooltip shows the matching text. The helpers that built that tooltip inserted the token-derived text into the DOM as markup rather than as a text node. A member with edit rights therefore stores content that runs as script in another member's browser as soon as that person opens the workflow and touches the expression. In a workspace with several members this amounts to privilege escalation to the authority of the viewer.

Root cause

The expression editor's tooltip helpers inserted the token-derived text as HTML instead of setting it as text content, which made the browser parse stored expression text as markup. The fix now constructs the tooltip elements from text nodes, so the same content is only displayed and no longer interpreted. Affected are versions from 0.37.0 up to but excluding 1.0.0-beta.51-rc.14, in installations where several members of a workspace edit and review the same workflows. The vendor advisory names no file and line, so none is given here. A single-member installation, and a workflow nobody else opens, are not affected by the escalation.

Proof of Concept

# as a member with edit rights in the workspace:
# save an action whose expression field carries crafted text,
# for instance a token name containing markup.

# victim: opens the same workflow in the editor and hovers
# over the token -> the tooltip builds the text as HTML, the script runs
# in the application's origin with the viewer's authority.

The attack needs two parties: someone with write access to the workflow and a second member who looks at it. That is precisely the usual review flow in a shared workspace.

Impact

  • Script execution in the application's origin with the authority of the viewing member.
  • Privilege escalation from an editor to a higher-privileged member who reviews the same workflow.
  • Authenticated actions in the victim's name, as far as their role permits them.
  • No impact on availability, which was not established.

References

Is Something Like This in Your Software?

Our team found this vulnerability in the course of its work. Have your applications tested by the same specialists, with a penetration test from turingpoint.