CVE-2026-45036
Full vulnerability record from the local CVENow database.
Description
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.
View original CVE JSON
{
"id": "CVE-2026-45036",
"sourceIdentifier": "[email protected]",
"published": "2026-05-15T17:16:48.487",
"lastModified": "2026-10-26T14:10:00.130",
"vulnStatus": "Modified",
"cveTags": [],
"descriptions": [
{
"lang": "en",
"value": "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."
},
{
"lang": "es",
"value": "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."
}
],
"affected": [
{
"source": "[email protected]",
"affectedData": [
{
"vendor": "Eugeny",
"product": "tabby",
"versions": [
{
"version": "< 1.0.233",
"status": "affected"
}
]
}
]
}
],
"metrics": {
"cvssMetricV31": [
{
"source": "[email protected]",
"type": "Secondary",
"cvssData": {
"version": "3.1",
"vectorString": "CVSS:3.1/AV:L/AC:H/PR:N/UI:R/S:U/C:H/I:H/A:H",
"baseScore": 7.0,
"baseSeverity": "HIGH",
"attackVector": "LOCAL",
"attackComplexity": "HIGH",
"privilegesRequired": "NONE",
"userInteraction": "REQUIRED",
"scope": "UNCHANGED",
"confidentialityImpact": "HIGH",
"integrityImpact": "HIGH",
"availabilityImpact": "HIGH"
},
"exploitabilityScore": 1.0,
"impactScore": 5.9
},
{
"source": "[email protected]",
"type": "Primary",
"cvssData": {
"version": "3.1",
"vectorString": "CVSS:3.1/AV:L/AC:H/PR:N/UI:R/S:U/C:H/I:H/A:H",
"baseScore": 7.0,
"baseSeverity": "HIGH",
"attackVector": "LOCAL",
"attackComplexity": "HIGH",
"privilegesRequired": "NONE",
"userInteraction": "REQUIRED",
"scope": "UNCHANGED",
"confidentialityImpact": "HIGH",
"integrityImpact": "HIGH",
"availabilityImpact": "HIGH"
},
"exploitabilityScore": 1.0,
"impactScore": 5.9
}
],
"ssvcV203": [
{
"source": "134c704f-9b21-4f2e-91b3-4a467353bcc0",
"ssvcData": {
"timestamp": "2026-05-20T03:55:46.102887Z",
"id": "CVE-2026-45036",
"options": [
{
"exploitation": "none"
},
{
"automatable": "no"
},
{
"technicalImpact": "total"
}
],
"role": "CISA Coordinator",
"version": "2.0.3"
}
}
]
},
"weaknesses": [
{
"source": "[email protected]",
"type": "Secondary",
"description": [
{
"lang": "en",
"value": "CWE-78"
}
]
}
],
"configurations": [
{
"nodes": [
{
"operator": "OR",
"negate": false,
"cpeMatch": [
{
"vulnerable": true,
"criteria": "cpe:2.3:a:tabby:tabby:*:*:*:*:*:*:*:*",
"versionEndExcluding": "1.0.233",
"matchCriteriaId": "E98FEEBA-7742-4164-960E-EAE0E1004A75"
}
]
}
]
}
],
"references": [
{
"url": "https://github.com/Eugeny/tabby/security/advisories/GHSA-qr3x-j8g9-xhf6",
"source": "[email protected]",
"tags": [
"Mitigation",
"Vendor Advisory"
]
}
]
}