Introducción y contexto
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.
Jerarquía de memoria
Pirámide de memoria
| Nivel | Tipo de memoria | Velocidad | Tamaño típico | Volatilidad | L0 | Registros del CPU | ~1 ciclo | < 1 KB | Volátil |
|---|---|---|---|---|
| L1 | Caché L1 (SRAM) | ~2-4 ciclos | 32-64 KB | Volátil |
| L2 | Caché L2 (SRAM) | ~10-20 ciclos | 256 KB - 1 MB | Volátil |
| L3 | Caché L3 (SRAM) | ~30-50 ciclos | 2-32 MB | Volátil |
| L4 | RAM principal (DRAM) | ~50-100 ns | 4-128 GB | Volátil |
| L5 | SSD (NAND Flash) | ~50-100 µs | 256 GB - 8 TB | No volátil | L6 | HDD (Magnético) | ~10-20 ms | 500 GB - 20 TB | No volátil |
Memoria RAM (DRAM/SRAM)
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)
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é
Tipos de memoria no volátil (ROM)
| Tipo | Características | Aplicaciones |
|---|---|---|
| Mask ROM | Programada en fábrica, no modificable | Firmware antiguo |
| PROM | Programable una sola vez | Dispositivos embebidos |
| EPROM | Borrable con UV | Firmware antiguo |
| EEPROM | Borrable eléctricamente | Configuración de dispositivos |
| Flash NOR | Lectura aleatoria, boot directo | BIOS/UEFI |
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.
Vulnerabilidades y ataques de memoria
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.
| Tipo | Descripción | Ejemplos históricos |
|---|---|---|
| Stack-based | Sobrescritura de dirección de retorno | Morris Worm (1988) |
| Heap-based | Sobrescritura de metadata de allocador | Heartbleed (2014) |
| Integer Overflow | Desbordamiento en cálculo de tamaño | Numerosos CVEs |
Ataques avanzados
| Ataque | Descripción |
|---|---|
| Use After Free (UAF) | Uso de memoria después de ser liberada |
| Cold Boot Attack | Recuperación de datos DRAM después de corte de energía |
| Rowhammer | Flip de bits por acceso repetido a filas adyacentes |
| Spectre/Meltdown | Explotación de ejecución especulativa |
Mitigaciones y normativas
Estrategias de mitigación
| Técnica | Protege contra |
|---|---|
| ASLR | ROP, ret2libc, exploits de corrupción |
| Stack Canaries | Stack buffer overflow |
| NX/XD Bit | Code injection |
| CFI | Desvío de flujo de control |
Lenguajes seguros por diseño
| Lenguaje | Modelo de memoria | Seguridad |
|---|---|---|
| Rust | Ownership, borrow checker | ★★★★★ | Go | Garbage collector | ★★★★☆ |
| Java/C# | JVM/CLR con GC | ★★★★☆ |
| C/C++ | Acceso directo a memoria | ★☆☆☆☆ |
Marco normativo aplicable
| Estándar | Control/Artículo |
|---|---|
| ISO/IEC 27001:2022 | A.8.24 - Protección de datos durante la vida útil |
| NIST SP 800-53 | SC-38 - Protección de datos en tránsito y reposo |
| PCI DSS v4.0 | Requisito 3.2 - Protección de PAN almacenado |
| GDPR | Artículo 32 - Seguridad del procesamiento |
Glosario de términos esenciales
| Término | Definición |
|---|---|
| ASLR | Address Space Layout Randomization - Randomización de direcciones de memoria |
| Buffer Overflow | Escritura fuera de los límites de un buffer |
| Cold Boot Attack | Recuperación de datos de DRAM después de corte de energía |
| DRAM | Dynamic Random Access Memory - memoria principal volátil |
| Heap | Área de memoria para asignación dinámica |
| Memory Leak | Fallo en liberar memoria asignada |
| NX Bit | No-eXecute bit - marca páginas como no ejecutables |
| ROP | Return Oriented Programming - reutilización de código existente |
| Rowhammer | Ataque que flipa bits en memoria DRAM |
| Spectre/Meltdown | Ataques de ejecución especulativa |
| SRAM | Static 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.