Que es un Buffer Overflow

En este artículo vamos a tratar de explica que es un Buffer Overflow

Una de las mayores vulnerabilidades de seguridad que tienen los actuales sistemas operativos y programas es ser sensibles a un desbordamiento de buffer, o como mejor se les conoce: Buffer Overflows.

En este documento explicaré los conceptos básicos de estos problemas que siempre han afectado a nuestros sistemas, sin profundizar demasiado, por ahora, e intentado dejar claro este concepto que nos rodea ya que día si, día no, aparece una vulnerabilidad basada en un desbordamiento de buffer.

Un poco de Historia…:

En Noviembre de 1988 se produce el primer ataque mediante esta tecnica usando un gusano que se aprovechaba de un desbordamiento de buffer en el servicio finger de un servidor Unix, solo fue el principio…

Durante los últimos años miles de vulnerabilidades basadas en Buffer Overflow han permitido que un atacante pueda ejecutar código malicioso en nuestras maquinas, es más, los seis primeros avisos de seguridad del CERT Coordination Center describen fallos de este tipo en numerosos programas.

¿Qué es un Buffer Overflow?:

Básicamente un desbordamiento de buffer no tiene mucho secreto. Lo podemos comparar a cuando llenamos un cubo de agua, nos despistamos, el agua sale del cubo, no nos damos cuenta y al final se filtra y le cae al vecino de abajo.

Normalmente este fallo se da cuando el programador no tiene en cuenta el tamaño de algún buffer dentro de su programa y si este se llena de datos que no tienen salida, afectecta a otras partes de la memoria en las cuales hay otros datos o partes de otro programa viendose afectados y pudiendo causar un bloqueo tanto del programa afectado y del propio software que lo produce.

¿Cómo afecta a la seguridad de un equipo?

El problema de seguridad de los buffer overflow consiste en que si el programa hace llamadas a subrutinas con comandos que modifiquen esas subrutinas y estas caen en un desbordamiento de buffer, es decir, las subrutinas llamadas con esos modificadores se salen del buffer mediante un exploit, el proceso padre queda perdido y es cuando un atacante mediante dicho exploit puede incorporar rutinas a medida para que hagan lo que él, y no el programa afectado, quiera, y dentro de este ambito de posibilidades está el peligro ya que podrian ejecutar aplicaciones con los permisos que tenga ese programa, normalmente de SYSTEM.

¿Qué puedo hacer ante esto?

Al tratarse de fallos en software lo único que podemos esperar es que el programador conozca la vulnerabilidad y saque un parche solventando el problema.