1. Descripción técnica
Una TOCTOU Race Condition ocurre cuando un proceso comprueba una propiedad de un recurso y lo utiliza más tarde, pero no garantiza que siga siendo el mismo recurso ni conserve el estado validado. Otro proceso puede modificarlo durante esa ventana.
No basta con observar dos operaciones separadas. La técnica es explotable cuando el atacante puede influir en el recurso entre la comprobación y el uso, y el segundo paso se ejecuta con una capacidad que el atacante no posee.
1.1. Mecanismo
// renderizando diagrama…
2. Impacto
Según la operación privilegiada, el resultado puede ser lectura o escritura arbitraria, ejecución de código, modificación de permisos o escalada a root. La fiabilidad depende de la duración de la ventana y de cuántos intentos puedan realizarse.
3. Condiciones necesarias
- Hay una separación temporal entre comprobación y uso.
- El recurso permanece bajo influencia de una identidad menos privilegiada.
- El paso de uso tiene mayor autoridad o acceso.
- El atacante puede sincronizarse o repetir intentos suficientes.
4. Validación y detección
Se reconstruye el orden real con trazas de procesos y operaciones de archivos. La prueba debe demostrar que el recurso cambia después de la validación y antes del uso, no solo que un directorio es escribible.
En código se buscan secuencias como stat seguido de open, comprobaciones de propietario seguidas de ejecución y archivos temporales predecibles.
5. Explotación documentada en los writeups
5.1. 030-friendly3
Una tarea de root descarga /tmp/a.bash, habilita escritura y lo ejecuta después. Un proceso de juan reemplaza el contenido durante esa ventana.
5.2. 031-roosterrun
backup.sh copia y valida tareas antes de que run-parts consuma el directorio. El nombre cambia entre esas etapas y evita que la validación represente el objeto finalmente ejecutado.
6. Mitigación
- Abrir el recurso una vez y operar sobre el descriptor resultante.
- Crear temporales con nombres impredecibles y permisos restrictivos.
- Evitar directorios compartidos para artefactos privilegiados.
- Usar una operación atómica cuando la plataforma lo permita.
- Revalidar identidad, propietario y tipo justo antes del uso si no existe una primitiva atómica.
7. Clasificación
- CWE: CWE-367
- Vector: modificación concurrente de un recurso compartido
- Impacto: operación privilegiada sobre un objeto distinto al validado