EDICIóN GENERAL
209 meneos
2309 clics
Una vulnerabilidad en Vim permite hackear GNU con Linux con simplemente abrir un archivo en el editor

Una vulnerabilidad en Vim permite hackear GNU con Linux con simplemente abrir un archivo en el editor

El investigador de seguridad Armin Razmjou ha descubierto una grave vulnerabilidad en los conocidos editores de texto presentes en la mayoría de distribuciones GNU+Linux: Vim y Neovim. La vulnerabilidad CVE-2019-12735 tiene una puntuación alta puesto que permite a un atacante ejecutar comandos en el sistema operativo de forma remota y tomar control del mismo. De hecho, utilizando un comando es posible saltarse la protección del sandbox de Vim.

| etiquetas: gnu/linux , vim , vulnerabilidad
Comentarios destacados:                          
#6 #04
El sudo registra todas las solicitudes de «root», como también lo hace el PAM.
Así que eso de sin darse cuenta es mentirijilla. De hecho el sudo lo puedes configurar para ser mucho más restrictivo. El archivo sudoers está para algo :roll:
La principal vulnerabilidad que le veo a Vim es que si lo arrancas sin darte cuenta, y no lo conoces, no hay cojones a salir de esa aplicación.

:troll:
#8 True story :-|
#8 #9. La secuencia de salida es :

Tecla escape para salir del modo de 'edición de texto' y teclear :q! y pulsar la tecla 'Enter'.

Y si lo anterior le cuesta mucho al común de los mortales con una la aplicación gráfica tipo 'System Monitor' se 'mata' el proceso con un 'kill' al VIM activo y punto.
#19 Si claro, a toro pasado es fácil xD Pero ponte en la piel del usuario novato que pincha en un archivo de texto y se le abre en el Vim . . .
#21 Y tras matarla y volverla a abrir:

