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.
Tabby terminal emulator versions before 1.0.233 contain a critical command injection vulnerability in ZMODEM protocol handling that automatically confirms file transfers without user interaction. When users display attacker-controlled content (e.g., via cat command), malicious ZMODEM headers trigger automatic shell command execution with no additional user action required. This vulnerability is particularly dangerous in development environments where developers frequently view untrusted files from repositories or shared sources.
IMMEDIATE ACTIONS:
1. Upgrade Tabby to version 1.0.233 or later immediately when available
2. Until patch is available, disable ZMODEM protocol support in Tabby configuration or use alternative terminal emulators (GNOME Terminal, Konsole, iTerm2)
3. Educate users to avoid displaying untrusted file content directly in Tabby terminal
4. Implement file review procedures before cloning or displaying repository contents
COMPENSATING CONTROLS (if upgrade delayed):
5. Restrict Tabby usage to trusted internal networks only
6. Implement application whitelisting to prevent execution of unexpected binaries
7. Use shell configuration to disable recursive glob expansion: set -o noglob in bash/zsh, or disable glob expansion in fish
8. Monitor for suspicious ZMODEM protocol activity in terminal logs
9. Implement file integrity monitoring on development directories
DETECTION RULES:
10. Monitor for ZMODEM ZRQINIT headers (0x18B01) in terminal session logs
11. Alert on unexpected command execution following file display operations
12. Track execution of binaries from nested relative paths without PATH resolution
13. Monitor for OSC 10 color-query sequences in terminal output
الإجراءات الفورية:
1. قم بترقية Tabby إلى الإصدار 1.0.233 أو أحدث فوراً عند توفره
2. حتى يتوفر التصحيح، قم بتعطيل دعم بروتوكول ZMODEM في إعدادات Tabby أو استخدم محاكيات طرفية بديلة
3. قم بتثقيف المستخدمين لتجنب عرض محتوى الملفات غير الموثوقة مباشرة في طرفية Tabby
4. تنفيذ إجراءات مراجعة الملفات قبل استنساخ أو عرض محتويات المستودع
الضوابط التعويضية (إذا تأخر التحديث):
5. تقييد استخدام Tabby للشبكات الداخلية الموثوقة فقط
6. تنفيذ قائمة بيضاء للتطبيقات لمنع تنفيذ الملفات الثنائية غير المتوقعة
7. استخدام إعدادات shell لتعطيل التوسع العام العودي
8. مراقبة نشاط بروتوكول ZMODEM المريب في سجلات الطرفية
9. تنفيذ مراقبة سلامة الملفات في أدلة التطوير
قواعد الكشف:
10. مراقبة رؤوس ZMODEM ZRQINIT في سجلات جلسات الطرفية
11. تنبيه عند تنفيذ أوامر غير متوقعة بعد عمليات عرض الملفات
12. تتبع تنفيذ الملفات الثنائية من مسارات نسبية متداخلة
13. مراقبة تسلسلات استعلام اللون OSC 10 في مخرجات الطرفية