Blink ist eine leistungsstarke mobile Shell für iOS- und iPadOS-Geräte, die sich von klassischen SSH-Clients dadurch unterscheidet, dass sie auch die Ausführung lokaler Befehle ermöglicht. Diese Eigenschaft bietet zwar erweiterte Funktionalitäten, birgt aber auch Risiken, wenn sie nicht sorgfältig abgesichert wird. Ein kürzlich entdecktes Problem bei Blink bezieht sich auf die Art und Weise, wie die App mit SSH-URLs umgeht und Eingaben verarbeitet, die durch manipulierte URL-Handler gesteuert werden können. Dabei öffnet sich eine spannende Sicherheitslücke, die es potenziellen Angreifern erlaubt, weit über das eigentlich erwartete Nutzungsverhalten hinaus Aktionen auf dem Gerät auszuführen – ganz ohne klassische Interaktion des Nutzers. Um das Risiko angemessen einschätzen zu können, ist es wichtig, die technischen Hintergründe und Abläufe näher zu verstehen.
Blink verwendet unter der Haube den Terminal-Emulator hterm, welcher als sehr gut programmiert gilt und typische Probleme wie Reply Escape Sequences weitgehend vermeidet. Die Schwachstelle liegt jedoch im Umgang mit eingehenden SSH-URLs. Prinzipiell ist vorgesehen, dass beim Öffnen einer SSH-URL im Format ssh://user@domain ein Dialog erscheint, der den Benutzer fragt, ob er die URL mit Blink öffnen möchte. Anschließend wird über die App ein Kommando vorbereitet, das der Benutzer bestätigen kann, indem er die Eingabetaste betätigt. Dabei werden die Teile der URL – insbesondere Benutzername und Hostname – als Kommandoargumente übernommen und in die Kommandozeile eingefügt.
Leider akzeptiert Blink dabei nahezu alle Sonderzeichen uneingeschränkt, was bedeutet, dass manipulierte URLs Steuerzeichen enthalten können, die Blink direkt in den Eingabepuffer injiziert. So kann ein Angreifer beispielsweise ein Zeilenumbruchzeichen (%0A) einfügen, das so wirkt, als hätte der Nutzer selbst die Eingabetaste gedrückt. Dieses Verhalten erlaubt es, unbemerkt zusätzliche Befehle auszuführen. Zwar verhindert das Fehlen einer vollwertigen Shell in Blink das einfache Aneinanderreihen mehrerer Kommandos mittels eines Semikolons, jedoch können andere Steuerzeichen wie der Rückschritt (^H) oder das Abbrechen eines Befehls (^C) geschickt eingesetzt werden, um den Prozess zu steuern und Kommandozeilen zu modifizieren. Ein weiterer Abwehrmechanismus des SSH-Protokolls ist die Sicherheitsabfrage beim erstmaligen Verbinden zu neuen Hosts, bei der der Nutzer aufgefordert wird, den Fingerabdruck des Servers zu akzeptieren.
Doch auch hier gibt es eine Umgehungsmöglichkeit: Blink erlaubt die Weitergabe von SSH-Konfigurationsoptionen als Kommandozeilenparameter, sodass der Angreifer zum Beispiel die Option StrictHostKeyChecking auf „no“ setzen kann. Dies verhindert die Rückfrage zur Schlüsselakzeptanz und ermöglicht eine vollständig automatisierte Verbindung. Die Konsequenzen sind weitreichend, da so Befehle ausgeführt werden können, ohne dass der Nutzer aktiv etwas bestätigt. Da Blink auch lokale Befehle ausführen kann, zeigt diese Schwachstelle ein erhebliches Potenzial, Daten unbemerkt abzuziehen oder unerwünschte Aktionen zu starten. Denkbar sind Szenarien, bei denen etwa die Shell-Historie des Nutzers – mit Informationen zu besuchten Hosts und verwendeten Nutzernamen – mittels curl an einen externen Server gesendet wird.
Darüber hinaus kann auch jede beliebige Aktion, die mit curl möglich ist, aus der manipulierten URL ausgelöst werden. Die Sicherheitsbedrohung wird noch verstärkt durch die Art, wie iOS mit QR-Codes und URL-Handlern umgeht. Während der normale Öffnungsdialog beim Scannen eines SSH-URLs durch die Kamera erscheint, um die Ausführung in Blink zu bestätigen, zeigt sich bei der Verwendung der „Scan Code“ Funktion im Kontrollzentrum ein anderes Verhalten. Dabei wird keine Abfrage zum Öffnen der App ausgegeben, was die Exploitation erheblich erleichtert. Dies bedeutet, dass ein böswillig gestalteter QR-Code unbemerkt schädliche URLs öffnen und so die Ausführung von Befehlen auf dem Gerät auslösen kann, ohne dass der Nutzer eingeschritten ist.
Solche Methoden von URL-Schema-Abuse auf Apple-Geräten sind keineswegs neu. Experten beobachten dies schon seit mehreren Jahren, wobei immer wieder neue Schwachstellen in der Art und Weise auftreten, wie Apps und das Betriebssystem URL-Handler verarbeiten. Forschungsarbeiten und Vorträge auf Sicherheitskonferenzen wie BSides Las Vegas oder Disobey haben solche Problematiken bereits adressiert, zeigen dabei aber auch, wie schwer es ist, diese Angriffsmöglichkeiten vollständig auszuschließen. Blink hat die beschriebene Sicherheitslücke inzwischen geschlossen. Ein Update auf die aktuelle Version 18.
3.1 (Build 1006) wird dringend empfohlen, um das Risiko eines ungewollten Zugriffs oder Datenverlusts zu minimieren. Bis dahin sollten Nutzer besonders vorsichtig beim Öffnen von SSH- oder anderen URL-Handler-Links sowie beim Scannen von QR-Codes mit der „Scan Code“-Funktion sein. Generell ist es ratsam, nur Links aus vertrauenswürdigen Quellen zu öffnen und Apps möglichst stets aktuell zu halten. Die Analyse dieser Schwachstelle verdeutlicht, wie komplex moderne mobile Anwendungen geworden sind, und dass selbst kleine Design- oder Verarbeitungsfehler erhebliche Sicherheitslücken eröffnen können.
Die Kombination aus lokaler Befehlsausführung und der Verarbeitung von URL-Eingaben erfordert ein besonders umsichtiges Sicherheitskonzept. Gerade bei Anwendungen, die Zugriff auf sicherheitskritische Bereiche wie SSH-Zugänge besitzen, ist es essentiell, dass keine unkontrollierten Eingaben übernommen und verarbeitet werden. Darüber hinaus zeigt dieses Beispiel auch die Bedeutung von Nutzerinteraktion und expliziter Bestätigung bei der Ausführung sensibler Operationen. Ein Schutzmechanismus, der hier teilweise umgangen wurde, ist die Benutzerbestätigung vor dem Senden von Befehlen. Das Vorhandensein von unsichtbaren Steuerzeichen in URL-Parametern erlaubt, diese Hürde zu umgehen und eine automatisierte Ausführung zu erreichen.
Die Sicherheitslücke von Blink ist ein wichtiges Beispiel dafür, wie Manipulation von URL-Handlern eingesetzt werden kann, um auf iOS-Geräten unerwartete Auswirkungen zu erzielen. Durch das gezielte Einfügen von Steuerzeichen in SSH-URLs und die unzureichende Filterung dieser Eingaben konnte aufkommende Schadsoftware Befehle ohne Wissen des Nutzers durchführen. Insbesondere die Möglichkeit, vertrauliche Daten wie Shell-Historien oder sogar SSH-Schlüssel auszulesen und über das Netzwerk abzutransportieren, stellt eine ernstzunehmende Bedrohung dar. Für Endanwender und Administratoren von iOS-Geräten bietet sich durch dieses Szenario eine wichtige Erinnerung, wie kritisch Zugangskontrollen und sichere Eingabeverarbeitung heutzutage sind. Die regelmäßige Aktualisierung von Apps und Betriebssystemen sowie eine hohe Wachsamkeit gegenüber unbekannten Links und QR-Codes sind essentielle Maßnahmen zur Wahrung der Gerätesicherheit.