Las 5 mejores herramientas gratuitas para la evaluación de vulnerabilidades. Detección y corrección de vulnerabilidades en 2021

La creación de aplicaciones seguras requiere mucho más que el solo conocimiento de los desarrolladores, ya que un entorno adecuadamente protegido requiere de un análisis adecuado y el uso de buenas herramientas de seguridad.

Es por ello que los especialistas en análisis de vulnerabilidades del Instituto Internacional de Seguridad Cibernética (IICS) le mostrarán las 5 mejores herramientas para la detección de fallas de seguridad, además de algunos consejos para abordar los errores más comunes.

Recuerde que este artículo fue elaborado con fines exclusivamente informativos y las herramientas aquí enlistadas no deben ser utilizadas en un sistema ajeno sin previa autorización de los administradores. IICS no es responsable del mal uso que pueda darse a la información mostrada.

Acorde a los expertos en análisis de vulnerabilidades, esta lista fue elaborada tomando en cuenta algunos criterios específicos, listados a continuación:

  • Facilidad de personalización: Al evaluar esta característica se analizará capacidad para comenzar a usar la herramienta sin tener que leer un manual muy largo, algo muy apreciado por los profesionales del análisis de vulnerabilidades
  • Integración con los flujos de trabajo del desarrollador: Acceso en tiempo real a información sobre solicitudes de extracción y cambios para una correcta implementación
  • Empoderamiento y propiedad del usuario: Una buena herramienta no generará gastos adicionales o incrementará su carga de trabajo
  • Aprendizaje y Retroalimentación: Preferentemente, las herramientas de análisis de vulnerabilidades deben brindar cierto grado de retroalimentación, además de ayudar al usuario con nuevas formas de abordar potenciales problemas

Las herramientas analizadas se dividen en dos grupos según sus características: Escaneo de Dependencias y Análisis de Código

1. Escaneo de Dependencias

Los expertos en análisis de vulnerabilidades señalan que la actualización de dependencias es una de las prácticas básicas en términos de seguridad de aplicaciones, ya que la emisión de parches ayuda a mantener controlados los problemas más comunes. En esta clasificación encontramos dos herramientas para el escaneo automático de dependencias: Dependabot y Renovate.

  •  Dependabot

Dependabot cuenta con un flujo de trabajo simple y directo, ya que simplemente inicia solicitudes de extracción de forma automática para nuevas versiones de dependencias, advirtiendo la detección de potenciales riesgos de seguridad. Aunque Dependabot es personalizable, incluye parámetros básicos como la capacidad de establecer la frecuencia de actualización, etiquetas personalizadas y la designación de revisores, mencionan los expertos en análisis de vulnerabilidades.

La configuración de YAML es relativamente pequeña y no toma tanto tiempo establecer estos parámetros de forma correcta.

version: 2
updates:
  - package-ecosystem: "npm"
    directory: "/"
    schedule:
      interval: "weekly"
    labels:
      - "dependencies"

Por si no fuese suficiente, Dependabot cuenta con soporte para 15 lenguajes diferentes, incluyendo Terraform, Rust y Github Actions.

  •  Renovate

Al igual que Dependabot, Renovate se basa en el monitoreo de dependencias y el inicio de solicitudes de extracción cuando se entregan actualizaciones. Si bien Dependabot soporta más lenguajes, los expertos en análisis de vulnerabilidades mencionan que Renovate tiene más áreas de personalización.

Esta herramienta también proporciona un control granular sobre las dependencias de fusión automática según las reglas establecidas en la configuración. Por ejemplo, puede fusionar automáticamente actualizaciones menores en devDependencies.

"packageRules": [
    {
      "depTypeList": ["devDependencies"],
      "updateTypes": ["minor"],
      "automerge": true
    }
  ]

Además, esta herramienta permite agrupar las actualizaciones de dependencias de monorepositorios en lugar de crear otras separadas, reduciendo significativamente la carga de trabajo de los desarrolladores. La configuración de Renovate consiste en instalar la aplicación alojada y configurarla agregando el archivo Renovate.json a la raíz del repositorio.

2. Análisis de Código

Por otra parte, la capacidad para evaluar la seguridad de una muestra de código es esencial para asegurarse de realizar los cambios necesarios y mitigar los riesgos de seguridad para los usuarios finales de un producto.

Para estas tareas, los expertos en análisis de vulnerabilidades recomiendan echar un vistazo a herramientas como Snyk, GitGuardian y Webhint.

  •  Synk

Synk es un producto diseñado para desarrolladores, sin importar su experiencia o conocimiento previo en análisis de vulnerabilidades; en esencia, esta es una suite para la detección y corrección de vulnerabilidades en dependencias, contenedores y código. Si bien es necesario pagar para acceder a todas sus características, Synk cuenta con una opción gratuita que cubre proyectos de código abierto, ya sean proyectos personales o de equipos pequeños y medianos, lo que la hace un gran recurso para la investigación independiente y el aprendizaje.

Snyk usa análisis semántico para la detección de fallas de seguridad y rendimiento, emitiendo explicaciones detalladas de los problemas encontrados, el flujo de datos y el análisis de la solución y cómo prevenirla en el futuro.

La herramienta también asigna un puntaje a cada vulnerabilidad encontrada, además de contar con muchas otras herramientas útiles en su versión de paga, señalan los expertos en análisis de vulnerabilidades.

  •  GitGuardian

Esta es la herramienta ideal para todos aquellos desarrolladores o administradores de proyectos que trabajan con información personal o confidencial ya sean direcciones email, claves de acceso o detalles de infraestructura.

GitGuardian es capaz de descubrir y corregir errores de código de forma automática, además de que puede integrarse con GitHub y funciona con repositorios públicos y privados por igual. Además, la herramienta puede integrarse con el flujo de trabajo CI/CD, brindando a los desarrolladores información sobre cada incidente de seguridad.

  •  Webhint

Webhint es un marco de trabajo completamente gratuito y pensado para desarrolladores de todo el mundo, afirman expertos en análisis de vulnerabilidades. Webhint es una herramienta personalizable de código abierto que ayuda a mejorar la accesibilidad, velocidad, compatibilidad entre navegadores, seguridad y más en un sitio o aplicación web.

{
    "connector": {...},
    "formatters": [...],
    "hints": {
        "no-vulnerable-javascript-libraries": ["error", {
            "severity": "low|medium|high"
        }],
        ...
    },
    ...
}

Desde el punto de vista de la seguridad, un rastreador no solo mira el código, sino también los encabezados, lo cual es increíblemente útil. Junto con los títulos, se encuentra un problema con uno de los atributos rel para enlaces que otra herramienta como Snyk no habría notado.

Webhint proporciona ejemplos que transmiten una pista, junto con una explicación de por qué la pista es importante, lo que también permite un gran aprendizaje para los desarrolladores.

Webhint viene como una solución basada en navegador y una extensión de VScode, así como una interfaz de línea de comandos que se puede incluir en las canalizaciones de CI/CD, por lo que se integra en el flujo de trabajo del desarrollador y proporciona múltiples niveles de retroalimentación.

Conclusiones

Según sea el caso, los desarrolladores deberán encontrar la herramienta que les permita crear un entorno de trabajo más seguro, lo que reducirá considerablemente el impacto de las fallas de seguridad al llegar a los usuarios finales.

Para conocer más sobre riesgos de seguridad informática, malware, vulnerabilidades y tecnologías de la información, no dude en ingresar al sitio web del Instituto Internacional de Seguridad Cibernética (IICS).