- iTerm2 3.5.11 ist ein am 2. Januar 2025 gebautes Release; wegen eines wichtigen Sicherheitsfixes im Zusammenhang mit der SSH-Integration wird ein sofortiges Update empfohlen
- Betroffen sind Nutzer der Versionen 3.5.6 bis 3.5.10 mit aktivierter SSH-Integration sowie Nutzer aller Beta-Versionen nach 3.5.6
- Tritt der Bug auf, werden Eingaben und Ausgaben auf dem Remote-Host in /tmp/framer.txt protokolliert; andere Nutzer desselben Remote-Hosts können diese Datei lesen
- Voraussetzung ist die Nutzung von
it2sshoder ein Profil, in dem Command auf"SSH"gesetzt und"SSH Integration"ausgewählt ist; außerdem muss im Standardsuchpfad des Remote-Hosts Python 3.7 oder höher vorhanden sein - Nutzer sollten auf 3.5.11 upgraden und anschließend auf betroffenen Remote-Hosts
/tmp/framer.txtlöschen
Betroffene Versionen und Voraussetzungen
- iTerm2 3.5.11 ist ein Release mit einem wichtigen Sicherheitsfix; ein sofortiges Update wird empfohlen
- Potenziell betroffen sind die folgenden Versionen, wenn die SSH-Integration genutzt wird
- 3.5.6
- 3.5.7
- 3.5.8
- 3.5.9
- 3.5.10
- alle Beta-Versionen nach 3.5.6
- Der Bug führt dazu, dass die SSH-Integration Eingaben und Ausgaben auf dem Remote-Host in
/tmp/framer.txtschreibt- Diese Datei kann möglicherweise von anderen Nutzern des Remote-Hosts gelesen werden
- Das Problem tritt auf, wenn alle folgenden Bedingungen erfüllt sind
- Der Befehl
it2sshwird verwendet - Oder in
Settings > Profiles > Generalist das Command-Popup-Menü auf"SSH"gesetzt und im SSH-Einstellungsdialog ist"SSH Integration"ausgewählt- Die Einstellungen
"Login Shell","Command"und"Custom Command"fallen nicht unter diese Bedingung
- Die Einstellungen
- Im Standardsuchpfad des Remote-Hosts ist Python 3.7 oder höher installiert
- Der Befehl
Update und Verifizierung
- Nutzer sollten umgehend auf iTerm2 3.5.11 upgraden
- Auf betroffenen Remote-Hosts sollte die Datei
/tmp/framer.txtgelöscht werden - Der Code, der in der SSH-Integration Logdateien schreibt, wurde entfernt und soll nicht erneut in einem öffentlichen Release erscheinen
- Der SHA-256-Wert der ZIP-Datei lautet wie folgt
655e32b4a9466104f1b0d8847e852515bc332bdf434801762e01b9625caa43e2
- Zur Verifizierung der ZIP-Datei kann
https://keybase.io/verifyverwendet werden
2 Kommentare
Als ich es gerade überprüft habe, ist meine Version 3.4.3. Ich nutze den Terminal in letzter Zeit kaum noch, deshalb habe ich auch nicht wirklich darauf geachtet und die Updates werden deshalb kaum eingespielt.
Meinungen auf Hacker News
Sieht aus wie ein Fall von print()-Debugging in der Produktion
https://github.com/gnachman/iTerm2/commit/63ec2bb0b95078a97a...
https://github.com/gnachman/iTerm2/blame/5db0f74bf647f6d53ea...
Der Commit, der den verbose mode deaktiviert hat, ist dieser hier, unmittelbar bevor das gesamte framer-Log entfernt wurde: https://github.com/gnachman/iTerm2/commit/014ba7ec40fc790f65...
Der Commit, der den VERBOSE-Modus aktiviert hat, ist dieser hier: https://github.com/gnachman/iTerm2/commit/5db0f74bf647f6d53e...
Vermutlich wurde während der Implementierung oder beim Debugging auf
VERBOSE=1umgestellt und vor dem Commit vergessen, es wieder aufVERBOSE=0zurückzusetzenconsole.infoPrint-Debugging an sich ist in Ordnung und hat seine Berechtigung, aber es ist gut, Schutzmechanismen zu haben, damit man es nicht versehentlich drinlässt. Das ist ein wirklich leicht zu machender Fehler
Dass wegen eines Bugs in der Funktion
SSH integrationEin- und Ausgabe in die Datei/tmp/framer.txtauf dem Remote-Host geschrieben wurden und diese Datei von anderen Nutzern des Remote-Hosts gelesen werden konnte, ist ziemlich gravierendSolche Dateien könnten auch auf Maschinen zurückgeblieben sein, auf die man früher per SSH zugegriffen hat, auf die man inzwischen aber keine Zugriffsrechte mehr hat
it2sshverwendet, oder im Menü Settings > Profiles > General war im Command-Popup-Menü"SSH"eingestellt und"SSH Integration"aktiviert."Login Shell","Command"und"Custom Command"sind nicht betroffenWer allerdings statt
bashoderzshsshals Standard-Terminalbefehl verwendet, nutzt wahrscheinlich auch in anderen Apps viele ungewöhnliche Funktionen und sollte deshalb nicht nur bei iTerm, sondern auch bei anderen Angriffsflächen aufmerksam seinIch habe iTerm2 lange sowohl beruflich als auch privat gern genutzt, werde es weiterhin nutzen und habe vor, wie früher wieder zu spenden
Wenn ich Sätze lese wie „Ich bedauere diesen Fehler zutiefst und werde Maßnahmen ergreifen, damit so etwas nie wieder passiert“, muss ich immer ein bisschen seufzen
Entscheidend ist, welche Maßnahmen gemeint sind, aber ich weiß auch nicht recht, was man tun müsste, um zu verhindern, dass so etwas wieder passiert. Man könnte vielleicht ein automatisiertes Tool bauen, das alle Funktionen ausführt, System Calls mitschneidet und prüft, ob Dateien geöffnet oder beschrieben werden; bei einer GUI-App wirkt das aber so schwierig, dass man es vermutlich gar nicht erst versuchen würde. Mit weniger weitreichenden Maßnahmen fühlt es sich schwer an, zu garantieren, dass es nicht wieder vorkommt
Realistisch betrachtet ist es schwer vorstellbar, dass ein Programmierer sehr viel besser sein kann als das; deshalb ist es unfair, dieser einen Person die gesamte Verantwortung aufzubürden
Ich denke aber nicht, dass die Kürze bedeutet, dass er das Ausmaß des Fehlers nicht versteht. Trotzdem würde ich erwarten, dass später noch ein ausführlicher Blogbeitrag mit solchen nachgelagerten Details erscheint
Sich nicht zu entschuldigen wäre schlimmer, und nicht zu sagen, dass man Maßnahmen gegen eine Wiederholung ergreifen wird, wäre ebenfalls schlimmer. Wenn jetzt schon alle Maßnahmen fertig wären, wäre das eher merkwürdig. Zuerst sollte man A) den Bug beheben, B) den Fix ausliefern, C) über den Bug und die Auslieferung des Fixes informieren und D) eine Postmortem-Analyse durchführen; vermischt man das alles, wirkt es wie ein prozessual unsauberer Ansatz
Es wäre auch merkwürdig zu behaupten, man könne alle Bugs oder jedes unbeabsichtigte Schreiben von Dateien verhindern. Zu beweisen, dass niemals in Dateien geschrieben wird, ist unmöglich
Ein guter Ausgangspunkt ist, wie offenbar tatsächlich geschehen, das SSH-Logging zu entfernen und automatisierte Methoden zu untersuchen, um Dateizugriffe zu verifizieren. In der macOS-Entwicklung gibt es viele Werkzeuge, die dem allgemeinen Ökosystem weit voraus sind; vielleicht gibt es etwa Methoden wie technische Dokumentation aus den 1990ern, in der man ein
NSArrayerlaubter Zugriffspfade angibt, oder die eingebaute dtrace-Integration in Instruments. Wenn man das in CI ausführt und Testabdeckung sicherstellt, kommt man dem Bestmöglichen naheDer Knackpunkt scheint zu sein, ob man „Ich werde Maßnahmen ergreifen, damit so etwas nie wieder passiert“ als „Ich werde so lange Maßnahmen ergreifen, bis ich absolut, zu 100 % und für immer garantieren kann, dass es nie wieder passiert“ liest. An junge und leicht beeinflussbare Menschen gerichtet: Dieser Blogbeitrag ist hervorragend, und viel besser kann man es hier kaum machen
Was man tun kann, ist, daraus zu lernen und an dieser Stelle künftig vorsichtiger zu sein
console.loggemergt werden; genau diesen Ansatz würde ich wohl auch wählenZu verhindern, dass ungültige Zustände überhaupt existieren können, ist ein ziemlich nützliches Prinzip
Es ist wohl größtenteils Geschmackssache, aber gibt es 2025 einen wirklich überzeugenden Grund, statt des macOS-Standard-Terminals iTerm2 zu verwenden?
Es wurde mir oft empfohlen, aber wegen Sicherheits- und Privacy-Themen wie diesem SSH-Bug war ich vorsichtig
Ein weiteres ist, dass ein versehentlich geschlossener Tab oder ein Fenster wieder erscheint, als wäre es nie geschlossen worden, wenn man innerhalb weniger Sekunden ⌘z drückt
Außerdem ist der minimale Farbkontrast gut. Wenn sich das Farbschema des Terminals und das Farbschema des laufenden Programms ungünstig mischen und dadurch unlesbar werden, kann iTerm das erkennen und automatisch mit Farben mit höherem Kontrast überschreiben
Allerdings sind das nur meine Kernfunktionen. iTerm ist ein aufgeblähtes Monster mit Tausenden Features, wie Word. Nicht jeder braucht alles, aber es gibt auch keinen Konsens darüber, welche Features nötig sind
Auch in mehreren macOS-Release-Notes habe ich nach
terminalgesucht, aber nichts gefunden. Weiß jemand, wo diese Informationen veröffentlicht werden? Werden sie gar nicht veröffentlicht?[1] https://developer.apple.com/documentation/macos-release-note...
[2] https://support.apple.com/en-us/120283
[3] https://support.apple.com/en-in/109035
[4] https://support.apple.com/en-us/106337
Ich wollte, dass es blau wird, wenn ich per SSH auf die Firmenmaschine gehe, und lila, wenn ich auf die Maschine zu Hause gehe. Ich habe es auch mit dem Standard-Terminal versucht, aber je nachdem, wie die Session beendet wurde, gab es verwirrende Probleme, und Leute empfahlen mir iTerm2, weil es das löse. Zumindest bei mir hat es das tatsächlich gelöst
Über https://ghostty.org/ habe ich auch viel Gutes gehört, es aber noch nicht ausprobiert
Nebenbei: Ich habe die Frage fälschlicherweise als „Welche Alternativen gibt es?“ gelesen
Für mich ist es schon wertvoll, einen anderen Vollbildmodus als den nativen macOS-Vollbildmodus nutzen zu können. Allerdings gibt es weltweit vielleicht nur etwa sieben Leute, denen das wichtig ist
Ich habe großes Mitgefühl mit dem Entwickler, der iTerm mit vergleichsweise wenig Geld entwickelt. Wegen der AI-Integration hat er bereits mehr Kritik abbekommen als nötig
Gleichzeitig mache ich mir jetzt große Sorgen, ob ich iTerm weiterverwenden kann
Wenn man auf HPC-Umgebungen zugreift, hat man unter Umständen nur für kurze Zeit Zugriff, muss die Daten nach der Nutzung selbst bereinigen und erwartet, dass keine Daten abfließen. Wenn ich im vergangenen Jahr mit personenbezogenen Forschungsdaten gearbeitet und dabei die SSH-Integration von iTerm genutzt hätte, wäre das problematisch geworden. Ich hätte vielleicht peinliche E-Mails an Admins schreiben müssen, um zu prüfen, ob es Logs gibt und ob sie von mir stammen, und anschließend öffentlich machen müssen, dass Daten abgeflossen sind
Ich nutze zwar auch einige fortgeschrittene Features, frage mich jetzt aber, ob ich überhaupt mehr als die Grundfunktionen nutzen sollte. Dann könnte ich genauso gut ein anderes Terminal verwenden. Einschließlich Ghostty habe ich noch kein Cross-Platform-Terminal gefunden, das sich unter MacOS so nativ anfühlt wie iTerm
Das ist ein bisschen so, als würde man ein Auto wegwerfen, weil einmal ein Reifen geplatzt ist. Angesichts seiner Vorteile und Features ist iTerm vielleicht weiterhin die beste Wahl
Wenn Einzelpersonen die Sicherheit des gesamten Systems und jeder verwendeten Software selbst überprüfen müssten, dann hätte diese Organisation keine Sicherheit
Ein kompetenter Systemadministrator mit Sicherheitskenntnissen kann leicht dafür sorgen, dass Dateien, die über SSH angelegt werden, nicht standardmäßig für alle lesbar sind. Es lassen sich auch andere Sperren einrichten, um Benutzerdateien vollständig zu isolieren, und global beschreibbare Ordner wie
/tmp/können sogar ganz deaktiviert werdenWenn jemand einem vorwirft, unsichere Software benutzt zu haben, sollte man zurückfragen, warum deren System so sicherheitsanfällig ist
Vor einigen Jahren habe ich ein Problem gemeldet, bei dem iTerm2 sensible Suchverläufe in die Konfigurationsdatei leakte, und dieses Problem wurde schnell behoben
Aber auch heute findet man noch Leute, die in öffentlichen dotfiles-Repositories ihren Suchverlauf unbeabsichtigt offenlegen
[1]: https://gitlab.com/gnachman/iterm2/-/issues/8491
[2]: https://github.com/search?q=NoSyncSearchHistory+path%3A*.pli...
Der Vorschlag „einfach iTerm2 nicht verwenden“ leuchtet mir nicht ganz ein
Probleme dieser Art können in jedem Projekt auftreten, und ein Wechsel des Tools bietet keinen nennenswerten Schutz. Im Gegenteil: Nach solchen Vorfällen werden Sicherheitspraktiken oft eher verschärft. Das erinnert an den alten Witz, ob man den Engineer feuern würde, der einen Fehler gemacht hat, worauf der Manager antwortet: „Warum sollte ich ihn feuern? Er hat gerade eine Lektion gelernt, die er nie vergessen wird.“
Wenn man sich die Historie von iTerm2 ansieht, scheint es nicht so, als hätte es häufig kritische Sicherheitsprobleme gegeben, und es wirkt auch nicht wahrscheinlich, dass derselbe Fehler wiederholt wird. Falls doch, kann man es dann neu bewerten
Die macOS-App Terminal ist einfacher und wird seltener aktualisiert, was wie ein geringeres Risiko wirken kann. Aber sie ist Closed Source, lässt sich also nicht auditieren, und das bringt eigene Risiken mit sich. Am Ende hat jedes Tool Trade-offs, und man sollte anhand der Balance zwischen benötigten Funktionen und potenziellen Risiken wählen
Viele Menschen halten beides für vernünftige Annahmen. Das ist eine deutlich nuanciertere Sicht als „jedes Projekt kann Bugs haben“. Eine solche Schwarz-Weiß-Sicht hilft bei der Risikobewertung kaum weiter
iTerm2 ist zunehmend zu komplex und aufgebläht geworden, und es scheint auch zu viele Sicherheitsprobleme zu geben
Ich habe mich schon lange nicht mehr nach einem neuen Terminal-Emulator für macOS umgesehen, aber jetzt scheint der Zeitpunkt gekommen zu sein
GNU Screen wirkt ebenfalls stehen geblieben, also sollte ich den aufgeschobenen Umstieg auf tmux wohl endlich angehen
Persönlich habe ich nicht das Gefühl, dass iTerm2 auf eines von beidem zutrifft
Ich habe bisher kein anderes Terminal gesehen, das tmux auf demselben Niveau unterstützt
Was fehlt Terminal, sodass eine andere App den Alltag spürbar verbessern würde?
Zellij ist ein in Rust geschriebener Terminal-Multiplexer und einen Blick wert. Besonders gut ist, dass sich die Key Bindings leicht entdecken lassen. Es kommt dem nahe, was ich mir für eine TUI erträumt habe
Gilt das nur für die SSH-Integration und nicht für den Fall, dass man in iTerm einfach
"ssh"ausführt?Auf den Hosts, mit denen ich per normalem ssh verbunden war, konnte ich keine Datei
/tmp/framer.txtfindenLetztere Bedingung dürfte auch bei Enterprise-Distributionen meist erfüllt sein. RHEL 9 bringt zum Beispiel standardmäßig Python 3.9 mit