Seguridad a fondo · Unidad 21
Seguridad de memoria: límites y vida útil
Comprende qué puede utilizar un programa, cómo difieren los errores de memoria y cómo prevenirlos.
ATT&CK TA0002 Execution
Para prepararteHistoria de las computadorasHistoria de los sistemas operativos
Después de esta lección puedes
- Distinguir los límites de un objeto de su vida útil válida.
- Explicar por qué un error de memoria no demuestra automáticamente un impacto de seguridad concreto.
- Relacionar prevención, pruebas y mitigación con el problema que aborda cada una.
Lecciones de esta unidad
Explorar 6 lecciones de este tema
- La longitud debe caberCompara una conversión de texto con su capacidad en bytes, incluido el terminador.3 min
- Los objetos tienen una vidaUsa la secuencia de un trabajo para distinguir una referencia guardada de un objeto vigente.4 min
- La aritmética tiene límitesComprueba el espacio calculado frente a los límites aritméticos y de la aplicación.4 min
- Mitigar no repara el defectoDistingue la protección configurada, una corrección candidata y su despliegue verificado.3 min
- Fuzzing: explorar entradasInterpreta una prueba sin hallazgos según el comportamiento que realmente ejercitó.4 min
- Memoria segura no es toda la seguridadDistingue las garantías de memoria, las dependencias nativas y los permisos sobre documentos.4 min
Una aplicación de fotos mantiene una imagen en memoria mientras la editas. Parece sencillo, pero necesita saber dónde empieza, cuánto almacenamiento le corresponde y cuándo puede reutilizarlo. La seguridad de memoria consiste en respetar esas condiciones. Puedes entender las ideas importantes sin conocer lenguaje ensamblador.
El espacio de trabajo de un programa
Un espacio de direcciones es la vista de memoria de un proceso. Puede contener instrucciones ejecutables, datos duraderos, objetos asignados dinámicamente e información temporal de llamadas a funciones. El sistema operativo asigna direcciones virtuales a recursos y aplica permisos de acceso.
Los dibujos de libros suelen mostrar una pila y un montón creciendo uno hacia otro. La distribución real depende de plataforma, compilador, asignador de memoria y programa; los objetos no tienen por qué seguir ese orden. Un proceso tampoco puede acceder normalmente a la memoria de otro solo por compartir computadora.
Un búfer almacena una secuencia, como los píxeles de una imagen. Un objeto puede ocupar solo parte de una página de memoria. Por eso, el sistema operativo puede permitir el acceso a una página aunque el programa haya cruzado el límite de un objeto individual.
Dónde y cuándo son preguntas distintas
Un error espacial accede fuera de los límites permitidos de un objeto. Una lectura puede revelar datos ajenos o provocar un fallo; una escritura puede alterar datos o provocar un fallo. La etiqueta, por sí sola, no dice qué puede conseguir un atacante de forma fiable.
Un error temporal afecta a la vida útil. En el uso de memoria liberada, queda una referencia después de liberar el almacenamiento del objeto. La dirección numérica podría seguir asignada, o contener después otro objeto, pero la referencia antigua ya no es válida.
Imagina que te prestan una taquilla numerada. Leer la taquilla vecina rompe un límite. Seguir usando tu asignación después de devolverla rompe la regla de vida útil. La memoria real es más compleja, pero ambas preguntas siguen siendo útiles.
Un fallo aporta evidencia con límites
Supongamos que la aplicación se detiene al decodificar una imagen. Un diagnóstico puede identificar una lectura inválida, su ubicación y la asignación implicada. Eso respalda un defecto concreto. La interrupción no demuestra por sí sola robo de información, cambios de permisos ni control de la ejecución.
Las consecuencias dependen de operación, datos afectados, autoridad del proceso, exposición de entradas y protecciones activas. Separa el error observado de una consecuencia plausible pendiente de investigación. Un defecto grave puede tener efectos distintos en un proceso de vista previa aislado y en un servicio con amplios privilegios.
Cada protección aborda una parte
| Protección | Qué aporta |
|---|---|
| Abstracciones seguras de memoria | Aplican reglas de límites, propiedad o vida útil; los componentes inseguros y las dependencias nativas requieren revisión. |
| NX / DEP | Impide ejecutar instrucciones en páginas no ejecutables; no comprueba los límites de objetos. |
| W^X | Restringe que una región sea escribible y ejecutable simultáneamente. |
| Canarios de pila | Detectan ciertas sobrescrituras de datos protegidos de la pila; la cobertura depende de la implementación. |
| ASLR | Aleatoriza partes de la distribución de direcciones; no corrige accesos inválidos. |
Una mitigación reduce una posible consecuencia. Una reparación elimina el defecto. Ambas son útiles; ninguna debe confundirse con una promesa de que todo error de memoria será inofensivo.
Del diagnóstico a una reparación duradera
El equipo de desarrollo puede revisar tamaños y propiedad de objetos, corregir cálculos de longitud y sustituir interfaces inseguras cuando corresponda. Las pruebas automáticas deben cubrir el límite reparado y el funcionamiento normal. El fuzzing explora entradas variadas; herramientas como AddressSanitizer detectan ciertos accesos inválidos en ejecuciones instrumentadas. Superar las pruebas significa que esas comprobaciones pasaron, no que toda ejecución posible sea segura.
Mantén las dependencias y limita los recursos accesibles a los analizadores de archivos. Una nota útil identifica objeto, operación observada, versión afectada, cambio propuesto y evidencia de verificación. Así, otra persona tiene algo concreto que mejorar.
EXPLORA EL CONCEPTO
Lee un diagnóstico ficticio
Elige un informe. ¿Qué demuestra y qué sigue sin saberse?
Lectura fuera de límites
El lector accedió fuera del búfer de imagen. Hay evidencia de un defecto de límites; saber si salieron datos sensibles requiere evidencia adicional.
Uso tras liberar
Una función de respuesta accedió al objeto después de liberarlo. Revisa propiedad y duración de esa función; ampliar el búfer no repara la vida útil.
La mitigación detuvo la ejecución
Una protección impidió una operación. Es evidencia útil sobre esta ejecución, pero el defecto de origen todavía necesita reparación.
Modelo simplificado para aprender. No se conecta a sistemas ni usa datos reales.
Términos que viste
espacio de direccionesbúferuso de memoria liberadamitigación
Compruébate
Sin reloj ni penalizaciones. Lee cada explicación y vuelve a intentarlo cuando quieras.
Las preguntas de esta lección han cambiado. Tu lectura sigue guardada; repasa las preguntas actualizadas.
-
Un diagnóstico muestra acceso dentro de una página asignada pero fuera del objeto previsto. ¿Es válido?
Ver la respuesta
Respuesta correcta: No; el permiso de página no establece los límites del objeto. Los objetos pueden ser menores que las páginas: son límites distintos.
-
Se usa una referencia antigua después de liberar el objeto. ¿Qué distinción importa?
Ver la respuesta
Respuesta correcta: La vida útil del objeto ha terminado. Una dirección numérica conocida no vuelve válida la referencia antigua.
-
¿Qué afirmación describe correctamente DEP?
Ver la respuesta
Respuesta correcta: Restringe la ejecución desde páginas de memoria no ejecutables. Limita un comportamiento; el defecto original sigue necesitando reparación.
-
Un sanitizador detecta una lectura inválida. ¿Qué conclusión es sólida?
Ver la respuesta
Respuesta correcta: Se observó una lectura inválida concreta; los efectos más amplios necesitan evidencia. Registra operación y entorno antes de describir consecuencias adicionales.
Pruébalo
- EscribeEl diagnóstico de un visor de imágenes ficticio dice: «lectura fuera del búfer de imagen; proceso detenido». Escribe una observación confirmada, una consecuencia todavía desconocida y una recomendación de reparación. Explica por qué «se robaron todos los archivos» exageraría la evidencia.