Graudit admite múltiples lenguajes de programación y permite integrar pruebas de seguridad en la base de código directamente en el proceso de desarrollo.

Fuente: (Markus Spiske)
Las pruebas son una parte importante del ciclo de vida del desarrollo de software. Existen muchos tipos de pruebas, cada una de ellas resuelve un problema específico. Hoy quiero hablar sobre la búsqueda de problemas de seguridad en el código.
Es evidente que, en la realidad actual del desarrollo de software, es importante garantizar la seguridad de los procesos. Hubo un tiempo en que se introdujo un término específico: DevSecOps. Este término se refiere a una serie de procedimientos destinados a identificar y solucionar vulnerabilidades en las aplicaciones. Existen soluciones especializadas de código abierto para la verificación de vulnerabilidades, de acuerdo con las normas , que describen varios tipos y comportamientos de vulnerabilidades en el código fuente.
Existen diferentes enfoques para resolver problemas de seguridad, como el análisis de seguridad estática de aplicaciones (SAST), el análisis de seguridad dinámica de aplicaciones (DAST), el análisis de seguridad interactiva de aplicaciones (IAST), el análisis de componentes del software (Software Composition Analysis), y así sucesivamente.
El análisis de seguridad estática de aplicaciones identifica errores en el código ya escrito. Este enfoque no requiere la ejecución de la aplicación, por lo que se llama análisis estático.
Me centraré en el análisis estático del código y utilizaré una simple herramienta de código abierto para demostrar todo en la práctica.
Por qué elegí una herramienta de código abierto para el análisis de seguridad estática del código
Hay varias razones: en primer lugar, es gratuito, ya que utilizas una herramienta desarrollada por una comunidad de personas afines que quieren ayudar a otros desarrolladores. Si tienes un pequeño equipo o una startup, tienes una excelente oportunidad de ahorrar utilizando software de código abierto para verificar la seguridad de tu base de código. En segundo lugar, esto te libera de la necesidad de contratar un equipo separado de DevSecOps, lo que reduce aún más tus costos.
Las buenas herramientas de código abierto siempre se crean teniendo en cuenta altas exigencias de flexibilidad. Por lo tanto, se pueden utilizar prácticamente en cualquier entorno, abarcando una amplia gama de tareas. A los desarrolladores les resulta mucho más fácil integrar estas herramientas con el sistema que ya han construido al trabajar en sus proyectos.
Sin embargo, pueden surgir situaciones en las que necesite una función que no está en la herramienta que ha elegido. En este caso, tiene la opción de bifurcar su código y desarrollar su propia herramienta basada en él con la funcionalidad que necesita.
Dado que en la mayoría de los casos el desarrollo de software de código abierto está influenciado activamente por la comunidad, las decisiones sobre los cambios se toman bastante rápidamente y de manera fundamentada: los desarrolladores del proyecto de código abierto se basan en los comentarios y sugerencias de los usuarios, así como en sus reportes sobre errores y otros problemas.
Uso de Graudit para el análisis de seguridad del código
Para el análisis estático del código se pueden utilizar diferentes herramientas de código abierto; no existe una herramienta universal para todos los lenguajes de programación. Algunos desarrolladores de estas herramientas siguen las recomendaciones de OWASP y tratan de abarcar la mayor cantidad de lenguajes posible.
Aquí utilizaremos , una sencilla utilidad de línea de comandos que nos permitirá encontrar vulnerabilidades en nuestra base de código. Soporta diferentes lenguajes, aunque su conjunto es limitado. Graudit se desarrolló basado en la utilidad de grep, que en su tiempo fue liberada bajo licencia GNU.
Existen herramientas similares para el análisis estático del código: Rough Auditing Tool for Security (RATS), Securitycompass Web Application Analysis Tool (SWAAT), flawfinder, entre otras. Sin embargo, Graudit es muy flexible y tiene requisitos técnicos mínimos. Aun así, puede haber tareas que Graudit no pueda resolver, en cuyo caso puede buscar otras opciones en .
Podemos integrar esta herramienta en un proyecto específico, o ponerla a disposición de un usuario elegido, o bien, usarla simultáneamente en todos nuestros proyectos. Aquí también se manifiesta la flexibilidad de Graudit. Así que, primero clonemos el repositorio:
$ git clone https://github.com/wireghoul/grauditAhora vamos a crear un enlace simbólico para Graudit, para usarlo en formato de comando
$ cd ~/bin && mkdir graudit
$ ln --symbolic ~/graudit/graudit ~/bin/grauditAgreguemos un alias en .bashrc (o en otro archivo de configuración que estés utilizando):
#------ .bashrc ------
alias graudit="~/bin/graudit"Reiniciemos:
$ source ~/.bashrc # O
$ exec $SHELL
Verifiquemos si la instalación fue exitosa:
$ graudit -hSi ves algo similar, entonces todo está bien.

Voy a probar uno de mis proyectos ya existentes. Antes de ejecutar la herramienta, necesita recibir una base de datos correspondiente al lenguaje en el que está escrito mi proyecto. Las bases de datos se encuentran en la carpeta ~/gradit/signatures:
$ graudit -d ~/gradit/signatures/js.dbAsí que probé dos archivos js de mi proyecto, y Graudit mostró en la consola información sobre vulnerabilidades en mi código:


Puedes intentar probar tus proyectos de la misma manera. La lista de bases de datos para diferentes lenguajes de programación se puede ver .
Ventajas y desventajas de Graudit
Graudit soporta muchos lenguajes de programación. Por lo tanto, es adecuado para una amplia gama de usuarios. Puede competir dignamente con cualquier alternativa gratuita o de pago. Y es muy importante que el proyecto continúe recibiendo mejoras, y que la comunidad no solo ayuda a los desarrolladores, sino también a otros usuarios que intentan entender la herramienta.
Es una herramienta conveniente, pero aún no siempre puede indicar con precisión en qué consiste el problema relacionado con la parte sospechosa del código. Los desarrolladores continúan mejorando Graudit.
Pero en cualquier caso, es útil prestar atención a posibles problemas de seguridad en el código, utilizando herramientas como esta.
Comienzo…
En este artículo solo revisé una de las muchas formas de buscar vulnerabilidades: las pruebas de seguridad estáticas de aplicaciones. Realizar un análisis estático de código es fácil, pero esto es solo el comienzo. Para conocer más sobre la seguridad de tu base de código, necesitas integrar otros tipos de pruebas en el ciclo de vida del desarrollo de software.
Publicidad
y la elección correcta del plan tarifario te permitirán distraerte menos del desarrollo por problemas incómodos: ¡todo funcionará sin fallos y con un uptime muy alto!
Fuente: habr.com
