Demostración en vídeo de este post

En este segundo post sobre herramientas SAST para auditoría de código estático, se hablará sobre dos herramientas más: SonarQube y NodeJSScan. El primer post lo puedes leer en el siguiente enlace, en el cual se han descrito las funcionalidades de Security Code Scan e Insider.

SonarQube.

Se trata de uno de los proyectos open source más difundidos y potentes del mundo para auditoría de código. Es una herramienta que soporta múltiples lenguajes de programación, cuenta con una consola de administración web fácil de manejar y una buena cantidad de complementos que extienden las reglas que se encuentran cargadas por defecto en la herramienta. Si bien la versión comercial de SonarQube merece mucho la pena dadas las características que aporta, la versión open source suele ser suficiente en mayoría de los casos. La instalación y uso de esta herramienta no es tan simple como en el caso de las otras herramientas descritas en el post anterior, ya que es necesario instalar y configurar el servidor web y una base de datos para que la herramienta pueda funcionar correctamente, algo que hay que hacer casi de manera obligada si se utiliza esta herramienta para múltiples proyectos y se quiere tener un mejor control de los trabajos que se van realizando, no obstante si lo que se busca es ejecutar la herramienta para una prueba puntual o contra un proyecto especifico y sin ajustar ningún tipo de detalle relacionado con el rendimiento, la mejor opción es utilizar Docker ya que se puede crear un contenedor que cuente con todo ya configurado para su uso.

Es importante tener en cuenta que para usar SonarQube es necesario configurar adecuadamente los complementos en función del lenguaje de programación, algo que se puede hacer desde la interfaz de administración. Por otro lado, cuando se crea un proyecto, si se trata de una aplicación desarrollada en .Net o Java, es necesario ejecutar el “core” de SonarQube, una herramienta externa que se encargará de compilar el código, realizar el análisis y enviar los resultados al servidor central de SonarQube, en realidad es un proceso sencillo y las indicaciones sobre cómo hacerlo aparecen en la página final del asistente en la creación del proyecto.

NodeJSScan

Los proyectos desarrollados en Node.JS tienen características que les hacen bastante particulares y por lo tanto, los defectos y vulnerabilidades que se pueden presentar también lo son. En este sentido, la herramienta NodeJSScan es una solución open source que permite detectar problemas relacionados con la seguridad, desempeño y malas prácticas de desarrollo en proyectos Node.JS. Se puede instalar fácilmente en cualquier sistema con Node.JS instalado o utilizar el despliegue gratuito que se encuentra disponible online en el siguiente enlace. Para usar la herramienta online es necesario contar con una cuenta en Docker Hub y por supuesto, se puede usar si se trata de prácticas pero desde luego no lo recomendaría sobre un proyecto que se utiliza en una empresa o está sujeto a algún tipo de licencia comercial ya que es necesario subir un ZIP con el código entero. La mejor alternativa en ese caso, es descargar la herramienta, instalar y probar localmente.

El proceso es simple, aunque dependiendo del tamaño de la aplicación y la cantidad de ficheros a analizar puede tardar algunos minutos. Cuando termina, enseña un informe completo de los defectos encontrados con un muy buen nivel de detalle.

Como ocurre con otras herramientas de código estático, pueden producirse falsos positivos y evidentemente, la habilidad y conocimientos del analista son cruciales. Como resulta evidente, el perfil indicado para realizar este tipo de actividades es el de una persona con conocimientos en desarrollo de software y seguridad informática, especialmente seguridad web ya que muchos proyectos están orientados precisamente a aplicaciones web.

Espero que estos posts te resulten interesantes y que te motiven para aprender más sobre desarrollo de software seguro.

Un saludo y Happy Hack!
Adastra.