Skip to main content

rtk CVE-2026-54555

| EUVDEUVD-2026-38573 HIGH
Incorrect Authorization (CWE-863)
2026-06-23 GitHub_M
7.8
CVSS 3.1 · Vendor: GitHub_M
Share

Severity by source

Vendor (GitHub_M) PRIMARY
7.8 HIGH
AV:L/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H
vuln.today AI
7.8 HIGH

Local hook on the developer host (AV:L); attacker is unprivileged injected content (PR:N) but needs the user to approve the Claude action (UI:R); arbitrary command execution yields C/I/A:H.

3.1 AV:L/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H
4.0 AV:L/AC:L/AT:N/PR:N/UI:A/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N

Primary rating from Vendor (GitHub_M).

CVSS VectorVendor: GitHub_M

Attack Vector
Local
Attack Complexity
Low
Privileges Required
None
User Interaction
Required
Scope
Unchanged
Confidentiality
High
Integrity
High
Availability
High

Lifecycle Timeline

2
Patch available
Jun 23, 2026 - 21:02 EUVD
Analysis Generated
Jun 23, 2026 - 20:16 vuln.today

DescriptionCVE.org

rtk filters and compresses command outputs before they reach your LLM context. Prior to 0.42.2, the permission splitter did not conservatively split or reject several shell constructs that Bash treats as command execution boundaries or nested execution. As a result, a command beginning with an allowed prefix such as git could hide a second command behind one of these constructs. rtk rewrite returned exit code 0, causing the Claude hook to emit permissionDecision: "allow". The rewritten command still contained the hidden command, so it ran without the user confirmation or denial that the permission rules were intended to enforce. This vulnerability is fixed in 0.42.2.

AnalysisAI

Authorization bypass in rtk (rtk-ai) prior to 0.42.2 allows hidden command execution to slip past the permission splitter that gates the Claude Code permission hook. Because the splitter fails to handle Bash command-execution boundary constructs (such as command substitution and chained operators) inside an allowlisted prefix like git, rtk rewrite returns exit code 0 and the hook emits permissionDecision: "allow", causing the secondary command to execute without the user confirmation the policy was supposed to require. No public exploit identified at time of analysis and the issue is not in CISA KEV.

Technical ContextAI

rtk is a command output filter/compressor used as a Claude Code permission hook: it parses shell commands before they execute, validates them against an allowlist, and returns a permissionDecision to the Claude harness. The vulnerable component is the permission splitter, which decomposes a candidate shell command into primitive commands so each can be checked against allowed prefixes. The root cause is CWE-863 (Incorrect Authorization): the splitter does not conservatively split or reject several Bash constructs that act as execution boundaries or nested execution - for example command substitution ($(...) / backticks), process substitution, pipelines, and conjunction operators (&&, ||, ;). Because the first token still matches an allowed prefix such as git, the splitter accepts the whole string and never evaluates the hidden secondary command. CPE cpe:2.3:a:rtk-ai:rtk:*:*:*:*:*:*:*:* indicates a single affected package family from the rtk-ai project.

RemediationAI

Vendor-released patch: upgrade rtk to 0.42.2 or later, which hardens the permission splitter to conservatively reject or split on Bash command-execution boundary constructs; details are in advisory GHSA-7gxq-fvfc-g327 (https://github.com/rtk-ai/rtk/security/advisories/GHSA-7gxq-fvfc-g327). Until the upgrade lands, tighten the Claude permission hook so rtk's allow decision is not authoritative - either remove rtk from the hook chain and fall back to interactive confirmation for every shell command, or shrink the allowlisted prefixes to commands that cannot meaningfully chain (avoid blanket prefixes like git, npm, sh, bash, env, xargs); the trade-off is more confirmation prompts and lost ergonomics for trusted workflows. As a defensive control, deny any candidate command containing $( , ` , ;, &&, ||, |, > (when not strictly required), or process-substitution <(...) before rtk sees it, accepting that this will reject some legitimate one-liners.

Share

CVE-2026-54555 vulnerability details – vuln.today

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy