Hace 4 años | Por PussyLover a genbeta.com
Publicado hace 4 años por PussyLover a genbeta.com

Una vulnerabilidad en Sudo, una de las utilidades más relevantes de Linux, permite ejecutar comandos con acceso raíz, incluso cuando estos no están autorizados por el usuario. Dicha vulnerabilidad omite la política de seguridad de sudo, permitiendo así que otros usuarios o programas ejecuten comandos root.

Comentarios

casius_clavius

#15 Gracias por la explicación

Paracelso

#15 Yo, como Director y por tanto jefe de los informáticos tengo acceso root a los servidores y las máquinas, sobre todo porque tengo varias máquinas virtuales para mis usos (nos presentan aplicaciones, las pruebo, doy mi visto bueno). Es política de empresa que los máximos responsables tengamos estos datos, pero sinceramente no he entendido NADA del artículo. Simplemente obedezco la máxima que me han dicho mis informáticos : JAMÁS USES SUDO O ROOT SIN PREGUNTAR.

R

#26 Personalmente no creo que sea la responsabilidad del director comprender estas vulnerabilidades, entiendo que tendras gente en la empresa encargada de los equipos informaticos capaz de evaluar correctamente si la vulnerabilidad os afecta o no (apostaria a que no, pero obviamente sin mirar, nunca se sabe).

c

#42 No lo es si el director no anda pululando como root por el sistema. Si el director no tiene ni puta idea, que ande como root por el sistema es un peligro.

meneandro

#26 Precisamente porque root tiene todos los privilegios, puede acceder a todos sitios y romper (inadvertidamente o no) las cosas.

Sudo no es más que una herrmamienta que suele estar configurada para que usuarios puedan ejecutar comandos como si fueran root (y por lo tanto, potencialmente romper cosas). Es muy potente y bien configurada puede ser una forma muy segura de que cualquier usuario pueda administrar sin problemas cualquier parte del sistema sin por ello afectar a otras partes del sistema (o sea, un control más fino y concreto de los privilegios).

Dependiendo del sistema, no está configurado (o sea, ningún usuario puede usar sudo) o lo está para un subconjunto de los usuarios (posiblemente sólo el administrador del sistema, para que pueda usar su propia cuenta y no root). El fichero de configuración del sudo se llama /etc/sudoers, edítalo y mira a ver qué líneas hay, si está todo comentado o si hay usuarios con permisos para ejecutar sudo.

c

#26 Yo, como Director y por tanto jefe de los informáticos tengo acceso root a los servidores y las máquinas

¿Preguntarle a quién?

Paracelso

#66 Como dije antes en muchas ocasiones tengo que probar algunos productos para dar el visto bueno (aplicaciones sanitarias o de gestión), y además tengo un pool de máquinas virtuales para administrar a mi gusto, en no pocas ocasiones me aparecen actualizaciones , como mucho me atrevo con un git pull, pero poco más, si la aplicación requiere de más permisos o me insta a darle otra contraseña, no lo hago.

c

#82 Para probar aplicaciones no es necesario root. Para administrar hacen falta conocimientos.

thingoldedoriath

#26 Si tus informáticos saben más que tu de informática (entiendo que tu tienes acceso porque eres el director, jefe, propietario de la empresa pero que tienes administradores de sistemas a tus órdenes), harías bien en seguir ese consejo

D

#15 Bravo por la explicación!

Nova6K0

#15 Enorme explicación. Pena que sólo te pueda dar un positivo, compañero. clap clap

Salu2

D

#30 lo vi después en otro comentario, y realmente es una configuarción muy particular y que no creo que se de muy a menudo.

SalsaDeTomate

#30 Sí, yo también se lo he visto luego a #9

WcPC

#18 Pues si..

D

#20 ¿sudo hay que evitarlo?, podrías desarrollar un poco más esa conclusión?

f

