Hace 3 años | Por menjaprunes a blog.qualys.com
Publicado hace 3 años por menjaprunes a blog.qualys.com

Un fallo que lleva 10 años escondido a simple vista permite ejecutar código como otro usuario usando sudo. En la mayoría de configuraciones por defecto esto implica poder escalar privilegios a root

noexisto

La que está liando el unicode con los emoticonos roll

D

Muy fea esta vulnerabilidad. Por suerte es complicada en remoto, porque primero hay que pasar el filtro del SSH y/o firewall, pero con la cantidad de sistemas conectados de cualquier manera a internet, vamos a tener risas los próximos meses.

Idomeneo

#1 No sé si lo pillo. ¿Es una referencia a CVE-2018-15120?

editado:
Bueno, creo que sí lo pillo: Que siguen saliendo vulnerabilidades "de las de toda la vida" sin ser por culpa de tecnologías "nuevas" (como unicode).

D

#1 #3 Unicode no es nueva ni mucho menos. Por cierto, ojalá doas triunfe sobre sudo.

a

Iba a buscar algún comentario que dijera que el titular le suena a chino, pero ya veo que en Menéame, el paraíso de los informáticos, el friki y el raro soy yo

noexisto

#3 Era una referencia a “in theory, however, no command-line argument can end with a single backslash character..” pero básicamente para animar a comentar

V

#5 Me ha encantado tu comentario porque venía por el mismo motivo. ¿Alguien podría explicarnos por qué ese fallo es tan importante? Como si fuese de letras, por favor.

Idomeneo

#4 Lo sé, por eso he puesto "nueva" entre comillas.

noexisto

#4 pero eso es para BSD, no?

c

#2 Quien usa sudo?

menjaprunes

#14 por lo visto ni el Tato

llorencs

#10 doas? La primera vez que lo veo. En que se diferencia de sudo?

llorencs

#14 Todo dios?

D

#16 Más simple, tanto en uso como sintaxis de configuración.

a

#13 pequeño detalle: sudo (al menos en debian) no pide la contraseña del usuario root, pide la contraseña del usuario actual.

d

#19 Cierto. En Ubuntu yo meto la del usuario actual, pero coincide con la de root así que no había reparado en ese detalle

hexion

#14 Mucha gente. Y aunque no lo uses directamente, si tienes un sistema Linux (o incluso algunos Unix) es probable que venga instalado por defecto y por lo tanto sea vulnerable.

D

