Buscar
Social
Ofertas laborales ES
« Charla en Barcelona: Introducción a las "Graphs Databases"  y Neo4j | Main | 97 cosas que todo programador debería saber »
lunes
nov252013

La madre de todos los bugs: el compilador gcc elimina código de chequeos de seguridad

Varios investigadores del MIT recientemente han publicado un artículo que, aunque no directamente relacionado con Java, considero que es interesante para cualquier desarrollador de software. Resulta que el compilador gcc al emplear las opciones de optimización puede descartar código fuente que "aparentemente" no está haciendo nada, pero que en la práctica está relacionado con temas de seguridad. Por ejemplo, en el siguiente código:

char *buf = ...;
char *buf_end = ...;
unsigned int len = ...;
if (buf + len >= buf_end)
return; /* len too large */
if (buf + len < buf)
return; /* overflow, buf+len wrapped around */
/* write to buf[0..len-1] */

el compilador descartaría el segundo if. Esto no se trata de un fallo teórico; los autores del artículo han encontrado múltiples fallos de seguridad en múltiples paquetes de Linux que han sido compilados con gcc, fallos de seguridad que no se corresponden con fallos en el código fuente del paquete, sino que han sido introducidos por el proceso de compilación. Aquí os dejo una tabla donde se listan los bugs que han encontrado como consecuencia de este comportamiento de gcc:

En el artículo original tenéis más detalle sobre exactamente qué tipo de bugs eran. Os recomiendo que le echéis un vistazo al artículo; es muy interesante.

PrintView Printer Friendly Version

EmailEmail Article to Friend

Reader Comments

There are no comments for this journal entry. To create a new comment, use the form below.

PostPost a New Comment

Enter your information below to add a new comment.

My response is on my own website »
Author Email (optional):
Author URL (optional):
Post:
 
Some HTML allowed: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <code> <em> <i> <strike> <strong>