#21 Porque en el caso de que tu sistema se vea comprometido, muy bien puede ser a raiz de que alguien ha conseguido tu password... con lo cual, si usas sudo, de repente el tipo puede tener acceso de root.

Yo lo tengo todo deshabilitado. Está instalado porque es dependencia de algunos paquetes pero no tengo ni una regla. Para las veces que tengo que tocar la configuración del sistema, me paso a root con un "su" y listos.

c

#24 Yo tampoco uso sudo.

Pero todo tiene sus ventajas, inconvenientes y nivel de paranoia aplicable.

anv

#21 Yo estoy de acuerdo. El uso que hace Ubuntu y derivados de sudo me parece incorrecto. Lo ideal es que sólo el root pueda hacer sudo (para convertirse en otros usuarios con menos privilegios) y el sudo quede sólo para casos excepcionales. Lo ideal es que el root tenga una clave diferente y si necesitas ejecutar algo con privilegios altos uses su con la clave de root y no sudo con tu propia clave.

Al haber dos claves distintas el usuario tiene muy claro cuando está haciendo algo peligroso. La clave de usuario para operaciones normales y la de root para cosas que requieren saber lo que haces.

M

#36 Puedes configurar sudo para que te pida la contraseña de root cada cierto tiempo. Si no hubiera sudo muchos usuarios inexpertos harían cosas como iniciar un entorno de escritorio como root, por ejemplo para poder instalar un programa, y eso es un agujero de seguridad brutal.

anv

#43 Puedes configurar sudo para que te pida la contraseña de root cada cierto tiempo.
Que yo sepa, aa que pide es la clave del propio usuario, no de root.. Justamente la función de sudo es poder ejecutar cosas con privilegios de otro usuario sin saber su clave.

De hecho, en las distribuciones basadas en Ubuntu, el usuario root no tiene clave (o sea que no te puedes loguear como root).

M

#44 Existe la opción de configurarlo con la de root (con rootpw creo que es) o incluso puedes definir claves personalizadas.

De hecho, en las distribuciones basadas en Ubuntu, el usuario root no tiene clave (o sea que no te puedes loguear como root)

Te puedes loguear como root con sudo su root, o sudo -i, aunque no tenga password.

En sistemas que van dirigidos a todo tipo de usuarios como Ubuntu, veo normal que se llegue a un compromiso de este tipo entre seguridad y comodidad de uso. SI vas a usar linux en sistemas más "serios" o "profesionales" lo lógico es que sepas configurar la seguridad de tu sistema y mires bien estas cosas.

anv

#45 Te puedes loguear como root con sudo su root,

Cuando digo "loguar" me refiero a cuando estás en un prompt de "Login:" y tecleas el usuario y su clave.

En sistemas que van dirigidos a todo tipo de usuarios como Ubuntu, veo normal que se llegue a un compromiso de este tipo entre seguridad

Es que no es para nada necesario. Mageia es una distribución muy amigable para el usuario novato (diría que incluso más que Ubuntu) y resuelve todo sin necesidad de sudo. Usa polkit para permitir operaciones como configuración de red por ejemplo sin tener que poner ninguna clave. Para instalar actualizaciones de software usa la clave del usuario y sólo para instalar software nuevo pide la clave de root.

De esa forma queda bien claro que cuando tecleas la clave de root vas a hacer algún cambio importante mientras que si te pide la de tu usuario es para hacer algo poco peligroso, y si no te pide clave es algo bastante inofensivo.

meneandro

#36 Es una idiotez que sólo root pueda hacer sudo. Ya root tiene todos los privilegios del mundo, y además, puede suplantar a cualquier usuario con su...

La gracia del sudo es que puedas darle privilegios de root (o del usuario X) a otro usuario para ejecutar cosas concretas (durante un tiempo de sesión limitado). Por ejemplo, podrías permitir a manolo crear bases de datos postgres como si fuera el usuario postgres (pero sin tener que darle las credenciales de postgres), pero no privilegios para borrarlas (que si tendrías si le dejas ser postgres).

