cd ~/blog

~/vulns/privileged-hash-oracle.md

Privileged Hash Oracle

miscautor: Jordy Pérez Osorio aviso legal
cryptographyoracleprivilege-escalation

~2 min de lectura


1. Descripción técnica

Un Privileged Hash Oracle aparece cuando un usuario que no puede leer un archivo sí puede solicitar que un proceso privilegiado calcule y revele su digest. El hash no permite reconstruir contenido arbitrario, pero funciona como verificador cuando el espacio de candidatos es reducido o predecible.

La debilidad combina una diferencia de privilegios con baja entropía del secreto. Si el archivo contiene datos aleatorios extensos, comparar un diccionario no resulta viable; si contiene una contraseña débil, cada candidato puede transformarse exactamente como los bytes del archivo y validarse fuera de línea.

1.1. Mecanismo

// renderizando diagrama…

2. Impacto

Puede revelar contraseñas, tokens de baja entropía o valores elegidos de un conjunto pequeño. No concede lectura general del archivo ni demuestra que cualquier digest sea reversible.

3. Condiciones necesarias

  1. El atacante puede obtener el digest de un archivo que no puede leer.
  2. El contenido pertenece a un espacio de candidatos abordable.
  3. Se conoce la representación exacta, incluidos saltos de línea y codificación.
  4. El valor recuperado sigue siendo útil para autenticación u otra operación.

4. Validación y detección

Se comparan permisos de lectura con reglas sudo, servicios o APIs que calculan hashes. La prueba debe incluir un archivo controlado para confirmar cómo trata saltos de línea y bytes. Un digest visible sin un conjunto viable de candidatos es exposición de información, pero no demuestra recuperación práctica.

5. Explotación documentada en los writeups

5.1. 056-wmessage

md5sum se ejecuta como root sobre ROOTPASS. El digest se compara con candidatos de rockyou incluyendo el salto de línea final y permite recuperar la contraseña.

6. Mitigación

  • No autorizar herramientas de hashing privilegiadas sobre rutas elegidas por el usuario.
  • Restringir archivos y argumentos mediante un wrapper mínimo.
  • Usar secretos aleatorios y de alta entropía.
  • Evitar almacenar contraseñas reutilizables en archivos de texto.
  • Registrar consultas de digest sobre archivos sensibles.

7. Clasificación

8. Referencias y conexiones

// relacionados