Mastodon Mastodon Mastodon Mastodon

Use-after-free [UAF]

Actualizado: · CyberSecureFox Editorial Team

Una vulnerabilidad use-after-free (UAF, uso después de liberar) es un fallo de seguridad de memoria en el que un programa sigue usando una zona de memoria después de haberla liberado.

Cómo funciona un use-after-free

En C y C++, un programa reserva memoria para un objeto, la usa y más tarde la libera. Si algún fragmento de código conserva un puntero a esa memoria —un puntero colgante— y vuelve a utilizarlo, el programa lee o escribe memoria que ya puede pertenecer a otra cosa. El atacante provoca a propósito la liberación, rellena la memoria liberada con datos preparados (heap spraying o heap grooming) y consigue que el programa los trate como el objeto antiguo. Cuando el programa llama a una función a través de ese objeto, la ejecución salta al código que eligió el atacante.

La debilidad está catalogada como CWE-416. Es especialmente frecuente en software complejo con muchos objetos y callbacks: motores de navegador, lectores de PDF, núcleos de sistemas operativos y controladores.

Por qué es importante

Los fallos UAF son una de las causas más frecuentes de los exploits de día cero usados en ataques reales contra Chrome, Safari, Firefox y el kernel de Windows. Un UAF en el navegador suele permitir la ejecución remota de código en el proceso de renderizado con solo visitar una página web; después, el atacante lo encadena con un escape del sandbox. Junto con los desbordamientos de búfer, el use-after-free forma parte de los fallos de memoria que, según Microsoft y Google, causan alrededor del 70 % de sus vulnerabilidades graves.

Cómo prevenirlo

  • Escribir los componentes nuevos en lenguajes con seguridad de memoria como Rust.
  • En C++, usar punteros inteligentes y reglas claras de propiedad, y anular los punteros tras liberar la memoria.
  • Aplicar endurecimientos como MiraclePtr en Chrome, asignadores reforzados y etiquetado de memoria (ARM MTE).
  • Hacer fuzzing con AddressSanitizer, que detecta de inmediato los accesos a memoria liberada.
  • Para los usuarios: instalar pronto las actualizaciones del navegador y del sistema, porque los exploits UAF suelen usarse antes del parche o justo después.
Sinónimos:
use after free, uso después de liberar, uso tras liberación