El problema es que las distros directamente dan todos los privilegios de root a los usuarios administradores, lo cual, concuerdo contigo, es un error.

c

#58 (o del usuario X)

Eso me parece lo más interesante.

meneandro

#70 Es que es clave en todo este asunto. Sudo debería usarse para cosas como:

Soy el jefazo y tengo en mi home datos. Quiero que pepito extraiga mensualmente datos, pero no quiero que entre en mi home y tenga posibilidad de ver o manipular nada de lo que hay ahí. Así pues, me creo un script que saca sólo los datos necesarios para ese informe o lo que sea y con sudo le doy permisos a pepito sólo para ejecutar ese script como si lo hiciera mi usuario. Así él puede extraer esos datos de mi home sin acceder a mi home

Soy administrador web y necesito poder levantar y bajar el servidor web (cosa que sólo puede hacer root y el usuario administrador de web apache), así pues vía sudo me permiten ejecutar como apache los comandos para arrancar y parar.

Soy usuario de monitorización y sé que hay un server que está pasando por problemas porque se satura y hay que reiniciarlo. Sólo root puede reiniciar. Vía sudo, me han dado permisos para poder reiniciar el server (pero para nada más).

Me he creado un perfíl administrador de equipos, de manera que todos los que estén en el grupo puedan tener privilegios de acceso a ciertas rutas restringidas (/etc, por ejemplo), pero no puedan hacer ciertas operaciones (por ejemplo, cambiar los ficheros de configuración de redes)

Sudo permite cosas muy quirúrjicas y se usa para matar moscas a cañonazos.

anv

#58 Justamente. El sudo se creó para que un usuario pudiera ejecutar comandos con los privilegios de otro. Muchas veces el root quiere dejar de tener permiso para todo y convertirse en un usuario normal. Es muy útil.

Claro que a veces es útil que un usuario pueda, por ejemplo, hacer un backup que requiere permisos de root. En ese caso se permite al usuario sólo ejecutar ese comando como root.

Lo que es mala idea es permitir al usuario ejecutar cualquier cosa como root (como hace Ubuntu). Para eso le das la clave de root y listo.

meneandro

#72 ¿root? ¿o el usuario que usa root? porque para eso existen los demás usuarios. Lo normal es no acceder al sistema como root, y sólo en caso de tener que hacer algo de administración, entrar como root momentaneamente. Eso de "root necesita convertirse en usuario normal" es simple y llanamente hacer las cosas mal en algún punto.

O simplemente, ejecutar un script de otro usuario que lista datos, mientras todo ello está en su home, donde tú ni tienes permisos ni privilegios. Así, tú sigues sin tener permisos para entrar en su home, ni ver o manipular sus datos, pero puedes ejecutar el script que te saca sólo lo que él quiere que tú veas. No hace falta meter a root en estos berenjenales siempre, sudo es mucho más versátil y nadie parece saber usarlo bien.

Si, ese es el punto de sudo (aunque todo el mundo lo use mal). El punto de ubuntu, si no recuerdo mal, es que root no tiene password y la única forma que tienes de administrar el sistema es usando sudo (lo cual es un poco absurdo).

anv

#76 Eso de "root necesita convertirse en usuario normal" es simple y llanamente hacer las cosas mal en algún punto.
Ejemplo: estoy preparando un programa en php y quiero asegurarme de que va a poder leer determinado archivo. Entonces hago un su o un sudo para convertirme en usuario apache, y después intento un cat del archivo. Obviamente eso sólo se puede hacerse desde root porque el usuario apache no tiene clave para poder hacer su.

De todas formas tienes razón en que el sudo es muy versátil, pero en Ubuntu se lo usa muy mal porque permite al usuario hacer cualquier cosa y no comandos específicos.

meneandro

