CyberGlossary

Vulnerabilidades

Doble liberación

También conocido como: Vulnerabilidad de double free

Definición

Fallo de memoria en el que el mismo bloque del heap se libera dos veces, corrompiendo metadatos del asignador y a menudo permitiendo ejecución de código arbitraria.

Una doble liberación ocurre cuando free()/delete se llama más de una vez sobre el mismo puntero. Las listas libres o bins del asignador quedan inconsistentes, lo que permite al atacante forzar a una siguiente asignación a devolver memoria influida o solapada con objetos vivos: una primitiva que puede conducir a escrituras arbitrarias y ejecución de código. Se sigue como CWE-415 y suele coexistir con use-after-free y double-fetch. Defensas: patrones de propiedad única (RAII, smart pointers), poner punteros a NULL tras liberar, asignadores endurecidos con detección de doble free (protección de tcache en glibc, scudo), pruebas con AddressSanitizer y lenguajes seguros en memoria.

Ejemplos

  • CVE-2015-1322: double free en tcache de glibc que provoca corrupción de heap.
  • CVE-2019-19377: double free en btrfs de Linux disparado por imágenes malformadas.

Términos relacionados