Cómo utilizar una sencilla utilidad para encontrar vulnerabilidades en el código del programa

Graudit admite muchos lenguajes de programación y le permite integrar pruebas de seguridad de base de código directamente en el proceso de desarrollo.





Fuente: Unsplash (Markus Spiske) Las



pruebas son una parte importante del ciclo de vida del desarrollo de software. Hay muchos tipos de pruebas, cada una de las cuales resuelve su propio problema. Hoy quiero hablar sobre cómo encontrar problemas de seguridad en el código.



Obviamente, en las realidades modernas del desarrollo de software, es importante garantizar la seguridad del proceso. En un momento, incluso se introdujo el término especial DevSecOps. Este término se refiere a una serie de procedimientos destinados a identificar y eliminar vulnerabilidades en una aplicación. Existen soluciones especializadas de código abierto para verificar vulnerabilidades de acuerdo con los estándares OWASP , que describen los diferentes tipos y comportamientos de vulnerabilidades en el código fuente.





Existen diferentes enfoques para resolver problemas de seguridad, por ejemplo, pruebas de seguridad de aplicaciones estáticas (SAST), pruebas de seguridad de aplicaciones dinámicas (DAST), pruebas de seguridad de aplicaciones interactivas (IAST), análisis de componentes de software (Análisis de composición de software), etc.



Las pruebas de seguridad de aplicaciones estáticas detectan errores en el código ya escrito. Este enfoque no requiere ejecutar la aplicación, por lo que se denomina análisis estático.



Me enfocaré en el análisis de código estático y usaré una herramienta simple de código abierto para demostrar todo en la práctica.



Por qué elegí una herramienta de análisis de seguridad de código estático de código abierto



Hay varias razones para esto: primero, es gratis, porque estás usando una herramienta desarrollada por una comunidad de personas con ideas afines que quieren ayudar a otros desarrolladores. Si tiene un equipo pequeño o una startup, tiene una gran oportunidad de ahorrar dinero utilizando software de código abierto para probar la seguridad de su base de código. En segundo lugar, le ahorra la molestia de contratar un equipo de DevSecOps por separado, lo que reduce aún más sus costos.



Las buenas herramientas de código abierto siempre se crean teniendo en cuenta una mayor flexibilidad. Por lo tanto, se pueden utilizar en casi cualquier entorno, cubriendo una amplia gama de tareas. Es mucho más fácil para los desarrolladores hacer amigos de tales herramientas con el sistema que ya han construido mientras trabajan en sus proyectos.



Pero puede haber situaciones en las que necesite una función que no esté disponible en la herramienta elegida. En este caso, tiene la oportunidad de bifurcar su código y desarrollar sobre su base su propia herramienta con la funcionalidad que necesita.



Dado que en la mayoría de los casos la comunidad influye activamente en el desarrollo de software de código abierto, la decisión de realizar cambios se toma con bastante rapidez y al grano: los desarrolladores del proyecto de código abierto confían en los comentarios y sugerencias de los usuarios, en sus informes de errores y otros problemas.



Uso de Graudit para analizar la seguridad del código



Se pueden utilizar varias herramientas de código abierto para el análisis de código estático; no existe una herramienta universal para todos los lenguajes de programación. Algunos de ellos siguen las pautas de OWASP y tratan de cubrir tantos idiomas como sea posible.



Aquí usaremos Graudit , una sencilla utilidad de línea de comandos que nos permitirá encontrar vulnerabilidades en nuestro código base. Es compatible con diferentes idiomas, pero aún así su conjunto es limitado. Graudit se desarrolla sobre la base de la utilidad grep, que se publicó bajo la licencia GNU.



Existen herramientas similares para el análisis de código estático: Rough Auditing Tool for Security (RATS), Securitycompass Web Application Analysis Tool (SWAAT), flawfinder, etc. Pero Graudit es muy flexible y tiene requisitos técnicos mínimos. Sin embargo, es posible que tenga problemas que Graudit no pueda resolver. Entonces puede buscar otras opciones aquí en esta lista .



Podemos integrar esta herramienta en un proyecto específico, o ponerla a disposición de un usuario seleccionado, o utilizarla simultáneamente en todos nuestros proyectos. Aquí también es donde Graudit es flexible. Entonces clonemos el repositorio primero:



$ git clone https://github.com/wireghoul/graudit


Ahora creemos un enlace simbólico para que Graudit lo use en formato de comando



$ cd ~/bin && mkdir graudit
$ ln --symbolic ~/graudit/graudit ~/bin/graudit


Agregue un alias a .bashrc (o cualquier archivo de configuración que esté usando):



#------ .bashrc ------
alias graudit="~/bin/graudit"


Reiniciar:



$ source ~/.bashrc # OR
$ exex $SHELL


Comprobemos si la instalación fue exitosa:



$ graudit -h




Si ves algo similar, entonces todo está bien.







Estaré probando uno de mis proyectos existentes. Antes de ejecutar la herramienta, debe pasar la base de datos correspondiente al idioma en el que está escrito mi proyecto. Las bases de datos se encuentran en la carpeta ~ / gradit / signatures:



$ graudit -d ~/gradit/signatures/js.db


Entonces, probé dos archivos js de mi proyecto y Graudit imprimió información sobre vulnerabilidades en mi código en la consola:











puede intentar probar sus proyectos de la misma manera. La lista de bases de datos para diferentes lenguajes de programación se puede encontrar aquí .



Ventajas y desventajas de Graudit



Graudit admite muchos lenguajes de programación. Por tanto, es adecuado para una amplia gama de usuarios. Puede competir con cualquier contraparte gratuita o de pago. Y es muy importante que se sigan realizando mejoras en el proyecto y que la comunidad no solo ayude a los desarrolladores, sino también a otros usuarios que están intentando descubrir la herramienta.



Esta es una herramienta útil, pero hasta ahora no siempre es capaz de indicar exactamente cuál es el problema asociado con un código sospechoso. Los desarrolladores continúan perfeccionando Graudit.



Pero en cualquier caso, es útil prestar atención a los posibles problemas de seguridad en su código al utilizar dichas herramientas.



Comienzo...



En este artículo, he considerado solo una de las muchas formas de encontrar vulnerabilidades: las pruebas de seguridad de aplicaciones estáticas. El análisis de código estático es fácil, pero esto es solo el comienzo. Para obtener más información sobre la seguridad de su código base, debe integrar otros tipos de pruebas en el ciclo de vida del desarrollo de software.






Publicidad



Un VPS confiable y la elección correcta de un plan de tarifas le permitirán distraerse menos del desarrollo por problemas desagradables: ¡todo funcionará sin problemas y con un tiempo de actividad muy alto!






All Articles