A veces, cuando escribo cat
un archivo binario por error, mi terminal se confunde. Nada que un rápido reset
no pueda solucionar, pero ¿no podría teóricamente un atacante crear un archivo que, cuando se muestre en una terminal, ejecutaría algún código arbitrario? A través de un exploit en el emulador de terminal o de otro modo.
Respuesta1
La posibilidad de explotar dicha salida depende del programa del terminal y de lo que hace ese terminal dependiendo de los códigos de escape que se envían. No conozco programas de terminal que tengan características tan explotables, y el único problema ahora sería si hay un desbordamiento de búfer desconocido o algo así, que podría explotarse.
Con algunos hardware
terminales más antiguos, esto podría ser un problema ya que programaba, por ejemplo, teclas de función con este tipo de secuencias de escape, almacenando una secuencia de comando para esa tecla en el hardware. Aún necesitarías presionar una tecla física para activarlo.
Pero siempre hay (como Hauke tan acertadamente marcó como "muerte cerebral") personas dispuestas a agregar una característica de este tipo si les resuelve un problema, sin comprender el vacío legal que crean. En mi experiencia con el software de código abierto es que, debido a que hay muchos ojos mirando el código, es menos probable que esto suceda como con el código cerrado. (Recuerdo que en el programa de correo en Irix de Silicon Grahpics, a mediados de los años noventa, se podían incluir comandos para ejecutar en la máquina del receptor, rutas reales a los ejecutables, ....)
Respuesta2
La mayoría de los emuladores de terminal enviarán alguna respuesta si reciben ciertas secuencias de escape (eche un vistazo adocumentación de secuencias de control xterm). Por ejemplo, puede enviar \e[0c
a un emulador tipo VT100 y le devolverá los atributos del dispositivo, algo así como \e[?1;2c
(Esto es probablemente lo que observó Keith). Pero estas respuestas no son cadenas arbitrarias. Aún así, tener un ejecutable nombrado 2c
en algún lugar de su sistema que haga algo fatal es una mala idea.
Actualización: De hecho, los riesgos son mayores de lo que pensaba, debido a la posibilidad de establecer el título de una ventana xterm.y devolver el títulousando secuencias de escape apropiadas (http://www.securityfocus.com/bid/6940/). A diferencia del ejemplo anterior, el título puede ser una cadena casi arbitraria.
Respuesta3
Esto cambia el título de la terminal en GNOME Terminal 3.6.1, a menos que se anule por algo comoPS1:
printf "\033]2;Script Kiddie was here\007"
Ahora abra una nueva ventana de Terminal GNOME para probar la cat
versión:
printf "\033]2;Script Kiddie was here\007" > test.bin
cat test.bin
Sí, esto también establece el título del terminal.
Solía haber un problema de seguridad conun código de escape que da como resultado que el título se imprima en la línea de comando, por lo que podría crear efectivamente un archivo, que cuando cat
ed imprima (no estoy seguro de si podría poner una nueva línea allí) comandos arbitrarios. ¡Ay!
Respuesta4
Definitivamente he experimentado xterm
la inserción de caracteres arbitrarios en sí mismo como si los hubiera escrito. Y en ocasiones esto aparentemente ha incluido un carácter de nueva línea, por lo que recibí ngwerm:0riu: command not found
como respuesta. No veo ninguna razón por la que alguien no pueda crear un archivo que envíe comandos específicos y dañinos. Entonces sí, al menos algunos terminales son susceptibles a ataques con impacto arbitrario.