CVE-2026-45036

Tabby (formerly Terminus) is a highly configurable terminal emulator. Prior to 1.0.233, Tabby before 1.0.233 automatically confirms ZMODEM protocol detection on all terminal session output without user interaction, enabling shell command execution when a user displays attacker-controlled content. The ZModemMiddleware in tabby-terminal consumes all session output through a Zmodem.Sentry, and when a ZMODEM ZRQINIT header is detected, unconditionally calls detection.confirm() and writes a fixed ZRINIT response ( **\x18B0100000023be50\r\n\x11) back into the active PTY as input. When the process that triggered the detection (e.g., cat) exits, the injected bytes are consumed by the user's shell as a command line. Under fish (default configuration), the ** prefix triggers recursive glob expansion against the current directory, allowing an attacker-placed executable at a matching nested path (e.g., d/xB0100000023be50) to be executed by relative pathname without relying on PATH. Under bash and zsh, a secondary xterm.js terminal color-query feedback (OSC 10) can be combined in the same file to inject a slash-containing command word that similarly bypasses PATH resolution. An attacker can exploit this by providing a crafted file (e.g., in a cloned Git repository) that a user displays with cat, achieving code execution with no interaction beyond viewing the file. This vulnerability is fixed in 1.0.233.
References
Configurations

Configuration 1 (hide)

cpe:2.3:a:tabby:tabby:*:*:*:*:*:*:*:*

History

26 Oct 2026, 14:10

Type Values Removed Values Added
Summary
  • (es) Tabby (anteriormente Terminus) es un emulador de terminal altamente configurable. Antes de la versión 1.0.233, Tabby anterior a la versión 1.0.233 confirma automáticamente la detección del protocolo ZMODEM en toda la salida de la sesión de terminal sin interacción del usuario, permitiendo la ejecución de comandos de shell cuando un usuario muestra contenido controlado por el atacante. El ZModemMiddleware en tabby-terminal consume toda la salida de la sesión a través de un Zmodem.Sentry, y cuando se detecta una cabecera ZMODEM ZRQINIT, llama incondicionalmente a detection.confirm() y escribe una respuesta ZRINIT fija ( \x18B0100000023be50\r\n\x11) de vuelta en el PTY activo como entrada. Cuando el proceso que activó la detección (p. ej., cat) finaliza, los bytes inyectados son consumidos por el shell del usuario como una línea de comandos. Bajo fish (configuración predeterminada), el prefijo activa la expansión recursiva de glob contra el directorio actual, permitiendo que un ejecutable colocado por un atacante en una ruta anidada coincidente (p. ej., d/xB0100000023be50) sea ejecutado por nombre de ruta relativo sin depender de PATH. Bajo bash y zsh, una retroalimentación secundaria de consulta de color de terminal xterm.js (OSC 10) puede combinarse en el mismo archivo para inyectar una palabra de comando que contenga una barra que de manera similar omite la resolución de PATH. Un atacante puede explotar esto proporcionando un archivo manipulado (p. ej., en un repositorio Git clonado) que un usuario muestra con cat, logrando la ejecución de código sin interacción más allá de ver el archivo. Esta vulnerabilidad está corregida en la versión 1.0.233.

Information

Published : 2026-05-15 17:16

Updated : 2026-10-26 14:10


NVD link : CVE-2026-45036

Mitre link : CVE-2026-45036

CVE.ORG link : CVE-2026-45036


JSON object : View

Products Affected

tabby

  • tabby
CWE
CWE-78

Improper Neutralization of Special Elements used in an OS Command ('OS Command Injection')