Está en la página 1de 9

Desbordamiento de Buffer

Buffer Overflows
Contenido

▪ ¿Que es un desbordamiento de buffer?


- Tipos de desbordamiento de buffer
- Lenguajes de programación más vulnerables
▪ ¿Que sucede cuando se produce?
▪ Como evitar un desbordamiento de buffer
▪ Conclusión
¿Que es un desbordamiento de buffer?

▪ Es una situación en la que un programa en ejecución intenta escribir


datos fuera del buffer de memoria que no esta destinado a almacenar
estos datos. Cuando esto sucede, se habla de un desbordamiento del
buffer.

▪ Esto sucede, por ejemplo, cuando se espera un nombre de usuario


con un maximo de 8 bytes y se da un nombre de usuario de 10 bytes y
se escribe en el buffer. En este caso, el buffer se supera en 2 bytes y
se producirá un desbordamiento cuando no se evite que ocurra. Esto
sucede a menudo debido a una mala programación.
Tipos de desbordamiento de buffer

▪ Ataque de desbordamiento de pila: Este es el tipo más común de


ataque e implica desbordar un buffer en la pila de llamadas.
▪ Ataque de desbordamiento de montón: Este tipo de ataque apunta a
datos en el grupo de memoria abierta conocida como el montón.
▪ Desbordamiento de enteros: Es una operación arimética que da
como resultado un entero que es demasiado grande para el tipo de
entero destinado a almacernalo.
▪ Desbordamiento Unicode: Crea un desbordamiento de buffer
insertando caracteres Unicode en una entrada que espera caracteres
ASCII.
Lenguajes de programación más vulnerables

Ciertos lenguajes de codificacion son mas susceptibles al


desbordamiento del buffer que otros. C y C++ son dos lenguajes
populares con alta vulnerabilidad, ya que no contienen proteccion
integradas contra el acceso o la sobreescritura de datos en su memoria.
¿Que sucede cuando se produce?

Cuando se produce un desbordamiento del buffer de memoria y los


datos se escriben fuera del buffer, el programa en ejecucion puede
volverse inestable, bloquearse o devolver informacion corrupta.

Los desbordamientos del buffer pueden incluso ejecutar otros


programas o comandos (maliciosos) y provocar la ejecucion de codigo
arbitrario.
Como evitar un desbordamiento de buffer

Los desbordamientos de buffer en el software se pueden prevenir o


mitigar de varias maneras.
• Prevencion: La solucion mayor y mas efectiva es evitar que ocurran
condificiones de desbordamiento del buffer en el codigo.
- Por ejemplo, cuando se espera un maximo de 8 bytes como datos de
entrada, la cantidad de datos que se puede escribir en el buffer se
limitara a 8 bytes en cualquier momento.
Como evitar un desbordamiento de buffer

• Mitigacion: Otra forma de proteger los desbordamientos del buffer


es detectarlos a medida que ocurren y mitigar la situacion. Este es un
enfoque reactivo y se centra en minimizar el impacto nocivo.
- Ejemplo, es un Sistema operativo moderno que protege ciertas areas
de la memoria contra escritura o ejecucion. Esto evitara que un
actacante escribe codigo arbitrario en la memoria cuando se produce
un desbordamiento del buffer.
Conclusión

Los fallos por la corrupcion de memoria, al igual que otro tipo de


debilidades, son causados por errores humanos que pueden existir en
cualquier etapa del proceso de desarrollo de los sistemas
computacionales.
Por eso es importante, los requerimientos no funcionales y las buenas
practicas de programacion que ayuden a disminuir el riesgo de
experimentar vulnerabilidades en los sistemas.

También podría gustarte