#80 Quizá porque apache no es un usuario normal, es un usuario administrador de un servicio, lo mismo que el usuario postgres. Aún así, tampoco me gusta eso de que haya que ser root para administrar una web o una base de datos. Con sudo, puedes tener permisos para "suplantar" esos usuarios y/o ejecutar comandos como esos usuarios de manera controlada y sin tener que ser root antes, que creo que es lo más seguro y lógico.

c

#36 root no necesita sudo para convertirse en usuarios con menos privilegios.

anv

#69 O lo hace con sudo o lo hace con su.

c

#73 Con su. Para eso no necesitas sudoers ni sudo para nada.

sillycon

#21 ya han contestado, pero hay más.
El sistema de permisos y grupos debería ser suficiente para asegurar el acceso seguro para cualquier tarea. Si necesitas hacerlo más granular usando sudo, posiblemente es un error de diseño. Son muy pocos los casos donde no hay otra opción.
Y meter sudo es añadir una superficie de ataque asin de grande, no solo por la aplicación en si, sino porque la gente no la usa bien.

En distros de escritorio es casi inevitable, porque el Unix no se diseñó para eso.

c

#47 Siempre puedes usar el suid

meneandro

#20 Simplemente hay que configurarlo bien. Lo que no se puede es usar sudo del mismo modo que su, lo que hay que hacer es configurar usuarios en sudoers para poder usar sólo comandos concretos (y evidentemente usar usuarios concretos para cosas concretas), de manera que si obtienen credenciales de alguno de tus usuarios de administración sólo puedan fastidiarte una parte y no todo el sistema.

Una regla muy recomendable es no permitir a ningún usuario al que le demos permisos acceso de escritura al /etc/sudoers...

sillycon

#56 "Una regla muy recomendable es no permitir a ningún usuario al que le demos permisos acceso de escritura al /etc/sudoers... ;)" que es justo para lo que viene el comando visudo.

Seguro que puedes hacer lo mismo con grupos sin añadir algo que puedes no configurar bien por error.

meneandro

#57 visudo es muy útil para evitar que más de un administrador editen simultaneamente el fichero y quede su integridad en riesgo, y parsea el fichero antes de guardarlo por si hay errores (no sea que lo guardes y luego con los errores no puedas usar sudo para nada) pero no para lo que tú dices.

Yo me refiero a que permitir modificar el /etc/sudoers a cualquiera y por lo tanto añadir los privilegios que le de la gana es básicamente darle la clave de root.

jonolulu

¿Para qué usar sudo pudiendo usar el usuario root?

WcPC

#1 ¿Para que cualquier aplicación que lances sea root?
Imagínate que lanzas una aplicación calculadora, si la lanzas como root esa aplicación puede hacer lo que quiera, si quiere hacer algo raro (por ejemplo encriptar el HD) te pedirá root y tu dirás... NI DE COÑA...

c

#17 Y por qué vas a lanzar la calculadora como root?

Eso no justifica la necesidad de sudo. Sin sudo: Te haces root+haces tu trabajo+sales de root....
Me parece simplemente comodidad.... si eres disciplinado.

WcPC

#62 Y puedes hacer lo que tu dices, pero entonces tienes que entrar y salir de root constantemente...
¿No es más simple usar un comando para no tener que estar constantemente con otra sesión de root abierta?
Más que nada porque eso puede darte problemas que confundas el usuario y lances una aplicación desde root.

c

#85 Normalmente, entras realizas tu tarea de administración y sales.

SalsaDeTomate

#1 Sí, malditos frikis y su obsesión con los usuarios y la seguridad. En vez de copiar la sencillez y confianza de Windows

M

#1 Es muy común que te interese ejecutar un único comando como root y es más practico hacerlo de una vez que hacer antes un login y luego un logout, también por seguridad de que se te olvide cambiar de usuario y ejecutes cosas como root que son poco seguras o cuando quieres meter un comando como root en algún script que ejecutes como usuario normal.

c

#41 su - y exit
No necesitas "login" y "logout"....

