Llegamos a ustedes gracias a:



Noticias

Las extensiones de Google mejoran la seguridad de Java

[11/02/2011] 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 las fallas 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 el código con Contracts, tiene muchas más probabilidades de revelar fallas en las primeras fases de desarrollo, ha explicado Leitner. Podría ser especialmente útil a la hora de encontrar fallas 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% del tiempo de trabajo que Google les permite dedicar a sus proyectos individuales.
Joab Jackson, IDG News Service