Introducción y contexto

Datos clave: Según el Informe de Vulnerabilidades de Software 2024, las vulnerabilidades relacionadas con la gestión de memoria representan aproximadamente el 35% de todas las vulnerabilidades reportadas en CVE.

La memoria es el componente más crítico de cualquier sistema computacional. Es donde se almacenan temporalmente los datos, instrucciones, credenciales, claves criptográficas y otra información sensible durante la ejecución de programas. Comprender los diferentes tipos de memoria, sus características y los riesgos asociados es fundamental para cualquier profesional de ciberseguridad.

Importancia: Un atacante con acceso a la memoria puede obtener información privilegiada, claves de cifrado, tokens de autenticación y contraseñas en texto plano, incluso si los datos están cifrados en disco.

Jerarquía de memoria

Teoría fundamental: La jerarquía de memoria organiza los dispositivos de almacenamiento por velocidad, costo y capacidad. El principio de localidad (temporal y espacial) permite optimizar el rendimiento del sistema.
1

Pirámide de memoria

NivelTipo de memoriaVelocidadTamaño típicoVolatilidad
L0Registros del CPU~1 ciclo< 1 KBVolátil
L1Caché L1 (SRAM)~2-4 ciclos32-64 KBVolátil
L2Caché L2 (SRAM)~10-20 ciclos256 KB - 1 MBVolátil
L3Caché L3 (SRAM)~30-50 ciclos2-32 MBVolátil
L4RAM principal (DRAM)~50-100 ns4-128 GBVolátil
L5SSD (NAND Flash)~50-100 µs256 GB - 8 TBNo volátil
L6HDD (Magnético)~10-20 ms500 GB - 20 TBNo volátil

Memoria RAM (DRAM/SRAM)

1

DRAM (Dynamic Random Access Memory)

La DRAM es el tipo de memoria principal en la mayoría de los sistemas. Cada celda consiste en un transistor y un condensador que requiere refresh periódico.

  • Ventajas: Alta densidad, bajo costo por bit
  • Desventajas: Volátil, requiere refresh, más lenta que SRAM
  • Uso: Memoria principal del sistema (RAM)
Riesgo de seguridad: Los datos en DRAM persisten de segundos a minutos después de cortar la energía (Cold Boot Attack).
2

SRAM (Static Random Access Memory)

La SRAM utiliza flip-flops (biestables) para almacenar cada bit. No requiere refresh.

  • Ventajas: Muy rápida (acceso en nanosegundos), sin refresh
  • Desventajas: Baja densidad, alto costo
  • Uso: Caché L1, L2, L3 del CPU, buffers

ROM, Firmware y Caché

1

Tipos de memoria no volátil (ROM)

TipoCaracterísticasAplicaciones
Mask ROMProgramada en fábrica, no modificableFirmware antiguo
PROMProgramable una sola vezDispositivos embebidos
EPROMBorrable con UVFirmware antiguo
EEPROMBorrable eléctricamenteConfiguración de dispositivos
Flash NORLectura aleatoria, boot directoBIOS/UEFI
Riesgo crítico - Firmware malware: Malware como LoJax (UEFI rootkit) y MoonBounce demuestran que el firmware puede ser comprometido de forma persistente.
2

Arquitectura de caché

  • L1 caché: Dividida en instrucciones (I-cache) y datos (D-cache). Tamaño: 32-64 KB. Latencia: 2-4 ciclos.
  • L2 caché: Unificada. Tamaño: 256 KB - 1 MB. Latencia: 10-20 ciclos.
  • L3 caché: Compartida entre núcleos. Tamaño: 2-32 MB. Latencia: 30-50 ciclos.
Ataques de canal lateral de caché: Spectre y Meltdown (2018) explotan la ejecución especulativa para leer memoria privilegiada.

Vulnerabilidades y ataques de memoria

1

Buffer Overflow (Desbordamiento de búfer)

El ataque de memoria más clásico. Consiste en escribir más datos de los que puede contener un búfer, sobrescribiendo áreas adyacentes.

TipoDescripciónEjemplos históricos
Stack-basedSobrescritura de dirección de retornoMorris Worm (1988)
Heap-basedSobrescritura de metadata de allocadorHeartbleed (2014)
Integer OverflowDesbordamiento en cálculo de tamañoNumerosos CVEs
2

Ataques avanzados

AtaqueDescripción
Use After Free (UAF)Uso de memoria después de ser liberada
Cold Boot AttackRecuperación de datos DRAM después de corte de energía
RowhammerFlip de bits por acceso repetido a filas adyacentes
Spectre/MeltdownExplotación de ejecución especulativa

Mitigaciones y normativas

1

Estrategias de mitigación

TécnicaProtege contra
ASLRROP, ret2libc, exploits de corrupción
Stack CanariesStack buffer overflow
NX/XD BitCode injection
CFIDesvío de flujo de control
Compilación con mitigaciones (GCC)
gcc -O2 -D_FORTIFY_SOURCE=2 -fstack-protector-strong -Wformat -Wformat-security -fPIE -pie programa.c -o programa
2

Lenguajes seguros por diseño

LenguajeModelo de memoriaSeguridad
RustOwnership, borrow checker★★★★★
GoGarbage collector★★★★☆
Java/C#JVM/CLR con GC★★★★☆
C/C++Acceso directo a memoria★☆☆☆☆
3

Marco normativo aplicable

EstándarControl/Artículo
ISO/IEC 27001:2022A.8.24 - Protección de datos durante la vida útil
NIST SP 800-53SC-38 - Protección de datos en tránsito y reposo
PCI DSS v4.0Requisito 3.2 - Protección de PAN almacenado
GDPRArtículo 32 - Seguridad del procesamiento

Glosario de términos esenciales

TérminoDefinición
ASLRAddress Space Layout Randomization - Randomización de direcciones de memoria
Buffer OverflowEscritura fuera de los límites de un buffer
Cold Boot AttackRecuperación de datos de DRAM después de corte de energía
DRAMDynamic Random Access Memory - memoria principal volátil
HeapÁrea de memoria para asignación dinámica
Memory LeakFallo en liberar memoria asignada
NX BitNo-eXecute bit - marca páginas como no ejecutables
ROPReturn Oriented Programming - reutilización de código existente
RowhammerAtaque que flipa bits en memoria DRAM
Spectre/MeltdownAtaques de ejecución especulativa
SRAMStatic Random Access Memory - memoria caché
StackÁrea de memoria LIFO para variables locales
UAF (Use After Free)Uso de memoria después de ser liberada

¡Módulo teórico completado!

Has comprendido los fundamentos de la jerarquía de memoria, los diferentes tipos de memoria (DRAM, SRAM, ROM, caché), sus vulnerabilidades intrínsecas (Buffer Overflow, UAF, Rowhammer, Cold Boot, Spectre/Meltdown), las estrategias de mitigación (ASLR, NX, Canary, CFI) y el marco normativo aplicable. Estos conocimientos son fundamentales para roles de Security Researcher, Incident Responder, Malware Analyst y Secure Software Developer.