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.
Hey Jordi! Thanks for the comment. A really interesting test methodology...
ReplyDelete