En programación y seguridad informática , una sobrelectura del búfer [1] [2] es una anomalía en la que un programa , mientras lee datos de un búfer , sobrepasa el límite del búfer y lee (o intenta leer) la memoria adyacente. Este es un caso especial de violación de la seguridad de la memoria .
Las sobrelecturas del búfer pueden desencadenarse, como en el error Heartbleed , mediante entradas creadas con fines malintencionados y diseñadas para aprovechar la falta de límites para leer partes de la memoria a las que no se pretende acceder. También pueden deberse únicamente a errores de programación. Las sobrelecturas del búfer pueden provocar un comportamiento errático del programa, incluidos errores de acceso a la memoria , resultados incorrectos, un bloqueo o una violación de la seguridad del sistema. Por lo tanto, son la base de muchas vulnerabilidades de software y pueden explotarse maliciosamente para acceder a información privilegiada. [ cita necesaria ]
Los lenguajes de programación comúnmente asociados con sobrelecturas de búfer incluyen C y C++ , que no brindan protección incorporada contra el uso de punteros para acceder a datos en cualquier parte de la memoria virtual y que no verifican automáticamente que la lectura de datos de un bloque de memoria sea segura. ; Los ejemplos respectivos intentan leer más elementos de los contenidos en una matriz o no pueden agregar un terminador final a una cadena terminada en nulo . La verificación de límites puede evitar sobrelecturas del búfer, [3] mientras que las pruebas difusas pueden ayudar a detectarlas.