| Title | TabbyにおけるOS コマンドインジェクションの脆弱性 |
|---|---|
| Summary | Tabby(旧称Terminus)は非常に高度に設定可能なターミナルエミュレーターです。1.0.233以前のバージョンでは、すべてのターミナルセッション出力に対するZMODEMプロトコルの検出がユーザーの操作なしに自動的に実行されており、攻撃者が操作するコンテンツをユーザーが表示した際にシェルコマンドを実行できる状態でした。tabby-terminalのZModemMiddlewareは、Zmodem.Sentryを通じてすべてのセッション出力を処理し、ZMODEMのZRQINITヘッダーを検出すると、無条件にdetection.confirm()を呼び出して固定のZRINIT応答(**\x18B0100000023be50\r\n\x11)をアクティブなPTYに入力として書き込みます。検出を引き起こしたプロセス(例:cat)が終了すると、注入されたバイトはユーザーのシェルによってコマンドラインとして解釈されます。fishシェル(デフォルト構成)では、**プレフィックスがカレントディレクトリに対する再帰的なグロブ展開を引き起こし、攻撃者が配置した実行可能ファイル(例:d/xB0100000023be50)をPATHを介さずに相対パス名で実行可能にします。bashやzshでは、二次的なxterm.jsの端末カラー問い合わせフィードバック(OSC 10)を同一ファイル内で併用することで、スラッシュを含むコマンド語の注入が可能となり、これもPATH解決を迂回します。攻撃者は、クローンしたGitリポジトリなどに細工したファイルを提供し、ユーザーがcatで表示するだけでコード実行を達成できるため、操作はファイル閲覧のみで済みます。この脆弱性は1.0.233で修正されました。 |
| Possible impacts | 当該ソフトウェアが扱う全ての情報が外部に漏れる可能性があります。 また、当該ソフトウェアが扱う全ての情報が書き換えられる可能性があります。 さらに、当該ソフトウェアが完全に停止する可能性があります。 そして、この脆弱性を悪用した攻撃の影響は、他のソフトウェアには及びません。 |
| Solution | 正式な対策が公開されています。ベンダ情報を参照して適切な対策を実施してください。 |
| Publication Date | May 15, 2026, midnight |
| Registration Date | May 21, 2026, 10:55 a.m. |
| Last Update | May 21, 2026, 10:55 a.m. |
| CVSS3.0 : 重要 | |
| Score | 7 |
|---|---|
| Vector | CVSS:3.0/AV:L/AC:H/PR:N/UI:R/S:U/C:H/I:H/A:H |
| Tabby |
| Tabby 1.0.233 未満 |
| No | Changed Details | Date of change |
|---|---|---|
| 1 | [2026年05月21日] 掲載 |
May 21, 2026, 10:55 a.m. |
| Summary | 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. |
|---|---|
| Publication Date | May 16, 2026, 2:16 a.m. |
| Registration Date | May 17, 2026, 4:12 a.m. |
| Last Update | May 21, 2026, 2:16 a.m. |
| Configuration1 | or higher | or less | more than | less than | |
| cpe:2.3:a:tabby:tabby:*:*:*:*:*:*:*:* | 1.0.233 | ||||