Revista Tecnología

Herramientas SAST para auditoría de código y SecDevOps – Parte 1

Publicado el 23 septiembre 2021 por Debadastra @jdaanial

Una de las labores definidas en el S-SDLC es la ejecución de pruebas de seguridad, entre las que se incluyen las pruebas de análisis estático para la detección temprana de posibles defectos. Evidentemente, el "éxito" o "fracaso" de estas herramientas radica en las reglas que tengan definidas ya que, después de todo, su funcionamiento se basa en la aplicación de patrones que de antemano se sabe que representan una vulnerabilidad, defecto o mala práctica. Son herramientas fundamentales que ahorran tiempo cuando se encuentran bien configuradas y "afinadas", pero como ocurre con las herramientas de pentesting, no hacen magia y siempre es necesario ejecutar inspecciones manuales para descartar falsos positivos o detectar problemas en el código que la herramienta ha sido incapaz de encontrar. Aún así, a la hora de realizar auditorías de código es vital conocer las principales herramientas que se encuentran disponibles y en todo caso, utilizar varias, ya que es posible que los problemas o defectos que no encuentra una, sí que los pueda detectar otra. Un recurso interesante para conocer las principales herramientas SAST y los lenguajes que soportan es la guía de Source Code Analisis Tools del OWASP, la cual incluye un listado completo de este tipo de herramientas, tanto comerciales como open source. En este primer post se hablará de dos herramientas que resultan interesantes: Security Code Scan y Insider.

Se trata de una herramienta que permite el análisis de proyectos basados en .NET. Es un proyecto libre y se puede instalar de varias maneras, como extensión desde el marketplace del Visual Studio .NET, como componente standalone o utilizando NuGet. Personalmente recomiendo utilizarlo como una extensión de Visual Studio .NET ya que si tienes que hacer una auditoría de código en una solución basada en .NET la mejor alternativa para ello es utilizar el IDE oficial, además de que la extensión se integra muy fácilmente en las soluciones cargadas en el IDE. En la página oficial se encuentran descritos los diferentes procesos de instalación y las ventajas de cada uno.

Herramientas SAST para auditoría de código y SecDevOps – Parte 1

Es una herramienta capaz de detectar defectos de todo tipo, desde malas prácticas en la gestión de parámetros de entrada hasta problemas más profundos en una solución .NET. Junto con Puma Scan, en mi opinión es la mejor alternativa que se encuentra disponible para proyectos en DotNet.

Se trata de una herramienta muy sencilla que se ejecuta desde línea de comandos y cuenta con un conjunto de reglas precargadas para diferentes lenguajes de programación, entre los que se incluyen Java/J2EE, Javascript, C#, GO, Kotlin, entre otros. Es capaz de detectar problemas a nivel global, pero no es capaz de detectar problemas específicos en dichos lenguajes. Esto se debe a que las reglas que vienen precargadas están enfocadas a los problemas más comunes descritos en el OWASP Top 10, pero no en problemas específicos o malas prácticas que se pueden presentar en cada uno de los lenguajes de programación que soporta. No obstante, es un proyecto que no requiere ningún tipo de configuración previa y se puede descargar desde la página de GitHub. Otro de los beneficios de Insider es que cuenta con un GitHub Action que permite ejecutar pruebas sobre un repositorio de forma automática y gratuita en cuanto se ejecuta una operación PUSH en el repositorio.
La forma más rápida de empezar a utilizar la herramienta es con uno de los binarios precompilados que se encuentran disponibles en el repositorio, el cual, como se puede apreciar en la siguiente imagen, admite una serie de parámetros que hacen que la herramienta sea fácil de manejar.

Herramientas SAST para auditoría de código y SecDevOps – Parte 1

Se puede especificar el lenguaje con el parámetro "tech" y el directorio donde se encuentra el código fuente del proyecto con el parámetro "target". Por otro lado, una buena práctica consiste en indicar cuáles directorios o tipos de ficheros deben excluirse del análisis, esto se puede indicar con la opción "-exclude". Aquí normalmente se especifican los tipos de ficheros que no se deben analizar por parte de la herramienta, algo que a la larga ahorra tiempo ya que la herramienta se centrará unicamente en los ficheros con código fuente que interesa analizar. Cabe resaltar que la herramienta analiza los contenidos de todos los ficheros que se encuentra, da igual que sean imágenes, librerías o ejecutables, por ese motivo normalmente hay que incluir múltiples veces la opción "-exclude".

Herramientas SAST para auditoría de código y SecDevOps – Parte 1
Finalmente, los resultados que aporta la herramienta se enseñan en la terminal y se guardan en el directorio donde se ha ejecutado en dos ficheros separados, report.html y report.json. En dichos ficheros se podrá ver en detalle qué defectos y vulnerabilidades ha sido capaz de detectar la herramienta sobre el código.

Herramientas SAST para auditoría de código y SecDevOps – Parte 1

Tal como se puede apreciar en la lista de herramientas SAST disponible en el OWASP, hay muchas más alternativas, sin embargo algunos proyectos se encuentran abandonados o son comerciales, lo cual nos deja con una lista que no suele ser superior a 10 utilidades realmente potentes y que cuentan con una comunidad que apoya, difunde y mejora la herramienta. En el siguiente post mencionaremos otras dos herramientas SAST que además de ser libres, ayudan en la ejecución de auditorias de código profesionales.

Un saludo y Happy Hack!
Adastra.


Volver a la Portada de Logo Paperblog