ALERTAS | Noticias | 11 FEB 2011

Google desarrolla extensiones Java para mejorar la protección frente a desbordamiento de búfer

Tags: Actualidad
Tomando prestada una técnica de Eiffel, Google está añadiendo la funcionalidad Design-By-Contract a Java.
Paula Bardera

Google está desarrollando un conjunto de extensiones para Java que deberían ayudar a asegurar mejor los programas frente a los ataques de desbordamiento del búfer.

El pasado viernes, Google anunció que había abierto el código de un proyecto en el que estaban trabajando sus ingenieros para añadir una nueva funcionalidad Design-By-Contract (DBC). La implementación de Google, llamada Contracts For Java o Cofoja, está basada en Modern Jass, un conjunto de anotaciones de Java desarrolladas por Johannes Rieken.

En principio, se crearon como una técnica para facilitar la programación, de ese modo, Contracts también podría proporcionar un modo sencillo a los desarrolladores de protegerse contra ataques de desbordamiento del búfer.

Aunque es una de las técnicas más antiguas del arsenal de los atacantes virtuales, el desbordamiento del buffer sigue siendo un problema. En diciembre, Microsoft identificó 2,6 millones de posibles ataques que podían ser librados utilizando un desbordamiento del buffer en el JRE (Java Runtime Engine).

En pocas palabras, Contracts requiere que cada vez que un método es llamado en un programa en ejecución, los valores pasados cumplan un conjunto de criterios predefinidos. Del mismo modo, cada vez que un método devuelve un valor, también debe cumplir una serie de criterios. “DBC debería ser entendido como un contrato entre componentes de un software”, ha declarado Rieken en una entrevista por correo electrónico.

Los investigadores tomaron la idea de otro lenguaje, Eiffel, donde el concepto es conocido como Design-By-Contract (DBC). Los partidarios de Eiffel afirman que DBC hace que ese lenguaje sea más seguro que la mayoría.

En el post en el que anunciaban el lanzamiento de esta versión, los desarrolladores de Google promocionan Contracts como un modo de facilitar la programación Java, puesto que facilita la detección de los fallos en un complejo cuerpo de código que no funciona bien.

Pero lo cierto es que Contracts también puede ayudar a que el código Java sea más seguro, tal y como explica Andreas Leitner, ingeniero de pruebas de software de Google y miembro del equipo Cofoja.

“Al anotar tu código con Contracts, tienes muchas más probabilidades de revelar fallos en las primeras fases de desarrollo”, ha explicado Leitner. Podría ser especialmente útil a la hora de encontrar fallos que no bloquean un programa, pero que le pone en “situaciones divertidas”. Ese tipo de situaciones podrían ser “explotadas por atacantes para conseguir hacerse con datos o máquinas”.

Incluso sin DBC, Java ya cuenta con un número de ventajas sobre otros muchos lenguajes en términos de seguridad, porque funciona en una sandbox y necesita que los programadores definan los tipos de datos disponibles antes de que se utilicen. En cualquier caso, DBC podría proporcionar seguridad adicional previniendo ataques de desbordamiento del buffer, donde un programa podría ser manipulado o bloqueado con la introducción de un valor de entrada mayor de lo esperado.

Un contrato “puede asegurar que los datos no exceden una cierta longitud”. También podrían asegurar que los valores siguen siendo los mismos, que no han variado, cuando se les llama. “Esos controles son para situaciones donde el programador normalmente declara que no quería utilizarlos de ese modo”.

Los desarrolladores de Google detrás de Cofoja trabajan en el proyecto durante el 20 por ciento del tiempo de trabajo que Google les permite dedicar a sus proyectos individuales.

Noticias relacionadas

Surgen nuevos indicios de que Google copió el código de Java en Android

¿Cómo de rápido es realmente Google Chrome?

Google rompe su silencio sobre la copia del código de Java para desarrollar Android 

Contenidos recomendados...

Comentar
Para comentar, es necesario iniciar sesión
Se muestran 0 comentarios
X

Uso de cookies

Esta web utiliza cookies técnicas, de personalización y análisis, propias y de terceros, para facilitarle la navegación de forma anónima y analizar estadísticas del uso de la web. Consideramos que si continúa navegando, acepta su uso. Obtener más información