Si, tienes razón.

meneandro

#1 Porque, aunque todo el mundo lo use mal, sudo es muy útil y puede ser mucho más seguro que otras formas de autentificación de manera bastante fina:
-Porque puedes configurar sudo para dar privilegios a los usuarios que necesites (no necesariamente permisos de root, puede ser usado para suplantar otros usuarios, por ejemplo, el de administración de x).
-Porque una vez puesta la clave, te otorga los permisos durante algo de tiempo (pero te los quita automáticamente luego), de manera que si vas a ejecutar varias tareas seguidas no te pida varias veces seguidas la clave. Y además está controlado por sesión, de manera que aunque otra persona entre con ese mismo usuario, al estar en otra sesión no tiene mágicamente permisos extra; igualmente esto que es muy cómodo puede ser visto como un problema de seguridad, pero si alguien que usa sudo se va de su equipo sin bloquearlo antes, creo que el problema de seguridad en realidad tiene patas...
-Porque puedes configurar sudo para dar privilegios a esos usuarios pero sólo a comandos concretos, de manera que como mucho, se exponga a ser un problema de seguridad para eso en concreto y no para todo el sistema. Por ejemplo, podemos dar permisos a un usuario para monitorizar ciertos logs y reiniciar el servicio X, sin tener que darle más permisos de administración.

El problema es que las distros lo usan a discrección, dando a los usuarios acceso de administración a todo, realmente haciendo que a todos los efectos un usuario del sistema sea root (por eso mucha gente lo ve como si fuera un "reemplazo" del su y para nada lo es).

c

#53 SI, sudo es mucho más flexible...... para usuarios que tengan esas necesidades. Y es más seguro, pero únicamente porque asegura que ejecutas como root un único comando y que no lo haces "sin querer"

meneandro

#64 Para eso se usa "su -c '....' ". Sudo tiene un perfíl diferente.

anv

El artículo está muy mal explicado (o el que lo tradujo no entendió bien el problema). Dice esto:

bastaría con modificar el archivo sudoers para eludir dicha política de seguridad

Y eso no es ninguna vulnerabilidad. La función de sudo es justamente esa. El archivo sudoers no puede modificarse a no ser que ya tengas permiso de root.

El problema real es el siguiente: Cuando uno ejecuta comandos con sudo, no necesriamente solicita al sistema convertirse en root sino que se puede solicitar convertirse en otros usaurios también (a veces es útil para comprobar si las cosas funcionan con ese usuario).

Dentro de los parámetros de sudo, en lugar de usar el nombre de un usuario se puede indicar el id (un número que lo identifica internamente). El fallo consiste en que si se especifica -1 o 4294967295, el programa lo convierte en 0, que es el id del usuario root.

¿En qué nos afecta esto? En el 99% de los casos en nada, porque sólo es importante cuando se ha configurado sudo para permitir la ejecución de un programa en particular y no todo como es lo usual. A demás, el uso extensivo de sudo es cosa de Ubuntu, Debian y derivados. Otras distribuciones no usan sudo para eso sino una clave separada para root.

Cabe aclarar también que, como es usual en el softwar libre, la vulnerabilidad ya ha sido corregida (versión 1.8.2) apenas se sido corregida y está en cada distribución incluirla en sus actualizaciones.

c

El artículo es una mierda pinchada en un palo. Voy a leer HackerNews a ver si aclara algo.

"ejecutar comandos con acceso raíz," ---- hay que joderse..

thingoldedoriath

#61 Sí. Y ya viene siendo una norma en los que publica Gembeta.

Voy a tomar como norma votar negativo (errónea o sensacionalista) este tipo de artículos; aunque algunos usuarios de MNM puedan entender que con ello intento ocultar "información que deja en mal lugar a los OS del tipo Linux

D

#3 Me largo otra temporada. Ya nos veremos

D

#5 prueba ansible.

eboke

Yo sudo, uso Windows

