Buffer Overflows, Sudo, Vudu, Sandwiches y PWNING tu propio sistema.

Hace unos días como regalo de cumpleaños me entere de un exploit que permite a un usuario «de a pata», es decir sin privilegios, ganar privilegios de super usuario «root» en cualquier sistema Linux que use sudo.

Sandwich
xkcd ftw.

Los que han tratado con usuarios, super usuarios, privilegios y demás en Linux, entienden el chiste anterior, si no, te recomiendo leer un poquito sobre ese tema, pero a especie de tl;dr: sudo es una utilidad o un programa en la línea de comando de Linux que le permite adquirir temporalmente privilegios de super usuario a un usuario regular a.k.a «de a pata» que ha sido identificado por el super usuario para poder invocar el comando y sus privilegios.

De tal suerte que mientras me encontraba disfrutando de mi día me entero de Baron Samedit (Inspirado en un personaje del vudú Haitiano) o mas torcidamente «CVE-2021-3156» que es una vulnerabilidad que de manera simplificada emplea dos bugs en el mecanismo de como se utiliza sudo para correr instrucciones en shell.

Usualmente cuando se corre un comando con sudo en modo shell los caracteres especiales se «marcan» con una barra invertida ‘\’, estos caracteres «especiales» son los ladrillos para construir expresiones regulares que son el pan de cada día en este tipo de actividades, después en el proceso para evaluar que quién está corriendo el comando es parte del archivo «sudoers«, o sea, fue habilitado por el super usuario del sistema para ejecutar sudo, se procesan estos caracteres con la barra invertida, e intentara leer los caracteres después de la barra invertida por que de inicio la lógica fue añadirlos para ser tomados en cuenta y no romper la lógica del programa.

Hasta ahi todo bien, no representaría ningún riesgo, sin embargo se puede invocar el shell mode descrito arriba al correr sudoedit con -i o -s, lo cual invoca sudo pero sin ningún comando adjunto, sudo no se va a marcar ningún carácter especial y el código no verifica que se esté pasando un comando para ejecutar con sudo, lo cual vuelve este bug explotable, ya que cuando se esta evaluando que el usuario sea parte de sudoers el comando adjunto se concatena en un «heap buffer», con este bug, un atacante puede sobrecargar este buffer y de cierto modo corromper sus registros y sobre escribirlo.

¿Cual es el resultado? pues que al explotar esta vulnerabilidad un usuario común sin privilegios de super usuario puede adquirirlos y hacer lo que se le pegue la gana, ahora, aparentemente esto había sido reportado desde el 2011 y no se que paso ahí, en este momento el equipo de sudo ya ha parchado esta vulnerabilidad desde el 26 de Enero en la version 1.9.5p2, sin embargo puede que en algunas distros como Ubuntu, específicamente la 20.04 LTS, pareciera que no ha sido parchado a pesar de tener las ultimas actualizaciones del sistema, acá te digo como verificar:

  • Checa tu versión de OS y la de sudo:
$ lsb_release -a
No LSB modules are available.
Distributor ID:	Ubuntu
Description:	Ubuntu 20.04.2 LTS
Release:	20.04
Codename:	focal
$ sudo -V
Sudo version 1.8.31
Sudoers policy plugin version 1.8.31
Sudoers file grammar version 46
Sudoers I/O plugin version 1.8.31

Parecería que estas en una de las versiones vulnerables (1.8.31) 😟

  • para eso podemos revisar con apt:
$  apt list sudo
Listing... Done
sudo/focal-updates,focal-security,focal-security,now 1.8.31-1ubuntu1.2 amd64 [installed]

Esta versión (1.8.31-1ubuntu1.2) es la que ya incluye el parche de esta CVE, y lo puedes confirmar en la documentación de Canonical.

Por último, si quieres verificarlo directamente puedes correr:

$  sudoedit -s '\' 
usage: sudoedit [-AknS] [-r role] [-t type] [-C num] [-g group] [-h host] [-p prompt] [-T timeout] [-u user] file ...

El que regrese «usage» significa que ya se esta validando la vulnerabilidad del \ y no tener ningun comando. De otro modo ACTUALIZA TU SISTEMA.

Conclusión.

Es clave que como usuarios y administradores de nuestros sistemas, si, tu eres el sysadmin de tu propio equipo, también el soporte y demás, hay que estar atentos de este tipo de parches y actualizaciones, ya se que nos gusta pensar que «eso no nos va a pasar a nosotros» o que «no tengo nada importante» o que «¿quien me va a estar atacando a mí?», y no tal vez no personalmente, pero ha habido un incremento en incidentes de bots usando ataques de fuerza bruta en Internet, y opino que como hacemos una cosa hacemos todas las cosas, y con ese pensamiento honestamente perezoso no nos vamos a ayudar mucho, mas cuando en este caso la solución es tan sencilla (en Ubuntu) como correr:

$ sudo apt-get update && sudo apt-get install

Instala tus actualizaciones de software, pasa un lindo día && sudo make me a sandwich.

MNK

Deja una respuesta

Por favor, inicia sesión con uno de estos métodos para publicar tu comentario:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Salir /  Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Salir /  Cambiar )

Conectando a %s

Crea un sitio web o blog en WordPress.com

Subir ↑

A %d blogueros les gusta esto: