Quale output può un programma, quando eseguito da una riga di comando, generare un comportamento che è una vulnerabilità sull'emulatore di terminale?

7

Leggendo questo post, intitolato " Risolto il problema con i nomi di file Unix / Linux / POSIX ", Mi sono imbattuto in una frase MOLTO interessante dell'autore, che dice:

Oh, and don’t display filenames. Filenames could contain control characters that control the terminal (and X-windows), causing nasty side-effects on display. Displaying filenames can even cause a security vulnerability — and who expects printing a filename to be a vulnerability?!? In addition, you have no way of knowing for certain what the filename’s character encoding is, so if you got a filename from someone else who uses non-ASCII characters, you’re likely to end up with garbage mojibake

Per molto tempo ho sospettato che fosse così, perché a volte accidentalmente correre cat binary_file ha causato l'uscita del mio terminale, o causato il terminale a CTRL+L stesso, ma non ho mai avuto la consapevolezza di porre una domanda sufficientemente coerente .

La mia domanda è: quale output può un programma, se eseguito da una riga di comando, generare un comportamento che potrebbe essere considerato una vulnerabilità sull'emulatore di terminale?

Si noti che non mi sto riferendo a incollare comandi dai siti web nella riga di comando .

    
posta droope 01.11.2013 - 01:36
fonte

2 risposte

2

Non penso che un software possa inviare un Ctrl-Alt-Canc al sistema così facilmente, questo evento deve provenire da una tastiera fisica. Tuttavia, ciò che è sicuro è che con un terminale grafico non così recente, tale flusso potrebbe essere sfruttato per iniettare comandi malevoli.

L'indizio è che alcuni terminali forniscono:  - Una sequenza di escape per aggiornare il titolo della finestra,  - Un'altra sequenza di escape per riportare il titolo della finestra alla riga di comando.

Quando un utente utilizza un terminale sensibile a questo exploit (il terminale più conosciuto è stato corretto negli ultimi anni), è quindi possibile iniettare un comando sul prompt dell'utente usando, ad esempio, un file appositamente predisposto nome (quando si fa un elenco di directory) o file binario (quando si usa "cat").

L'utente dovrebbe quindi premere "Invio" per eseguire i comandi malevoli, ma di solito ci sono altre sequenze di escape che consentono di ingannare l'utente (ad esempio, svuotare la stringa di richiesta, cambiare il colore di primo piano del comando per impostarlo allo stesso modo come sfondo, quindi il comando stesso non è visibile, quindi visualizza qualcosa come "Premi invio per continuare ...").

    
risposta data 03.11.2013 - 09:18
fonte
0

I "caratteri di controllo" sono sequenze che l'emulatore cattura per cambiare l'ambiente. Control-C to break, Control-M per un ritorno a capo, ecc. Ci sono centinaia di loro. Sono combinazioni di tasti, quindi raggrupparli da un file equivale a martellarli sulla tastiera.

Quasi tutti sono però limitati al comportamento del terminale. Potrebbe essere in grado di forzare un riavvio se riuscissi a trovare un modo per far passare CTRL-ALT-DEL (non vedo come, ma è l'unica cosa che riesco a pensare), ma i sistemi moderni non hanno un molte cose sono mappate sui tasti funzione, quindi forzare quelli da eseguire non farà nulla.

    
risposta data 01.11.2013 - 16:22
fonte

Leggi altre domande sui tag