Desbordamiento de búfer en C

Hoy veremos lo que es un desbordamiento de búfer en C y cómo puede (en su forma más simple) hacer que un usuario aproveche esa vulnerabilidad para explotar nuestro programa.

Nota: esto es diferente a cuando se desborda una variable.

Lo que es un desbordamiento de búfer

Según la Wikipedia:

En seguridad informática y programación, un desbordamiento de búfer (del inglés buffer overflow o buffer overrun) es un error de software que se produce cuando un programa no controla adecuadamente la cantidad de datos que se copian sobre un área de memoria reservada a tal efecto (buffer): Si dicha cantidad es superior a la capacidad preasignada, los bytes sobrantes se almacenan en zonas de memoria adyacentes, sobrescribiendo su contenido original, que probablemente pertenecían a datos o código almacenados en memoria. Esto constituye un fallo de programación.

En otras palabras le da al usuario de nuestro programa la forma de sobrescribir una variable a su antojo; bueno, no siempre y no tan fácil, pero alguien con tiempo puede encontrarlas y explotarlas.

Esto es peligroso en programas que se van para producción, por ejemplo un sistema de la apertura de una puerta o cosas de esas que tienen que ver con la seguridad.

(más…)

¿Qué es un desbordamiento en C?

Introducción

El lenguaje de programación C es un lenguaje muy bueno, pero antiguo. Es uno de los primeros lenguajes de programación de alto nivel que apareció en aquellos años.

Un desbordamiento en C es una cosa peligrosa que nos puede pasar si desarrollamos en este lenguaje.

Desbordamiento de variables en C

Desbordamiento de variables en C

Hoy veremos qué es un desbordamiento de una variable en C, cosa que es un poco peligrosa en apps que estén en producción.

Por cierto, esto se refiere a cuando una variable se desborda; pero puede que quieras ver un ejemplo de desbordamiento de búfer en C; algo que es un poco más peligroso.

(más…)