Desbordamiento del buffer

Hola rfol:
Verás, muchas de las veces en que ha aparecido un nuevo virus leo que aprovecha el desbordamiento de un buffer para entrar en acción. Y la verdad, no se cómo es eso.
¿Me podrías decir en consiste eso del desbordamiento del buffer? ¿Algún ejemplo?
Es todo. Muchas gracias y un saludo desde Málaga.

1 respuesta

Respuesta
1
El problema es que tu código funciona `a posteriori', es decir, busca un
carácter nulo por la memoria y si lo encuentra más tarde del final del
buffer, da un código de error... esto tiene el problema de que puede haber
arquitecturas donde un intento de lectura en memoria virtual no mapeada
genere un SIGSEGV o un BUS ERROR. Esto no impediría el error de acceder a
memoria que no podemos usar.
Para ser correcto el código, deberíamos buscar un nulo DENTRO del buffer y
nada más...
for (i = 0; i < TamMax; i++)
if (!buffer) break;
if (i < TamMax) { /* correcto */
} else { /* incorrecto, mensaje de error */
}
Técnicamente consiste en esto y un ejemplo de lo que estas mencionando seria:
SecurityTracker ha publicado en:
http://www.securitytracker.com/alerts/2003/Jan/1005989.html
Que se ha detectado una vulnerabilidad en SpamAssassin, una de las aplicaciones de
control de spam más utilizadas.
El mencionado problema es un desbordamiento de buffer que se produce cuando
se utiliza SpamAssassin 'spamc' en el modo BSMTP (ejecutado con la opción
'-B'). El desbordamiento tiene lugar en el tratamiento de caracteres '.' al
comienzo de las líneas SMTP, cuando se envía al sistema un e-mail
especialmente creado para tal fin.
En la práctica, la citada vulnerabilidad podría ser aprovechada por un
atacante para ejecutar código e, incluso, tomar el control del servidor
afectado.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas