Herramientas y plugins de seguridad para ciclos CI
En este nodo encontrarás todo lo necesario sobre herramientas y plugin que desde el departamento de Seguridad recomendamos para los desarrolladores (e integración continua).
En esta sección se facilitaran y/o ampliarán las herramientas propuestas por otras áreas.
Herramientas para revisión de código de Tecnologías en General
SonarQube
SonarQube envuelve múltiples herramientas de escaneo SAST para múltiples idiomas. Originalmente envolvió herramientas de código abierto, y ahora incluye verificadores propietarios escritos por SonarSource. Algunas de estas fichas, para lenguajes como Objective-C y Swift, C/C++, y otros lenguajes de legado sólo están disponibles en la versión comercial. Pero hay un buen soporte en la versión de código abierto de SonarQube para Java, JavaScript, PHP, y otros lenguajes como Erlang.
Uno de los principales propósitos de SonarQube es evaluar y rastrear la deuda técnica en las aplicaciones. Esto significa que la mayoría de los analizadores de código se centran en la mantenibilidad (para el estilo y las convenciones de codificación muy relacionado con calidad en el código), así como en la corrección de la codificación y los patrones de errores comunes. Sin embargo, SonarSource ha comenzado recientemente a incluir más analizadores específicos de seguridad, especialmente para Java.
SonarQube funciona en CI / CD, con plug-ins para Jenkins y GitHub. Puede establecer umbrales de calidad y notificar automáticamente al equipo cuando se violan. Recoge métricas y proporciona informes y cuadros de mando para analizar estas métricas a lo largo del tiempo, para identificar dónde se agrupan los errores y para comparar las métricas entre proyectos.
Esta disponible en el ciclo de DevOps, por lo que no se requiere una instalación en local, solo hace falta
Atención
En el siguiente cuadro solo están los plugins de SonarQube para las tecnologías recogidas en los Marcos del resto de áreas.
Este listado es exclusivamente para Seguridad, por lo que no se contemplan las áreas de calidad. Para ver el listado completo te recomendamos que visites el Marco de Referencia de DevOps: Listado de plug-ins SonarQube instalados
Técnología | Plugin | Observaciones / Enlace de Descarga |
---|---|---|
Java | SonarJava | |
Findbugs | ||
Java I18N Rules | ||
Python | SonarPython | |
JavaScript | SonarJS | |
CSS | SonarCSS | |
HTML | SonarHTML | |
Kotlin | SonarKotlin | |
XML | SonarXML | |
Swift | Open Source Swift | https://www.sonarplugins.com/openswift https://github.com/Idean/sonar-swift (Mantenido por terceros, puede estar obsoleto) |
Android | Android | |
WordPress | PHP_CodeSniffer | https://github.com/WordPress/WordPress-Coding-Standards (Mantenido por terceros, puede estar obsoleto) |
Todos los plugins han sido instalados por el equipo de DevOps.
Herramientas para revisión de código de Tecnología Específica
Tecnología | Herramienta | Descripción | Enlaces |
---|---|---|---|
Java | Spotbugs | Revisión de código o SAST (recomendable que compile el proyecto). Puede usarse como herramienta independiente o como plugins de un IDE. | (Recuerda que debes instalar los Extensions) |
Python | Bandit | Herramienta para buscar vulnerabilidades en el código fuente. A parte de buscar vulnerabilidades puede detectar por ejemplo si el usuario que corre las pruebas es root o admin, lo cual no cumple la condición de mínimos privilegios. |
Herramientas para la revisión de dependencias
DependencyCheck
Esta labor es vital para garantizar la Seguridad de la Aplicación, ya que nuestro puede ser perfecto, pero las dependencias que utilizamos pueden tener importantes brechas de seguridad, comprometiendo al producto al completo.
Se puede descargar el cliente para analizar por ejemplo: Java, NodeJS.
Vista de un reporte HTML:
Verificar el reporte de los CVE
Es importante validar el reporte de un CVE, ya que pueden ser falsos positivos.
Te recomendamos que visites el siguiente punto:
Verificación de vulnerabilidades en dependencias
Herramientas de análisis de tráfico HTTP / HTTPS
OWASP Zap
Este es un proxy que se utilizar para revisar la aplicación (protocolo HTTP/HTTPs) mientras navegamos por ella, pudiendo realizar pequeñas pruebas de pentesting web.
Es una herramienta Open Source muy útil.
La herramienta tiene el siguiente aspecto:
Referencia:
https://owasp.org/www-project-zap/
Plugins de Seguridad
Proveedor | Lenguaje | Plugin | Enlace de referencia |
---|---|---|---|
Java | Spotbugs | Spotbugs: https://spotbugs.github.io/ Requiere instalar manualmente las siguiente librerías: findSecBugs: https://find-sec-bugs.github.io/ fb-contrib: http://fb-contrib.sourceforge.net/ Proceso en este enlace | |
SonarLint | |||
Python | SonarLint | ||
JavaScript | SonarLint | ||
HTML | SonarLint | ||
Los plugins pueden no ser compatibles con todos los IDE. En cada plugin aparece la compatibilidad. Tiene IDE con versiones community y profesional que requiere licencia | Python | Python Security | |
SonarLint | |||
Dependency Analytics | https://plugins.jetbrains.com/plugin/12541-dependency-analytics | ||
Java | SonarLint | ||
Dependency Analytics | https://plugins.jetbrains.com/plugin/12541-dependency-analytics | ||
Android - Java | SonarLint | ||
Android - Kotlin | SonarLint | ||
Android | SecureFactor | https://plugins.jetbrains.com/plugin/13736-android-securefactor | |
FixDroid | |||
NodeJS | Node-security | ||
Dependency Analytics | https://plugins.jetbrains.com/plugin/12541-dependency-analytics | ||
JavaScript | SonarLint | ||
HTML | SonarLint | ||
Visual Studio | JavaScript | SonarLint | |
C# | SonarLint | ||
Visual Studio Code | JavaScript | SonarLint | |
HTML | SonarLint | ||
Java | SonarLint | ||
Dependency Analytics | https://marketplace.visualstudio.com/items?itemName=redhat.fabric8-analytics | ||
Python | SonarLint | ||
Dependency Analytics | https://marketplace.visualstudio.com/items?itemName=redhat.fabric8-analytics | ||
Cloud | Cloud Conformity Template Scanner Extension | https://marketplace.visualstudio.com/items?itemName=raphaelbottino.cc-template-scanner | |
NodeJS | npm-audit | https://marketplace.visualstudio.com/items?itemName=AbhijoyBasak.npm-audit | |
Dependency Analytics | https://marketplace.visualstudio.com/items?itemName=redhat.fabric8-analytics | ||
C# | SecurityIntelliSense | https://marketplace.visualstudio.com/items?itemName=azsdktm.SecurityIntelliSense | |
Multilanguage | Conector a SonarQube | https://marketplace.visualstudio.com/items?itemName=SonarSource.sonarqube |
Plugin Spotbugs
Spotbugs (Java en eclipse)
Esta herramienta (puede descargarse desde el Market de eclipse) dispone de unas librerías adicionales con características de seguridad muy interesantes.
Se recomienda configurar así:
Con la instalación por defecto veremos:
Librerías de Seguridad para Spotbugs
Para que la herramienta haga la debida revisión de seguridad debemos descargar 2 librerías jar:
findSecBugs, enlace: https://find-sec-bugs.github.io/
fb-contrib, enlace: http://fb-contrib.sourceforge.net/
findSecBugs
fb-contrib
Una vez instaladas veremos:
Ahora los reportes deberían incluir bugs de seguridad.
Uso
Nos dirigimos al código y con el botón derecho:
¿Por qué usar esta herramienta?
Podemos verificar de una manera más cercana a la científica el grado de "acierto" y de "error" de la herramienta.
En este caso podemos ver que tiene una tasa de acierto del 97,18% (vulnerabilidades que existen y ha detectado) y un 54,39% de falsos positivos (vulnerabilidades que no existen pero detecta como reales). Esto significa que filtrando los falsos positivos tenemos una cobertura del Top 10 de OWASP cercana al 100%.
Por este motivo el área de seguridad recomienda encarecidamente el uso de esta herramienta (sabiendo que tiene falsos positivos).
Métricas obtenidas a partir del proyecto: https://owasp.org/www-project-benchmark/