La corrupción de memoria ocurre en un programa cuando los contenido de una dirección de memoria involuntariamente se modifican debido a errores de programación; esto se conoce como violación de la seguridad de memoria. Cuando los contenidos corruptos de memoria se usan más tarde en el programa, conduce a un accidente del programa o a un comportamiento extraño del mismo. Casi el 10% de accidentes de aplicación en sistemas de Windows es debido a la corrupción del stack.[1]

Los lenguajes de programación modernos como C y C++ tienen rasgos potentes de direcciones de memoria explícita y aritmética de punteros. Estos rasgos se diseñan para desarrollar aplicaciones eficientes y software del sistema. Sin embargo, la utilización de estos rasgos incorrectamente puede llevar a errores de corrupción de memoria.

La corrupción de memoria es una de la clase de errores de programación más insuperable debido a dos motivos:

  1. La fuente de la corrupción de la memoria y su manifestación pueden estar muy separados, por lo que es difícil relacionar la causa y el efecto.
  2. Los síntomas aparecen en condiciones inusuales, por lo que es difícil de reproducir constantemente el error.

Clasificación

editar

Los errores de corrupción de memoria se pueden clasificar en cuatro categorías:

  1. Utilización de memoria no inicializada: se considera que los contenido de la memoria no inicializada son valores basura y usando estos valores puede llevar al comportamiento del programa imprevisible.
  2. Uso de la memoria sin propietario: es común el uso de punteros para acceder y modificar la memoria. Si un puntero es un puntero nulo, puntero colgando (apuntando a la memoria que ya se ha liberado), o en una ubicación de memoria fuera de la pila actual o límites de la pila, se refiere a la memoria que no es entonces poseída por el programa. Estos punteros son un grave defecto de programación. Acceder a esa memoria suele causar excepciones del sistema operativo, también denominados fallos de página, lo que más comúnmente lleva a una falla del programa.
  3. Usa de memoria más allá de la asignada (buffer overflow): Si un arreglo se utiliza en un bucle, con la condición de corte incorrecta, la memoria más allá de los límites del arreglo puede ser manipulada. Los buffer overflows son uno de los defectos de programación más comúnmente explotados por los virus informáticos[2]​ que causan graves problemas de seguridad informática (por ejemplo, el ataque return-to-libc) en los programas utilizados. También se puede acceder a la memoria incorrectamente antes del comienzo de un buffer.
  4. Gestión defectuosa de la memoria heap: fugas de memoria y liberar memoria que no es del heap o esta sin asignar son los errores más frecuentes causados por la gestión deficiente de la memoria heap.

Protección

editar

Muchos depuradores memoria como Purify, Valgrind, Insure++, AddressSanitizer[3]​ están disponibles para detectar errores de corrupción de memoria.

Referencias

editar
  1. «Application Verifier». MSDN Library. Microsoft. 19 de abril de 2011. Consultado el 4 de mayo de 2011. 
  2. Attack Vector: Buffer Overflows Top Threat http://www.isssource.com/attack-vector-buffer-overflows-top-threat/
  3. «AddressSanitizer, a fast memory error detector». Consultado el 13 de mayo de 2012. 

Enlaces externos

editar

📚 Artikel Terkait di Wikipedia

Armor Attack

superior del monitor.​ La superposición también tiñe los vectores de color verde. Armor Attack fue lanzado para el Vectrex en 1982.​ El jeep está armado

BlueBorne (agujero de seguridad)

Internet en la ciencia ficción Staff (12 de septiembre de 2017). «The Attack Vector "BlueBorne" Exposes Almost Every Connected Device». Consultado el 5

Triplanetary

minería de asteroides. Retribution — Continuación del escenario Escape. Attack Vector: Tactical - Un juego similar que intentó añadir movimiento espacial

Ataques ransomware WannaCry

de la variedad WannaCry (en inglés WannaCry ransomware attack o WannaCry DoublePulsar Attack), fueron ataques informáticos que usaron el criptogusano

Modos de operación de una unidad de cifrado por bloques

llamada vector de inicialización (IV), para cada operación de encriptación. El IV no tiene por qué repetirse y para algunos modos es aleatorio. El vector de

ISAAC (cifrador)

similitudes con RC4. Usa un vector de 256 enteros de 4 bits (llamado mm) como estado interno, escribiendo los resultados en otro vector de 256 enteros, del que

R. A. Salvatore

Para la saga de Star Wars ha escrito Vector Prime, The new Jedi Order 1,2 & 3 (con Michael Stackpole) y Attack of the Clones, la cual es parte de la

Cinematronics Inc.

arcade que tuvo su apogeo en la era de los juegos de visualización de vectores. Mientras otras compañías lanzaron juegos basados en pantallas ráster,