Ejecutando los dos ejemplos da error.
malloc(): corrupted top size
Avortat (s'ha bolcat la memòria)


double free or corruption (out)
Avortat (s'ha bolcat la memòria)


El sudo sin actualizar, por cierto. Miro las actualizaciones y el sudo está para actualizar.

Lito

#21 no tiene mucha lógica que tengas que meter la contraseña de root ya que entonces todos los usuarios con algún permiso en sudo tendrían directamente la contraseña de root y podrían ser root en su totalidad. Incluso ahora ya es raro que en sistemas remotos root tenga siquiera contraseña.

d

#24 Me debe estar funcionando porque meto la del usuario actual. Cada vez me pregunto menos el porqué de las cosas cuando funcionan

D

#23
Tras actualizar:
usage: sudoedit [-AknS] [-r role] [-t type] [-C num] [-g group] [-h host] [-p
prompt] [-T timeout] [-u user] file ...

e

En Ubuntu la actualización la ya está disponible problems resuelto

Pichaflauta

#5 yo sé que sudo es superusuario en linux y root es raiz, y permite es un verbo. Y para de contar jaja

ochoceros

#7 SUDO es como si trabajases en una gran compañía y cada vez que llames a alguien para pedir algo, a este le salga el identificador del número del dueño de la empresa y oiga su voz en lugar de la tuya.

ruinanamas

#14 Yo, de toda la vida, mala praxis? Quizás por desconocimiento visto los comentarios. Alguien explica porqué no usarlo?

arturios

#2 a mi me acaba de decir debian que lo actualice al ser una actualización de sistema crítica, me ha llamado la atención y ahora esta noticia.

Añado: q4os, un derivado de debian, también, a ver la raspi...

arturios

#14 cualquiera que use linux.

Ed_Hunter

#19 Eso es totalmente configurable, puedes hacer que pida la contraseña del usuario, la de administrador o ninguna, y puedes configurar las ordenes que se pueden ejecutar mediante sudo, qué usuarios pueden usarlas y en qué condiciones puede hacerse.

arturios

#31 mala praxis no, y menos para un usuario doméstico, pero un usuario normal en un entorno laboral no debería tener permisos de sudo, que para eso le pagan al admin.

freelancer

Que sería de nosotros sin sudo
https://imgs.xkcd.com/comics/sandwich.png

Poignard

#18 más simple que sudo?
sudo "hazme un sandwich"

a ver si puedes hacer eso doas

Poignard

#14 quien usa sudo?? en serio?

M

¿Recordais cuando en meneame las noticias eran casi todas asi con alguna salpicada de politica o similar? ains, que buenos tiempos....me hago viejo

frg

#4 "doas" no es un sustituto de sudo. En entornos sencillos, puede que sea la alternativa. En entornos mínimamente complejos, con varios usuarios y una alta granularidad, no te queda otra que usar sudo.

frg

#14 ¿Quien no usa sudo?

frg

#35 ¿Y como te crees que el admin consigue permisos de administración para gestionar los sistemas?, ¿y como crees que el admin deja al usuario X rearrancar un aplicativo, tras algún cambio?

pawer13

#11 por completar un poco más: viene a ser la abreviatura de "superuser do". El usuario root (raíz) es también llamado administrador o superusuario

frg

#38 ¿En serio?, ¿quien no lo usa? En entornos mínimamente complejos, todo tiene sudo.

c

#33 Yo no.
Ni casi nadie que use Debian. No es necesario para nada.

Los Ubunteros son otra cosa...

su - & work & exit

c

#22 No en Debian.

c

#17 No. Dios no usa sudo.

llorencs

#47 Bueno, pero el resto de los mortales usa sudo para convertirse en dios A dios no le hace falta porque ya es dios

Me dirás que tú no usas sudo para administrar tu máquina?

c

#40 Vaya que no.....
En esos entornos es donde sudo es peor idea.

su -
work
exit

limondelcaribe

#27 Y esa es una de las magias de Linux

c

#42 sudo es útil para casos concretos muy específicos.

El sistema lo gestiona el administrador. En Linux es root.

Que el usuario X pueda parar y reiniciar servicios es una idea pésima. Y que necesite ser root para arrancar y parar aplicaciones es una idea aún peor.

c

#32 Debian por defecto no trae sudo

limondelcaribe

#19 sudo su

mr_x

#18 Te puedo comprar que tenga un lenguaje más “natural”, pero configurar sudo es bastante simple...

https://geekland.eu/configurar-sudo-en-linux/

frg

#51 Que el usuario X gestione el arranque y reinicio de algunos servicios es lo normal, y que muchos servicios se arranquen como root (a ver como te crees que funcionan los scripts de systemd o los que se encuentren en /etc/init.d), es también lo normal.

En cualquier entorno mínimamente complejo tienes sudo a patadas, y no solo para ejecutar tareas como root, sino también para tareas que se hacen con un usuario diferente al que te logeas.

D

#11

Has dicho UNIX en lugar de Linux ... tú vas a ser de una edad ya respetable.

P.S. Yo empecé a currar con UNIX y XENIX (y luego con SunOS, Solaris y HP-UX) antes de que hubiera Linux.

sillycon

Lo he dicho anteriormente, precísamente en la anterior vulnerabilidad (CVE-2019-14287).
Sudo es peligroso, hay que evitar utilizarlo siempre que sea posible, y si es imprescindible hay que configurarlo con mucho cuidado. Es una superficie vulnerable justo donde es más peligroso.
La diferencia es que la anterior vulnerabilidad era jodida de explotar ya que había que tener el sudo configurado de una forma muy peregrina que no tenía nadie, pero esto es un desbordamiento de buffer de toda la vida.
Yo vivo bastante bien sin sudo en la mayoría de mis sistemas. Un uso cuidadoso de los usuarios, permisos y grupos es suficiente el 95% de los casos. Incluso el sticky bit es menos peligroso.

c

#55 Que el usuario X gestione el arranque y reinicio de algunos servicios es lo normal

Servicios como cuales?

que muchos servicios se arranquen como root

Claro. Pero esos servicios solo los debe administrar el administrador.

En cualquier entorno mínimamente complejo tienes sudo a patadas
Pues en mi sistema no está. Y administro una red de más 300 equipos con todo tipo de servicios, muchos de ellos virtualizados.

no solo para ejecutar tareas como root
Para realizar tareas de administración lo mejor es SER el administrador

tareas que se hacen con un usuario diferente al que te logeas.
Si quieres hacer tareas con un usuario diferente solo se justifica si eres administrador. Y si eres administrador puedes convertirte en el usuario que desees.

sudo tiene su utilidad. Pero es mucho más específica y mucho menos general de lo que la gente piensa.

c

#48 No. No lo uso.

Cuando yo administro mi máquina soy Dios. No un sucedáneo.

c

#19 Es que si pidiera la contraseña de root pasaría de ser una herramienta prescindible a una herramienta inútil.

c

#24 En sistemas remotos root no debe permitir el acceso.

Pero una vez dentro con un usuario sin privilegios puedes adquirirlos cuando los necesites.

c

#29 Mis diez.

+10

m

#45 con sudo puedes limitar los privilegios y lo que permites ejecutar, con su - no. Para el PC de casa vale, para la empresa no.

c

#53 ¿Por qué no solo su ?

Eres de esos que tiene el administrador deshabilitado ???

c

#36 Estaría bien poder cambiar el "Ok Google" por "sudo".... lol lol lol lol lol

llorencs

#59 Pero por ejemplo algunos sistemas operativos como Ubuntu ni siquiera implementan root. Lo tienes que activar.

En la Raspberry, lo mismo. Root no exist a menos que lo habilites. Es decir, la tendencia de las distros es que se use sudo.

c

#63 Claro que vale para la empresa. Lo que es una locura es estar autorizando usuarios con sudo.
Eso es un síntoma de administración negligente.

El uso de sudo debería ser muy puntual y específico, no "para administrar". Para administrar está el administrador.

El administrador SOLO debe administrar. Un usuario NUNCA debe administrar. Ni sudo ni leches.

No todo es Ubuntu en la vida.

c

#66 TODOS los sistemas tienen root. Otra cosa es que no tengan la contraseña habilitada.

Y si, es Ubuntu. Que le vamos a hacer.
Y raspberry.
Y algunos otros.

Sobre todo, sistemas domésticos. Y NO. La tendencia no es "a que se use sudo".

m

#67 No todo es root o usuario plano, a veces necesitas que un usuario "operador" pueda ejecutar 3 comandos específicos con privilegios, pero nada más, no necesita ser root. Eso lo puedes hacer con sudo, y nadie ha dicho que lo apliques al usuario juanperez, sino a operador01.

garabullo

#39 Barrapunto...

Far_Voyager

#11 Imagino que si uno es el único usuario no debería haber demasiados problemas si sudo se usa sólo para actualizaciones e instalaciones de progrsmas desde la terminal.

c

#69 Puntualmente. En casos muy especiales. A veces en situaciones determinadas y para tareas muy específicas.

Pero generalmente, sudo es completamente innecesario e incluso inconveniente (sobre todo si le das a un usuario TODOS los privilegios que es lo más habitualmente se hace)

p

A veces hay que lanzar comandos como otros usuarios www-data, por ejemplo. Ahí lo uso bastante. Aunque, como root, no sé muy bien la diferncia entre hacerlo así o lanzar: su www-data -c "lo que sea"

Poignard

#44 no has entendido mi tono.... no ves que le contesto a uno que está preguntado lo mismo

meneandro

#4 #31 El problema de sudo es que viene muy mal configurado por defecto (hacer que un usuario administrador sea directamente root es un peligro en si mismo; lo suyo es darle permisos específicos para cosas específicas a usuarios específicos según sus necesidades... si quieres permitir ser root aun usuario, permítele hacer sudo su root y listos).

En realidad sudo es muy modular y muy fino y bien configurado muy seguro.

noexisto

#14 Yo pero me avergüenzo y nunca reconoceré haberlo escrito

noexisto

#20 Zemos los mejores. Ole!

meneandro

#13 sudo es "su do", sustituye/suplanta temporalmente un usuario y luego hace lo que sea como si fuera ese usuario. Para nada es un "super user do" porque es genérico (igual que suplantas root puede configurarse para suplantar apache, administrador, paquito o el usuario que sea).

Otra cosa es que por defecto en muchas distros venga configurado para suplantar a root, pero eso es una fuente de problemas de seguridad y por eso muchos desaconsejan su uso.

noexisto

#29 Creo que solo en 2-3 ocasiones en 15 años habré creado un root es escritorios míos y me apabulla la cantidad de nuevos linuxeros que lo preguntan y/o se mosquean cuando se les pregunta ¿para qué? no sé, igual vienen de android

meneandro

#57 No es peligroso de por si (salvo vulnerabilidad como esta), es su (en general) configuración por defecto de suplantar a root con todos sus poderes la peligrosa.

frg

#58 ¿Solo los debe administrar el administrador? lol

En sistemas medianamente grandes, tienes un montón de gente administrando aplicativos, y hay que gestionar infinidad de excepciones, para que no todo el mundo sea administrador, y para tener un seguimiento de las tareas que se hacen como tal.

sudo es una herramienta con multitud de aplicaciones, y mucho menos específica de lo que crees. Si el aplicativo "tal" necesita acceder a cierto comando como root, se le genera una regla en el sudoers para dicho aplicativo, que el usuario X tiene que realizar tareas con el usuario de aplicativo Y, se genera regla, que la utilidad de monitorización que funciona con su usuario tiene que mirar un comando con un usuario determinado, se genera regla, ..., y así hasta la nausea.

frg

#74 Nop, no te he escuchado con claridad. Será que te expresas con la mascarilla puesta, o que tengo el volumen del sonotone bajo.

c

#81 En sistemas medianamente grandes, tienes un montón de gente administrando aplicativos
Las aplicaciones NO se deben ejecutar con permisos de administración ni deben necesitarlos para funcionar. Y mucho menos en "sistemas medianamente grandes"

Dime ejemplos de esos "aplicativos" que necesitan "root" para ser administrados.

sudo es una herramienta con multitud de aplicaciones, y mucho menos específica de lo que crees
sudo es una herramienta que se le puede dar un "uso general" pero que cualquier persona con dos dedos de frente solo la utilizaría para propósitos muy específicos, sobre todo en sistemas "medianamente grandes".

Si el aplicativo "tal" necesita acceder a cierto comando como root
Pues entonces o es una mierda de aplicativo, o es un aplicativo que SOLO debería gestionar el administrador.

Dame un ejemplo.

Poignard

#82 o que eran las 7 de la mañana y todavía no te regaba bien la almendra, vete tu a saber

frg

#83 ¿Rearancar un apache o cualquier aplicación que escuche en un puerto privilegiado te parece que no necesita root?, ¿gestionar las páginas estáticas de un servidor web, por ejemplo, lo tiene que hacer un administrador?, si en la máquina quieres saber quien se conecta, cada usuario que gestione cualquier cosa tiene su usuario, y luego usa sudo para realizar tareas con el usuario del aplicativo, ¿esto solo lo puede hacer el administrador?

No se que máquinas gestionas, pero en cuanto tienes equipos de más de una persona, y necesitas un mínimo de control, sudo es la solución.

frg

#84 No descarto ninguna de las dos opciones. La edad, el alcohol y las drogas no perdonan

hexion

#46 No he dicho que todas lo lleven por defecto. Pero incluso cuando no viene por defecto está en los repos y hay gente que lo usa.
Yo lo usaba hasta el OpenSolaris por ser más configurable que pfexec, no te digo más.

c

#87 No lo dudo.

c

#85 Rearancar un apache

Tarea del administrador. Un usuario jamás tendría por qué rearrancar el apache.

o cualquier aplicación que escuche en un puerto privilegiado

Ninguna aplicación de usuario debería escuchar en un puerto privilegiado. Por eso se llaman "puertos privilegiados"

¿gestionar las páginas estáticas de un servidor web, por ejemplo, lo tiene que hacer un administrador?
Para eso no se necesita sudo para nada. Están los permisos y las ACL

si en la máquina quieres saber quien se conecta,
Eso solo le interesa al administrador

cada usuario que gestione cualquier cosa tiene su usuario
A qué le llamas "Cualquier cosa" ?

sudo para realizar tareas con el usuario del aplicativo
No he negado la utilidad de sudo para tareas muy específicas y concretas. Si como herramienta para administrar.

No se que máquinas gestionas, pero en cuanto tienes equipos de más de una persona, y necesitas un mínimo de control, sudo es la solución.
Es justo en esos entornos en los que sudo es un PROBLEMA en lugar de una solución. Muchas veces es una ñapa para mantener equipos administrados de modo negligente.

Que el programador de una web necesite sudo para modificar o actualizar código de su web es un ejemplo claro. Eso es una barbaridad.

snkarcade

#66 Exactamente. Por ejemplo Manjaro, KDE Neon o Ubunta MATE, que son las que uso actualmente.

Idomeneo

#14 Tú estás pensando "¿quién usa sudo en el escritorio?" y efectivamente, es estándar en Ubuntu y no lo es en Debian.

Pero si miramos más allá del escritorio, sudo es la forma estándar de administrar un sistema remoto en algunos servicios en la nube. Por ejemplo, cuando creas una máquina virtual con Debian en Google Cloud, tienes que poner un usuario normal al que accedes mediante ssh con clave pública, y ese usuario puede convertirse en root usando sudo sin contraseña.

Cuando tienes cientos o miles de máquinas, esa es la forma en la que luego herramientas como ansible te permiten ser root en todas esas máquinas sin volverte loco.

frg

#89 ¿Programador? Sigo diciendo que no se en dónde has trabajado, pero intuyo que en sitios muy pequeños.

Si tienes multitud de máquinas, y tienes a varios equipos (BBDD, aplicaciones web, middleware, ...) trabajando, no todo lo hace el administrador, y no todos los que tienen que trabajar en las máquinas tienen que ser administradores de todo.

P.D.: Los programadores no huelen las máquinas.

snkarcade

#64 Muchos no necesitamos habilitar la cuenta root. Con un usuario y el comando antes escrito, das permiso a tu usuario a usar los permisos de root con tu cuenta . Luego das exit y vuelves a tu cuenta normal.

(Siempre hablando en entornos de escritorio, no empresarial, claro)

D

#11 Mi duda es, si entran como usuario apache o www-data que no suele tener sudo aplicado, es un FE web, y ejecutan esto, podrían tener acceso como root a todo el sistema, no? Por lo tanto "un fallo tonto" no creo que sea...

t

#58 Estas hablando de tu caso concreto y de tus costumbres, pero casos de uso hay muchos y muy variados, sobre todo cuando hablamos de sistemas. En todos los sabores de unix el uso de sudo es un standard, mientras que acceder al sistema como root y trabajar normalmente como ese usuario está totalmente desaconsejado, y se hace así por razones muy bien fundadas y documentadas al alcance de todo el que se quiera informar sobre ellas.

arturios

#52 no recuerdo haberlo instalado y la iso de debian era oficial y comprobada la suma, o igual si, a saber, el caso es que lo uso todos los días que quiero instalar algo y no me apetece perder el tiempo con synaptic.

Idomeneo

#94 Efectivamente el caso que dices no es un fallo tonto para nada.

Si por la razón que sea alguien logra entrar como www-data (normalmente no se puede), es una cagada gorda, y si combinas eso con el fallo de sudo, entonces la cagada es completa.

Cuando decía "fallo tonto" estaba hablando sobre todo de un sistema de escritorio típico, donde el único usuario eres tú y no ofreces servicios al exterior (no tienes puertos abiertos en el router, etc).

c

#96 No, sudo no viene configurado en debian.

c

#95 también es un standard el uso de rm.....

Y cuidado con él.

acceder al sistema como root y trabajar normalmente como ese usuario está totalmente desaconsejado,
Por supuesto. Es una locura. Nadie en su sano juicio hace eso:
su - & administrar & exit

Un ejemplo: Tienes al usuario juan con el que te conectas alegremente por ssh (porque como root no puedes) y luego una vez conectado usas sudo para hacer tareas de administración.....

Que ocurre si la contraseña de juan se ve comprometida ?????
Ocurre que pierdes el control de tu máquina, porque de facto, juan ES root.

No es una "cuestión de costumbres", hay constumbres más seguras, menos seguras y temerarias.

c

#93 das permiso a tu usuario a usar los permisos de root con tu cuenta

EXACTO. Y eso es un problema. Que pasa si alguien tiene conocimiento de la pass de ese usuario ?????
Encima puede conectarse remotamente....

sudo no necesita exit.... a no ser que uses sudo para hacer sudo bash, lo cual ya es el colmo de los despropósitos.

1 2