cd ~/blog

~/vulns/sudo-allowed-program-abuse.md

Sudo-Allowed Program Abuse

privescautor: Jordy Pérez Osorio aviso legal
linuxsudoprivilege-escalation

~2 min de lectura


1. Descripción técnica

Una regla de sudo puede parecer limitada a un programa concreto y aun así delegar capacidades equivalentes a una shell, lectura arbitraria o ejecución de procesos. El problema no está en sudo como producto, sino en autorizar una herramienta cuya interfaz permite escapar del propósito previsto. El mismo análisis se aplica a políticas equivalentes de doas: cambia el mecanismo de autorización, pero el programa hijo conserva las capacidades de la identidad objetivo.

La revisión debe abarcar todo el comportamiento alcanzable: subórdenes, editores, pagers, archivos de configuración, plugins, comandos externos, rutas de entrada y programas hijos.

1.1. Mecanismo

// renderizando diagrama…

2. Impacto

La consecuencia puede ser una shell como root, movimiento lateral a otra cuenta o lectura de un archivo protegido. NOPASSWD facilita la explotación, pero una regla peligrosa sigue siéndolo cuando solicita una contraseña que el usuario conoce.

3. Condiciones necesarias

  1. El usuario puede ejecutar la herramienta con una identidad más privilegiada.
  2. Los argumentos permitidos alcanzan una función secundaria útil.
  3. Esa función se ejecuta dentro del proceso privilegiado o crea un hijo que hereda sus credenciales.
  4. Las restricciones de entorno, ruta y argumentos no bloquean la variante utilizada.

4. Validación y detección

sudo -l muestra reglas efectivas para la cuenta. Cada regla se analiza con la versión instalada y la sintaxis realmente permitida. No se debe asumir que una receta genérica funciona si el patrón de argumentos es distinto.

En administración, las reglas deben probarse como políticas completas. Autorizar un binario por su nombre no limita las operaciones internas que ese binario ofrece.

5. Explotación documentada en los writeups

5.1. Editores, pagers y clientes interactivos

5.2. Subórdenes y configuración

  • 008-first carga una configuración de Neofetch con código Bash.
  • 011-warrior usa task execute para iniciar un programa.
  • 016-method usa ip netns exec como lanzador de procesos.

5.3. Lectura y contenido sustituible

  • 009-hotel usa wkhtmltopdf --post-file para leer y enviar una clave de root.
  • 013-xmas reemplaza el JAR situado en la ruta autorizada.

5.4. Variante con doas

  • 059-decode autoriza cp como ajneya y permite instalar un authorized_keys controlado en su home.

6. Mitigación

  • Autorizar comandos mínimos diseñados para una sola operación.
  • Restringir argumentos y rutas, considerando opciones equivalentes y enlaces.
  • Evitar herramientas interactivas, intérpretes, editores y programas con plugins.
  • Proteger todos los archivos que el comando privilegiado cargará o ejecutará.
  • Aplicar NOEXEC sólo como defensa secundaria, porque no cubre todas las formas de ejecución.
  • Registrar y revisar periódicamente las reglas efectivas.

7. Clasificación

8. Referencias y conexiones

// relacionados