RocK

Ya han puesto la nueva version de sudo en el repositorio de Manjaro.

insulabarataria

Pero... Si para modificar sudoers necesitas ser root (o hacer sudo)... No entiendo cual es la vulnerabilidad.

jonolulu

#2 Prueba

sudo u#-1 I'd -u
sudo -u#4294967295 id -u

Magia!

En la primera línea falta un - antes de la u, que sino el editor de menéame lo interpreta como un tachado

D

#4 Menéame no tacha espacios. - ejemplo-

D

#4 lo he probado en una debian 6.0. (por ver el alcance en el tiempo de la vulnerabilidad) y no funciona.

$ sudo -u#4294967295 id -u
[sudo] password for test:
test is not in the sudoers file. This incident will be reported.

$ cat /etc/debian_version
6.0.10

si añado el usuario test a sudoers para ejecutar alguna orden, por ejemplo

test ALL=(root) NOPASSWD: /usr/sbin/service

tampoco funciona

$ sudo -u#4294967295 id -u
[sudo] password for test:
Sorry, user test is not allowed to execute '/usr/bin/id -u' as #4294967295 on xxxxxx.

SalsaDeTomate

#4 No me va, se debe haber actualizado ya

anv

#4 Mira, la magia de no usar ubuntu y derivados con su incorrecto uso de sudo:

c

#2 Se supone que sudoers lo modifcó el administrador y que lo hizo correctamente. El fallo permite ejecutar comandos no previstos como root en determinadas configuraciones de sudoers (que permiten impersonarse como cualquier usuario salvo root)

insulabarataria

#65 si, lo explicaron un poco más arriba y lo entendí. No lo pillé a la primera y por eso me extrañaba.

s

Suena demasiado a puerta trasera metida por un desarroyador, no se

Umm ¿hay la lista de nombres de los desarrolladores de.las versiones de sudo afectadas?

jorchube
s

#14 tienes razón, parece mantener en el.mismo usuario que escribe la orden... Umm

gualtrapa

#13 Un desarroyador, ¿es uno que se dedica a desecar arroyos?
Vale, ya me cayo

s

#46 jiji perdón

Katsumi

Esto no puede pasar, porque al ser código libre hay miles de ojos expertos mirando y por tanto cualquier vulnerabilidad habría sido corregida al instante y blablablabla

anv

#22 Por eso es que el problema ha sido descubierto y ya está solucionado. Si se tratara de un sistema cerrado el error permanecería ahí tal vez para siempre.

sillycon

#35 o hasta el 0day correspondiente

Katakrok

Como saber la versión de sudo que tengo?
(Si, ya lo he buscado y todas las respuestas son sobre ¿Como saber la versión de linux que tengo?)

Como actualizar sudo a la última versión?
Como la anterior

Uno se acostumbra a la gran laguna de linux, quien da la información SIEMPRE sobre entiende que todo el que la la lee la la entiende y sabe buscar soluciones.

RocK

#10 abre el gestor de paquetes/software y busca sudo para saber la versión y si hay actualizaciones:

anv

#10 Hay verias formas. Por ejemplo ejecutas sudo --version
O puedes mirar en tu gestor de software qué versión del paquete tienes instalada.

meneandro

#10 sudo --version

Normalmente GNU (¿posiblemente para ser posix compliant?) tiene estandarizados ciertos parámetros que funcionan para todos los comandos, como por ejemplo:
--help
--version

Katakrok

#54 Gracias por la info, ya soy abuelo y a ciertas cosas no llego y las búsquedas en la web no son tan claras, entiendo que puede ser algo muy básico, pero una búsqueda simple en la web no daba respuestas adecuadas, tampoco tengo tiempo para meterme en el blog de Linux Mint y molestar por esta chorrada en su chat me daba corte.
Gracias, buena explicación.

p

llevo win así que me la suda.

Mochuelocomun

#8 para una vez que no te afecta...