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

Técnología

Plugin

Observaciones / Enlace de Descarga

Java

SonarJava

https://www.sonarplugins.com/java

Findbugs

https://www.sonarplugins.com/findbugs

Java I18N Rules

https://www.sonarplugins.com/javai18n

Python

SonarPython

https://www.sonarplugins.com/python

JavaScript

SonarJS

https://www.sonarplugins.com/javascript

CSS

SonarCSS

https://www.sonarplugins.com/cssfamily

HTML

SonarHTML

https://www.sonarplugins.com/web

Kotlin

SonarKotlin

https://www.sonarplugins.com/kotlin

XML

SonarXML

https://www.sonarplugins.com/xml

Swift

Open Source Swift

https://www.sonarplugins.com/openswift

https://github.com/Idean/sonar-swift

(Mantenido por terceros, puede estar obsoleto)

Android

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

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.

https://spotbugs.github.io/

(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.

https://bandit.readthedocs.io/en/latest/

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:

https://onesaitplatform.atlassian.net/wiki/spaces/technologyDocEs/pages/3796213717

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

Proveedor

Lenguaje

Plugin

Enlace de referencia

Eclipse

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

https://www.sonarlint.org/eclipse/

Python

SonarLint

https://www.sonarlint.org/eclipse/

JavaScript

SonarLint

https://www.sonarlint.org/eclipse/

HTML

SonarLint

https://www.sonarlint.org/eclipse/

IntelliJ

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

https://plugins.jetbrains.com/plugin/13609-python-security

SonarLint

https://plugins.jetbrains.com/plugin/7973-sonarlint

Dependency Analytics

https://plugins.jetbrains.com/plugin/12541-dependency-analytics

Java

SonarLint

https://plugins.jetbrains.com/plugin/7973-sonarlint

Dependency Analytics

https://plugins.jetbrains.com/plugin/12541-dependency-analytics

Android - Java

SonarLint

https://plugins.jetbrains.com/plugin/7973-sonarlint

Android - Kotlin

SonarLint

https://plugins.jetbrains.com/plugin/7973-sonarlint

Android

SecureFactor

https://plugins.jetbrains.com/plugin/13736-android-securefactor

FixDroid

https://plugins.jetbrains.com/plugin/9497-fixdroid

NodeJS

Node-security

https://plugins.jetbrains.com/plugin/10386-node-security

Dependency Analytics

https://plugins.jetbrains.com/plugin/12541-dependency-analytics

JavaScript

SonarLint

https://plugins.jetbrains.com/plugin/7973-sonarlint

HTML

SonarLint

https://plugins.jetbrains.com/plugin/7973-sonarlint

Visual Studio

JavaScript

SonarLint

https://www.sonarlint.org/visualstudio/

C#

SonarLint

https://www.sonarlint.org/visualstudio/

Visual Studio Code

JavaScript

SonarLint

https://www.sonarlint.org/vscode/

HTML

SonarLint

https://www.sonarlint.org/vscode/

Java

SonarLint

https://www.sonarlint.org/vscode/

Dependency Analytics

https://marketplace.visualstudio.com/items?itemName=redhat.fabric8-analytics

Python

SonarLint

https://www.sonarlint.org/vscode/

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

 

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/

Referencias

https://spotbugs.github.io/

https://www.sonarlint.org/

https://plugins.jetbrains.com/search?search=security

https://marketplace.visualstudio.com