"Hay un fichero temporal por ahi perdido. Quieres recuperarlo? Si quieres usa la combinacion de teclas adecuada, eh?, que no estamos aqui para ayudarte.
#19 Y si lo anterior tampoco sirve, pulsa el botón de reset.
#89. No lo conocía. También funciona. :-)
(CC #19 #75 #92)
#91 ZQ sale sin guardar ZZ guardando. :hug:
#19 O simplemente ZQ (en mayuscula)
#19 'pkill vim' otra forma de matarlo desde una consola.
#122. Gracias por el aporte. Esto empieza a parecer 'John Wick '. ;)
(CC #19)
#8 Menos mal que se ideó el Ctrl+Z :troll:
#8 Es fácil, tecleas ":q" o ":q!" (sin las comillas) y ya estás fuera!!

Otra cosa es que no tengas el teclado en español y que no sepas donde está ":" :-D
#8 Es fácil, buscas dónde está enchufado el ordenador y lo desenchufas.

Si todavía sigue ahí el Vim, le sacas la batería al portátil.

Si no se puede sacar la batería, esperas unas horas.

Si tras todo esto sigue ahí el Vim, es hora de deshacerse del ordenador y llamar a un exorcista.
#55 vi vi vi, the editor of the beast
#55 En realidad eso es lo que le pasó al que destruyó el disco duro de Bárcenas, pero no lo quieren reconocer.
#7 No, con 'su' pasa eso, porque tecleas la clave una vez y te quedas root hasta que cierres la sesión/el shell. Si de verdad te preocupa quedarte en modo root más allá de lo necesario, usar 'su' es la peor solución posible.

#8 La primera vez que me enfrenté a vi no tenía una interfaz gráfica, y me tocó apagar el computador para salir. Luego alguien me enseño la secuencia mágica, y de ahí poco a poco he ido aprendiendo hasta ser capaz de usarlo para solucionar conflictos de git. Lo que nunca he podido hacer cómodamente es tener más de un archivo abierto a la vez.
#63 Pero para hacer su pones una clave diferente. Eso es lo seguro.

Con respecto a vi, es duro, es cierto. Pero fue pensado para teclear lo menos posible así que es muy potente y se puede hacer cosas que ni se y ocurrirían en un editor normal. Fue pensado para funcionar incluso en máquinas de teletipo, o sea, como una impresora con teclado.
#67 No logro entender qué tiene que ver que la clave sea distinta.
#71 Que diferencia las funciones. La clave de usuario te da acceso a cosas inofensivas para el sistema. La de root te deja hacer lo que te de la gana.
#82 Vale. Estaba pensando solo en un ordenador personal.
#84 Es que en un ordenador personal, diferenciar lo inofensivo de lo peligroso es importante.
Nadie está exento de meter la pata, o peor, de que por ejemplo por un problema de seguridad en el navegador te podrían hacer ejecutar un programa. Ese programa por ejemplo podría simular un protector de pantalla: "teclee su clave para desbloquear la pantalla", y se acabó. El programa malicioso tiene tu clave que resulta dar acceso a todo el sistema mediante sudo. Una vez obtenido el permiso de root ya más te vale formatear y reinstalar porque difícilmente encontrarás todo lo que puedan haberte tocado en el sistema.

Al tener dos claves sabes perfectamente que si tecleas la de root algo peligroso vas a hacer.
Y por eso es, niños, que eso de usar sudo al estilo Ubuntu es una mala idea. El root debe tener clave y hacer su en lugar de sudo. De esa forma se garantiza que el usuario no adquiera permiso de root sin darse cuenta.
¿Pero Vim naranja o Vim cristal?

#4 Y en caso necesario su -c, como la gente decente. Además tengo entendido que sudo guarda la "elevación" durante un tiempo (no se cuanto) y que durante ese tiempo puedes ejecutar sudo sin contraseña libremente :shit:
#5 hasta que matas, cierras, la terminal, no es una cuestión de tiempo
#81 perdón tengo que rectificar, veo que depende de la distribución, in Ubuntu, your administrative privileges last for 15 minutes by default, y supongo que derivados también... 15 minutos por defecto
#81 Es una cuestión de tiempo, lo acabo de mirar:

scottlinux.com/2012/08/04/change-sudo-default-password-timeout/

Dentro de ese periodo de tiempo puedes abrir otra terminal y ejecutar cualquier cosa con sudo. Es un peligro.
#86 Sí, ya he rectificado arriba, 15 minutos por defecto. Ocurre que yo sigo con slackware usamos su, y solo he tecleado sudo en máquinas ajenas con ubuntu y dervados y pensaba que al cerrar el shell y matar el proceso padre se mataba, pero no
el man(nual) de sudo lo dice 15.
rtfm
#5 ¿Te refieres al periodo de gracia?
#04
El sudo registra todas las solicitudes de «root», como también lo hace el PAM.
Así que eso de sin darse cuenta es mentirijilla. De hecho el sudo lo puedes configurar para ser mucho más restrictivo. El archivo sudoers está para algo :roll:
#6 no acojone yo ni nada la primera vez que me soltó lo de que iba a reportar el incidente el cabron. Era mi propio ordenador y aun así me dejo con mal cuerpo
#4 POR Fin alguien lo dice. +1000
#4 Yo cuando utilizo sudo, me pide la contraseña.
#16 #4. Es que sudo pide contraseña, no me he topado con ningún sudo que no la pida excepto si ya la has tecleado con el primer sudo en una terminal de comandos.

Bueno sí, la Raspberry Pi con Raspbian no pide la contraseña con el sudo, pero si que la pide en otro tipo de operaciones. De todas formas la Raspberry Pi a pesar de sus indiscutibles virtudes es 'poco fiable' 'poco seria' comparada con un PC convencional.
#22 la pide la primera vez y la recuerda por un buen rato.
#26. Es lógico que la recuerde, es por comodidad. Si abres una nueva terminal con un nuevo sudo te la vuelve a pedir.
(CC #22)
#27 La comodidad suele estar reñida con la seguridad...
#26 #4 5 minutos por defecto
#31 15 minutos by default
#22 tambien se puede configurar para que no la pida nunca a un determinado usuario
#4, ¿podrías explicarlo un poco más? ¿Cómo puede pasarte que adquieras permiso de root sin darte cuenta y que a su vez con su no pueda pasar? Gracias.

Edit: bah, supongo que es por lo que dices en #7.
#35 Eso es. Yo prefiero que haya dos claves: la del usuario que se pide para cosas del usuario o que sean inofensivas para el sistema (como mucho lanzar actualizaciones o configurar la red sería lo más grave). Y la de root que si la tecleas sabes que puedes romper algo (como instalar o desinstalar software).

Al haber dos claves queda claro si vas a hacer algo peligroso. Con el sudo sólo hay una. Si una aplicación te pide tu clave no sabes si la va a usar para algo peligroso o no.

Por ejemplo un programa malicioso podría hacerse pasar por un protector de pantalla y pedirte la clave para desbloquear, y en realidad usarla para hacer sudo y dañar el sistema.

Ese programa malicioso podría haber llegado a través de un bug como éste del vim
#59 Así lo tengo configurado yo, pero me extraña que digas que en ubuntu no se puede configurar de tal modo (otra cosa es que el intalador por defecto no te invite a ello)
#64 Siendo Linux se puede configurar como quieras. Hablo del comportamiento por defecto que es el que suele dejar casi todo el mundo.
#59 Al haber dos claves queda claro si vas a hacer algo peligroso. Con el sudo sólo hay una.

No. Eso es en Ubuntu y otras distribuciones, pero no en todas. Yo uso OpenSuse, y ahí cuando usas sudo te pide la clave de root. De hecho el utilizar la propia clave de usuario para sudo es algo que me pone super nervioso en otras distribuciones...
#4 diras su -
#43 Hay una leve diferencia entre su y su - con respecto al entorno: al simular un login con ese usuario asigna las variables de entorno pero muchas veces no es necesario.
#4 Por mucho que recuerde la contraseña un tiempo, delante de cada comando tienes que volver a escribir sudo, así que habría que ser muy tonto para no darte cuenta de lo que haces.
Con su, como abres sesión de root, es más fácil que al cabo de un tiempo no te des cuenta y teclees lo que no debes.
#70 pero una aplicación maliciosa puede aprovechar eso.
#70 Yo para evitar problemas de root
1° obligo a ssh-server que no permita login de root y
2° edito /root/.bashrc para que salga el root@machine# en color rojo.
#4 Yo no lo veo mal por eso, sino por otra cosa, por que seguro muchos a la mínima que algo les pidan permisos, lanzan su y ya siguen como root todo el rato y en esa casuística es peor su, que sudo.

A mi me parece mal sudo por que si ya tienen acceso a la cuenta de usuario, pueden hacer sudo -s y ser root sin saber la contraseña de root. Por otro lado, si comprometen la cuenta de un usuario, con su, deben saber también la de root y por eso es por lo que prefiero su vs sudo en servidores. Tampoco olvidemos que puedes configurar sudoers para que solo permita lo que tu quieres...
#73 Es que en Ubuntu el root no suele tener contraseña, o sea, no te puedes loguear como root si no es mediante sudo.

Yo prefiero que el root tenga clave pero no permitir root por SSH. De esa forma si quieres ser root en remoto necesitas saber dos claves distintas.
#80 Si quieres estar realmente seguro con SSH, lo mejor es utilizar certificados de cliente y deshabilitar el login por contraseña.

Yendo un paso más allá, yo ahora estoy configurando mis servidores para loguearme usando un token hardware (Yubikey 5), y eso ya sí que es la leche, porque para que alguien pudiera loguearse en tu nombre tendría que robarte físicamente el token.
#4 sudo mala idea??? joder...
#52 pega que el unix la tuviera en el 69 y el msdos sea del 85 ¿eh? Que jodido...
#53 en el periodista Jaime Mausan corroboró en un programa que la cia puso puertas traseras en msdos y fueron copiadas a Unix y después a Linux, seguramente lo del vim viene del edit de msdos que era más potente en la manera de manejar lo CRLF que Unix no usa
Tres hurras por emacs.
#3 en emacs tambien esta la vulnerabilidad, pero cualquiera se pone a programar un ataque en Lisp, yo aun trato de hacer un bucle for.
#18 #3 Ya hace más de 30 años, en el libro "The cuckoo´s egg" te contaban como un grupo de crakers alemanes pargados por la KGB crakearon literalmente cientos de servidores UNIX y VAX en USA debido a una vulnerabilidad de Emacs.

De la wiki:

...Stoll traced the error to an unauthorized user who had apparently used 9 seconds of computer time and not paid for it. Stoll eventually realized that the unauthorized user was a hacker who had acquired superuser access to the LBNL system by exploiting a vulnerability in the movemail function of the original GNU Emacs...
#3 buuuuuu fuera xD
#3 Yo soy un hereje uso evil bajo Emacs (spacemacs) :-D
#3 gran sistema operativo pero adolece de editor de texto :troll:
#25 ¿Se supone que eso lo debe entender cualquiera que use Linux? ¿No es algo complicado para usuarios normales? He manejado muy poco algún Linux, pero con tanta defensa de que Linux es para cualquiera, este tipo de noticias me hacen dudar...
#32. Cualquier distribución Gnu/Linux se va actualizando sola (pidiéndote o no permiso, lo puedes configurar ) desde el propio escritorio, lo cual no implica que a poco que se entienda del tema cualquiera no pueda realizar cambios de forma más manual y directa desde la terminal de comandos o desde una aplicación gráfica tipo 'Synaptic Package Manager'.

Pero no te compliques, cada vez se sale menos de los navegadores tipo Firefox. Esa es la principal razón por la que cada vez tiene menos sentido precuparse del sistema operativo que se esté usando, y si es libre mucho mejor.
(CC #25)
#32. Por cierto, hace unos meses me pasé a Linux Mint, una de las distribuciones más populares en todo el mundo, y no puedo más que recomendártela. Bonita bonita, sencilla a más no poder, muy estable y muy libre.
linuxmint.com/
#32 para que lo entiendas, en este caso el peligro está en que uses un editor de texto en modo administrador. normal si uno quiere modificar algo que es propiedad de root, pero rarísimo en un neófito.
Y para estos menesteres, que suelen ser cambiar opciones tipo yes/no o tocar una cifra, con un mini editor como nano va que chuta y no tiene ese problema. Jamás he usado Vim para editar algo del sistema.
#51 No solo. Un rm - Rf $HOME no hace ni puta gracia.
#51 quizá tu no, pero igual vim es el programa para el que más uso sudo
#32 La realidad es que la mayoría de los usuarios comunes de Linux no usan Vim nunca. Vim es usado principalmente por usuarios avanzados por sus propiedades de edición en la terminal, así que el que corre riesgo con esta vulnerabilidad sabe perfectamente como aplicar esas medidas para protegerse.
#32 Un usuario "normal" no usa vim. Tranquilo.
#32 Si no lo tienes como editor por defecto, no lo usas para codificar ni para nada, y no ejecutas scripts de otros que no sepas lo que hacen, ya es dificil que te pueda afectar esta vulnerabilidad. Es una vulnerabilidad que requiere la apertura de un archivo con el editor vulnerable. Si fuese una aplicacion que permitiese la explotacion remota, si tendrias que preocuparte mas.
#32 La instalación de la corrección va en automático. Una de las distros que tengo en casa se actualizó Fri, 07 Jun 2019 , es decir, después del bug pero antes de este envío a mnm.
La vulnerabilidad de la que se habla aquí es prácticamente imposible de explotar en un ordenador personal. Es que, cambiando un fichero de tu cuenta de usuario, puedes ejecutar un comando de superusuario si has arrancado el vim en modo superusuario... vamos que no te supone nada, porque el comando lo podrías ejecutar…   » ver todo el comentario
#52
POr cierto unix tenía la consola y terminales
<<Unix generó linux, que es basicamente la evolucionde quickbasic 4.5 >>
El quick basic es un basic de microsoft con compilador que he utilizado también y que no tiene que ver con Linux (que tiempos, cuando usaba slackware por cierto)
En fin. Al menos mantén el nivel de trolleo
export EDITOR='/usr/bin/nano'
No puedo reproducirlo.
Según el doc, las distros que desabilitan el modeline no son vulnerables. Debian y derivados (p.e. Ubuntu) no lo son.
Aparte, no encuentro en ningún sitio si sirve para elevar privilegios. Sino, no deja de ser otra curiosidad.
El cliente ftp permite ejecutar comandos en remoto de forma trivial.

Edit: creando a manopla un .vimrc con "set modeline" funciona el exploit.
Muy chungo, el vim viene por defecto en la mayoría de las distros...
#1. Esa es la razón por la que el parche que solucione el problema es inminente si es que no se ha solucionado ya. Vim es un imprescindible del Software Libre.
Edit. #17. Lo dicho, del propio artículo :

'...Es recomendado aplicar los parches para Vim en la versión 8.1.1365, y para Neovim en la versión v0.3.6. Además de esto, se recomienda desactivar las 'modelines' en vimrc, usar el plugin securemodelines, o desactivar modelineexpr para no permitir expresiones en las 'modelines'...'

(CC #1)
#1 El que viene por defecto es "vi", no "vim". Pero vaya, es buena señal que salgan este tipo de bugs para que la comunidad por corrija.
#76 Buena señal? Debemos alegrarnos y celebrar que hayan bugs como este? :shit:
#97 Debemos alegrarnos de que se encuentren públicamente los bugs. Porque igual hay alguien que lo lleva explotando años...
#1 Si, es una buena cagada. Pies de plomo al abrir archivos...
#99 En este momento la opción más segura parece ser: wine notepad.exe mifichero.txt :troll:
#1 De la prueba de concepto del exploit:

"Note that some OSes ship with a custom vimrc that explicitly sets nomodelines, e.g. Debian. So if you use their custom default vimrc instead of Vim's native defaults, you're safe."

(escrito desde mi Debian)
#24 Lunix es un sistema aperitivo cromado de UNIX, que era un antevisor de Mr-dos (Mocosof operandin dish). GENU no es mas que un fuck subido al git con SoulForge.
Qué mal redactado, qué subnormal el redactor, qué capullo... Qué mal, joder.

De manera remota dice...

"Si un atacante crea un archivo especial utilizando Vim o Neovim, bastaría solo con que lo abras en cualquiera de los editores para que este pueda hackear tu distribución Linux ejecutando comandos arbitrarios de forma remota."

No hostia no... ¡¡!No!!!
Vim es para nenas, los machotes utilizamos vi :roll:
Linux es mejor, no hau viruses.
:troll:
#54 #104 "mañana en Seguridad 101 aprenderemos a diferenciar entre escaladas de privilegios y malware".
#77 Pues no, la verdad es que no lo conocía yo antes utilizaba muchísimo el vi hasta que descubrí nano y ahora es el que utilizo habitualmente cuando estoy en modo consola, cuando estoy en modo gráfico suelo usar el kate que también me resulta bastante cómodo.
¡Que le den al vim! ¡Larga vida a nano! :-D
#20 VIVA!!!

Nano es también "rarito" al menos hasta que te acostumbras (estoy más que acostumbrado, pero reconozco que a alguien nuevo en esto tiene que decir... ¡¡¡Pero qué coj...!!!). Pero es que VIM... Supongo que cuestión de gustos y que debería darle otra oportunidad, pero me cuesta mucho usarlo.
#46 ¿nadie más usa JOE? Yo cada vez que despliego un Linux se lo instalo...no sé vivir sin él. :roll:
#77 mcedit, otro para la lista, el editor interno de 'mc', Midnight Commander: es.wikipedia.org/wiki/Midnight_Commander
A mi me da igual. Todavia estoy intentando salir de vim.
#24 GNU/Linux es un tipo de UNIX bajo licencia GNU. El UNIX (69 )no es antecesor de msdos (85), funcionan de forma muy diferente con una arquitectura diferente, concepción de comandos diferente, otros sistemas de ficheros, núcleo diferente, etc.
#28 Tanto el msdos como el UNIx funcionan con la pantalla del msdos, sin raton, el concepto de la consola de comandos fue plagiado por UNIX cuando microsoft lanzo el msdos
Unix generó linux, que es basicamente la evolucionde quickbasic 4.5
Este es el año de Word en el escritorio.
En Slackware sí. Y también está por defecto VI. Pero el que se enlaza desde las consolas virtuales para todo, es nano.

El Vim (para los que estamos acostumbrados a los comandos de VI) hay que instalarlo.
El que viene por defecto es GNU Nano. Por otra parte, Linux no es un sistema operativo. El SO es GNU.
#2 Linux es un sistema operativo clonado de UNIX, que era un antecesor de MS-dos (Microsof operating disc) . GNU no es mas que un fork subido al git con sourforge
#24 MS-DOS = Microsoft Disk Operating System = Sistema Operativo en Disco de Microsoft.

P.S. Mimimimimi :-D
#24 Se ve que estás tu muy puesto en esto xD xD xD
#24 Y tu no eres más que un bot. Escrito en Basic, por lo que veo :-)
#2 El SO es GNU-Linux, a ver como interactúas con el hardware sin un kernel, salvo que te atrevas con Hurd que lo que se dice soporte de hardware no tiene demasiado que digamos.

Richard Stallman rules !!!!
¿Vamos a morir todos? Pues nada, oye, adiós.
#38 Hola... Pues no, ya se ha actualizado. El fin en otro apocalipsis será...
no es verdad, por mucho que lo digáis.
El problema de sudo es que recuerda por un tiempo el permiso y no pid la clave.

Con su no pasa eso.
#7 En la uni cambiamos el ejecutable de telnet en un DOS para que fallara la primera vez, logueara la clave y luego ejecutara el telnet de verdad. La mayoría de la gente se creía que había metido mal la clave y nadie se puso a investigar el ejecutable del sistema.

Si tienen acceso a tu cuenta de usuario no creo que sea dificil ocultarte un ejecutable chungo y hacer un alias a "su" para que haga algo similar. Más trabajo que con sudo sin clave, y más fácil de detectar en cuanto abras…   » ver todo el comentario
#10 Si haces su sólo metes la clave una vez. De ahí en adelante dejas de ser el usuario y pasas a ser root hasta que termines con lo que estás haciendo.
En Ubuntu puedes conseguir algo así haciendo sudo su.
#12 ¿Puede tener alguna implicación de seguridad dejar la shell de root abierta todo el rato? Si usas screen o tmux, si entran a una shell de usuario te la podrían secuestrar, pero ahora mismo a menos que tengas acceso físico no se me ocurre ninguna otra forma.
#10 Eso es un clásico, yo mismo hice version fake de telnet :-D
Me has hecho recordar los viejos tiempos.
Se lo tienen muy merecido esos modernitos que no usan line.
#36 ¿Line?, ¡dirás "ed"!
#50 Eso, quería decir "ed".
Esto no lo VimOS venir.

Perdón por el chiste malo, ya me marcho.
Como he oído por ahí todo software tiene su vulnerabilidad, pero al ser software libre, todo el mundo que sepa puede reparar dicha vulnerabilidad, a diferencia de microsoft y apple, solo pueden ellos, y ojito por hacerlo por tu cuenta, te cae una demanda si o sí
¿A vi no le afecta, no?
#23 Lo dudo, no recuerdo que tenga soporte para "modelines". Debo de ser de los pocos en el mundo que le queden máquinas solo con "vi".
#48 Pues yo soy otro como tu, con vi me vale.
Por cierto nanistas
¿algo ha destacar, realmente importante de su nueva versión, 4.0?
Yo todavía ando con la 2
#98 ha destacar que aún no trae corrector ortográfico
«12

menéame