Wie sicher ist es, eine beliebige Datei zu caten?

Wie sicher ist es, eine beliebige Datei zu caten?

Manchmal catwird mein Terminal durcheinandergebracht, wenn ich versehentlich eine Binärdatei öffne. Das ist nichts, was resetsich 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 hardwareTerminals 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[0can 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 catVersion 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 catAusfü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, xtermdass 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 foundals 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.

verwandte Informationen