iTerm2 critical security release
Nature of the vulnerability
- Bug in iTerm2’s SSH integration caused all stdin/stdout of affected SSH sessions to be written to
/tmp/framer.txton the remote host. - Trigger conditions (per release notes discussed):
- Use of the SSH integration (
it2sshor profile set to “SSH” with “SSH Integration” enabled). - Remote host with Python ≥ 3.7 in PATH.
- Use of the SSH integration (
- Logging was gated by a “verbose” flag that was accidentally shipped enabled; code appears to have started as debugging/verbose logging that wasn’t disabled before release.
- File was world-readable, so any user on the same remote machine could potentially read another user’s recorded session.
Impact and risk assessment
- Many commenters note the feature is obscure and rarely used, significantly limiting exposure.
- Several admin-type commenters say they found no
/tmp/framer.txton their servers despite matching the Python condition. - Debate on severity:
- Some argue you should assume compromise of anything typed, including sudo passwords, and at least clean up
/tmpand possibly rotate sensitive credentials. - Others note SSH keys themselves are not transmitted this way and see no direct vector for gaining new SSH access, only exposure of whatever was visible/typed in the session.
- Some argue you should assume compromise of anything typed, including sudo passwords, and at least clean up
iTerm2 security track record & trust
- Thread surfaces prior issues: DNS lookups for hovered text, title-escape vulnerabilities, and search-history leakage into prefs.
- One side: pattern of “unique and serious” bugs, plus feature creep (SSH, tmux, AI integration) makes iTerm2 feel bloated and risky.
- Other side: across 10+ years and a huge user base, only a handful of serious issues; fixes are fast and transparent; for a largely single‑maintainer FOSS app this is seen as acceptable and even impressive.
- Several people explicitly continue to trust and donate to the project; others say they’re now “done” and will switch.
Alternatives and feature trade-offs
- Alternatives discussed: Ghostty, Kitty, WezTerm, Alacritty, Warp, stock Terminal.app, XQuartz/xterm, Windows Terminal, tmux/screen/zellij.
- Ghostty gets a lot of attention: praised for speed and minimalism, but missing features (search, tabs in quake mode, some font issues) and has already had at least one terminal-escape vuln.
- Terminal.app is praised for simplicity and lower attack surface, but lacks 24‑bit color and some power features.
- Many specific iTerm2 features are cited as “must‑have”: tmux control mode, quake-style drop-down, advanced split panes, triggers, graphics, automatic profile switching, copy-on-select, soft-boundary selection, etc.
Process and lessons discussed
- Suggestions: use config/env flags instead of hardcoded verbose settings, pre-commit/CI checks for debug artifacts, better naming of risky flags, “NOCOMMIT” markers, code review, fuzzing, and OS-level mitigations (e.g., avoiding shared
/tmp). - Some emphasize that all complex software has bugs; others argue that for terminals (handling sensitive, untrusted text) extra rigor and minimalism are warranted.