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
- El atacante puede obtener el digest de un archivo que no puede leer.
- El contenido pertenece a un espacio de candidatos abordable.
- Se conoce la representación exacta, incluidos saltos de línea y codificación.
- 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
- CWE relacionada: CWE-200, Exposure of Sensitive Information
- CWE facilitadora: CWE-521, Weak Password Requirements
- Impacto principal: validación fuera de línea de secretos de baja entropía