Sunday, 7 June 2009

Penjili Project

Penjili es un proyecto desarrollado por la EADS (European Aeronautic Defence and Space Company) y es una herramienta de análisis de software embebido. Ésta prueba la ausencia de vulnerabilidades de seguridad, por ejemplo los límites de una matriz, punteros con referencia null, desbordamientos, etc. Penjili con Newspeak (es un lenguaje de programación simplificado, bien adaptado a los fines de análisis) permite la entrada de ficheros C o ADA y genera una lista de warnings, indicando el origen del problema y el tipo de error. Si no hay ninguna advertencia, el código está libre de vulnerabilidades. Hay varios estudios que identifican este problema, como este por Xavier Allamigeon, Wenceslas Godad y Charles Hymans, donde hacen un análisis de la manipulación de Strings en Programas críticos embebidos escritos en C. En éste artículo se hace referencia al problema del uso de cadenas, ya que siempre tenemos que comprobar que la cadena de destino sea lo suficientemente larga como para poder albergar nuestra cadena original. Cuando no es el caso, y la cadena de destino es más larga, esta se llena con bytes aleatorios que pueden llegar a crear inesperadas posiciones de memoria.
En la página oficial del Proyecto Penjili, podemos encontrar una buena presentación explicando los contenidos más importantes de ésta, explicando las mejoras que conseguiremos en nuestra aplicación aplicando los parámetros de Penjili. Las características más importantes del proyecto son las siguientes:

Lograr una gran escalabilidad:
- más de 1 millón de líneas de código

Mantiene una gran precisión:
- más de 99% para las matrices y más del 95% para los punteros

Ha sido capaz de encontrar anomalías en Software verdadero y maduro.

Un ejemplo de conversión, utilizando el NewSpeak, es el siguiente:

Podemos encontrar toda la tabla de referencia en la misma web, y además podemos descargar todo el proyecto entero ya que está bajo una licencia LGPL. Desde este mismo enlace, podemos descargar la última versión de la aplicación NewSpeak 1.6, para que la podáis disfrutar y probar con vuestros proyectos generados en C o ADA. El proyecto llamado CtoNewSpeak, también lo podemos encontrar en SourceForge.

Aquí os dejo una imagen, que también la encontrareis en la web y que explica un poco la jerarquía del proyecto.

Gracias a JM_@Inject por hablarme de esta tecnología:

Penjili(뺀질이): in Korean, said of a person who is cunning at avoiding unnecessary work.

1 comment:

  1. Hey Jordi! Thanks for the comment. A really interesting test methodology...

    ReplyDelete