Doble liberación
¿Qué es Doble liberación?
Doble liberaciónFallo 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
- 01
CVE-2015-1322: double free en tcache de glibc que provoca corrupción de heap.
- 02
CVE-2019-19377: double free en btrfs de Linux disparado por imágenes malformadas.
● Preguntas frecuentes
¿Qué es Doble liberació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. Pertenece a la categoría de Vulnerabilidades en ciberseguridad.
¿Qué significa Doble liberació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.
¿Cómo defenderse de Doble liberación?
Las defensas contra Doble liberación combinan habitualmente controles técnicos y prácticas operativas, como se detalla en la definición.
¿Cuáles son otros nombres para Doble liberación?
Nombres alternativos comunes: Vulnerabilidad de double free.