Manchmal cat
wird mein Terminal durcheinandergebracht, wenn ich versehentlich eine Binärdatei öffne. Das ist nichts, was reset
sich nicht schnell beheben lässt, aber könnte ein Angreifer nicht theoretisch eine Datei erstellen, die bei Anzeige auf einem Terminal beliebigen Code ausführt? Durch einen Exploit im Terminalemulator oder auf andere Weise.
Antwort1
Ob eine solche Ausgabe ausgenutzt werden kann, hängt vom Terminalprogramm ab und davon, was dieses Terminal je nach gesendeten Escape-Codes tut. Mir sind keine Terminalprogramme bekannt, die über solche ausnutzbaren Funktionen verfügen. Das einzige Problem wäre jetzt, wenn es einen unbekannten Pufferüberlauf oder etwas Ähnliches gäbe, das ausgenutzt werden könnte.
Bei einigen älteren hardware
Terminals kann dies ein Problem sein, da Sie beispielsweise Funktionstasten mit solchen Escape-Sequenzen programmiert haben, indem Sie eine Befehlssequenz für diese Taste in der Hardware gespeichert haben. Um diese zu aktivieren, müssen Sie immer noch eine physische Taste drücken.
Aber es gibt immer Leute (wie Hauke zu Recht als „hirntot“ bezeichnet hat), die bereit sind, eine solche Funktion einzubauen, wenn sie damit ein Problem für sie löst, ohne zu verstehen, welche Lücke sie damit schaffen. Meiner Erfahrung nach ist dies bei Open-Source-Software aufgrund der vielen Augen, die den Code betrachten, weniger wahrscheinlich als bei Closed Source. (Ich erinnere mich, dass man Mitte der neunziger Jahre im Mailprogramm auf Irix von Silicon Graphics Befehle einfügen konnte, die auf dem Computer des Empfängers ausgeführt werden sollten, echte Pfade zu ausführbaren Dateien usw.)
Antwort2
Die meisten Terminalemulatoren senden eine Antwort zurück, wenn sie bestimmte Escape-Sequenzen empfangen (sieheDokumentation zu xterm-Steuersequenzen). Sie können beispielsweise \e[0c
an einen VT100-ähnlichen Emulator senden und dieser sendet die Geräteattribute zurück, etwa wie (Das ist wahrscheinlich, was Keith beobachtet hat.) Aber diese Antworten sind keine beliebigen Zeichenfolgen. Trotzdem ist es keine gute Idee, irgendwo auf Ihrem System \e[?1;2c
eine ausführbare Datei mit dem Namen zu haben, die etwas Fatales tut.2c
Update: Die Risiken sind tatsächlich größer als ich dachte, aufgrund der Möglichkeit, den Titel eines Xterm-Fensters festzulegenund den Titel zurückzusendendurch die Verwendung entsprechender Escape-Sequenzen (http://www.securityfocus.com/bid/6940/). Im Gegensatz zum obigen Beispiel kann der Titel eine nahezu beliebige Zeichenfolge sein.
Antwort3
Dies ändert den Terminaltitel in GNOME Terminal 3.6.1, sofern er nicht durch etwas wiePS1:
printf "\033]2;Script Kiddie was here\007"
Öffnen Sie nun ein neues GNOME-Terminalfenster, um die cat
Version zu testen:
printf "\033]2;Script Kiddie was here\007" > test.bin
cat test.bin
Ja, dadurch wird auch der Terminaltitel festgelegt.
Es gab ein Sicherheitsproblem mitein Escape-Code, der dazu führt, dass der Titel in die Befehlszeile gedruckt wird, sodass Sie effektiv eine Datei erstellen konnten, die beim cat
Ausführen von ed beliebige Befehle ausgab (ich bin nicht sicher, ob Sie dort eine neue Zeile einfügen konnten). Autsch!
Antwort4
Ich habe definitiv erlebt, xterm
dass beliebige Zeichen in sich selbst eingefügt wurden, als hätte ich sie eingetippt. Und gelegentlich war dabei anscheinend auch ein Zeilenumbruchzeichen enthalten, sodass ich das ngwerm:0riu: command not found
als Antwort bekam. Ich sehe keinen Grund, warum jemand nicht eine Datei erstellen könnte, die bestimmte, schädliche Befehle sendet. Also ja, zumindest einige Terminals sind anfällig für Angriffe mit willkürlichen Auswirkungen.