1. Descripción técnica
Esta escalada aparece cuando un usuario puede modificar un script, binario, archivo JAR o módulo que otra identidad ejecutará con mayores privilegios. La ruta autorizada puede ser fija y el intérprete puede ser legítimo; el límite de confianza falla porque el contenido situado en esa ruta no está protegido con el mismo nivel que su ejecutor.
El disparador puede ser manual mediante sudo, una tarea de cron, una aplicación web o un servicio. Es necesario identificar tanto el archivo controlable como el proceso que lo consumirá.
1.1. Mecanismo
// renderizando diagrama…
2. Impacto
El atacante obtiene las capacidades de la identidad que ejecuta el archivo. Puede ser movimiento lateral a otro usuario o escalada a root. Si el disparador es periódico, también puede existir persistencia hasta que se corrijan permisos y contenido.
3. Condiciones necesarias
- El atacante tiene escritura directa o puede reemplazar el archivo.
- Una identidad más privilegiada ejecuta o importa ese contenido.
- La ejecución ocurre después de la modificación.
- No existe una validación de integridad que impida usar el contenido alterado.
Ser propietario del directorio puede permitir reemplazar un archivo aunque el archivo individual no parezca escribible. Por eso se revisan ambos permisos.
4. Validación y detección
Se combinan dos evidencias: permisos efectivos sobre la ruta y un disparador documentado. Un archivo 777 sin consumidor privilegiado no demuestra escalada; una tarea de root que ejecuta un archivo protegido tampoco permite controlarlo.
La detección defensiva debe inventariar scripts de cron, servicios, reglas de sudo, rutas de despliegue y dependencias cargadas por procesos privilegiados.
5. Explotación documentada en los writeups
5.1. 004-flower
rose puede modificar .plantbook, mientras una regla permite que root lo interprete mediante Bash.
5.2. 013-xmas
El flujo web ejecuta un script Python escribible como alabaster. Después, un JAR reemplazable conserva la ruta exacta autorizada por sudo y Java ejecuta su nuevo contenido como root.
5.3. 015-insomnia
start.sh es modificable y se ejecuta como julia mediante sudo. Luego check.sh, también escribible, es interpretado periódicamente por root desde cron.
6. Mitigación
- Limitar escritura al propietario administrativo del proceso.
- Proteger también los directorios padre contra reemplazo y renombrado.
- Separar datos controlables de scripts, módulos y artefactos ejecutables.
- Verificar propietario, permisos e integridad antes de una ejecución privilegiada.
- Evitar rutas en homes de usuarios para comandos ejecutados por root.
- Monitorizar cambios en scripts de cron, unidades de servicio y artefactos autorizados.
7. Clasificación
- CWE: CWE-732
- Vector: modificación de un recurso crítico antes de su ejecución
- Impacto: ejecución con la identidad del consumidor privilegiado