¿Tu sitio web es vulnerable? ¡Vamos a solucionarlo!
5 de marzo de 2020
0 minutos de lecturaSi tienes un sitio web, ya sea una aplicación SaaS web completa o un pequeño blog creado con Gatsby, WordPress o una configuración independiente de GitHub Pages, una de las principales preocupaciones que debes mitigar son las vulnerabilidades de seguridad.
Las vulnerabilidades de seguridad en bibliotecas JavaScript de terceros probablemente sean una de las principales preocupaciones de seguridad, ya que JavaScript es el lenguaje de programación más popular y el lenguaje preferido por los desarrolladores para crear sitios web. La práctica de depender del código abierto y de los módulos creados por colaboradores de comunidades de código abierto va en aumento y no parece que vaya a detenerse pronto, lo que también plantea importantes problemas de seguridad.
Recientemente, en octubre de 2019, Snyk compartió que el 84 % de todos los sitios web se ven afectados por vulnerabilidades XSS de jQuery, según los datos de investigación del informe de seguridad de frameworks de JavaScript de 2019.
Sin embargo, esto no sorprende demasiado. Informes anteriores de Snyk han revelado problemas similares: las vulnerabilidades de seguridad de JavaScript están muy extendidas en Internet:
Informe de marzo de 2017: el 77 % de los sitios usa al menos una biblioteca JavaScript vulnerable
Informe de noviembre de 2017: 77 % de 433,000 sitios usan bibliotecas JavaScript vulnerables
De hecho, el problema empeora cuando quienes desarrollamos y administramos sitios web no actualizamos las versiones de las dependencias de JavaScript instaladas. Esto genera un riesgo innecesario cuando se descubren vulnerabilidades de seguridad en una versión que usamos.
Cloudflare publicó recientemente una entrada de blog sobre los problemas de seguridad que revelaron los datos recopilados a través de sus servicios de red de distribución de contenido (CDN) y concluyó que las bibliotecas JavaScript casi nunca se actualizan después de instalarse.
Entonces, ¿tu sitio web es vulnerable?
Una forma sencilla de mitigar el riesgo de seguridad asociado a las dependencias de terceros vulnerables es detectar las bibliotecas y sus versiones, compararlas con una base de datos de vulnerabilidades confiable y luego actualizar las dependencias vulnerables a versiones corregidas.
Esto es mucho más fácil de lo que parece. Para que la información sobre las bibliotecas vulnerables de un sitio web fuera accesible y fácil de detectar, creé un proyecto de código abierto llamado is-website-vulnerable. Este proyecto se basa en la Snyk Vulnerability Database de vulnerabilidades de seguridad frontend y en la integración con Lighthouse de Snyk.
Usa is-website-vulnerable para encontrar vulnerabilidades de seguridad conocidas públicamente en las bibliotecas JavaScript de frontend de un sitio web:

Es una aplicación de línea de comandos (CLI) que puedes ejecutar para probar fácilmente tu sitio web.
Mi sitio web es vulnerable. ¿Cómo agrego pruebas de seguridad para evitar que vuelva a pasar?
Realizar un análisis dinámico de seguridad de sitios web, ya sea automatizado o manual, suele llevar mucho tiempo y ser costoso. Además, se necesita experiencia en seguridad y contexto de la aplicación para configurarlo correctamente en el sitio web o la aplicación web que se va a probar.
Una herramienta como is-website-vulnerable es una buena opción para detectar rápidamente posibles vulnerabilidades de JavaScript en bibliotecas desactualizadas o sin mantenimiento. Con esta herramienta, agregas pruebas que se ejecutan rápido y te recomiendan actualizar las versiones vulnerables para reducir el riesgo de seguridad general que implica usarlas.
Si usas GitHub Actions, aprovecha la herramienta is-website-vulnerable para analizar automáticamente tu sitio web en un pipeline de integración continua y hacer que la compilación falle si el sitio ejecuta versiones vulnerables de JavaScript.
Para hacerlo, crea el archivo .github/workflows/is-website-vulnerable.yml con la URL del sitio web que quieres analizar:
Si usas un sistema de CI que no sea GitHub Actions, usa la imagen de Docker de is-website-vulnerable o, como alternativa, instala la CLI y ejecútala directamente en el paso de CI.
Mi sitio web es vulnerable. ¿Cómo lo soluciono?
Saber que una dependencia de JavaScript que usas tiene una vulnerabilidad de seguridad es un excelente primer paso. Pero poder solucionarla y recibir de forma proactiva correcciones de seguridad automatizadas en tu repositorio de código fuente es otro nivel.
Snyk es gratis para proyectos de código abierto e incluso para paquetes privados (con algunos límites de uso). Conecta tu repositorio de código fuente con Snyk para monitorear las dependencias de código abierto que usas en tu proyecto. Y, mejor aún, cuando existe una vulnerabilidad en un proyecto que Snyk monitorea y puede corregir, crea proactivamente un Pull Request en el repositorio para sugerir una actualización.
Estas son las ventajas de usar las correcciones de seguridad de Snyk Open Source:
Snyk identifica la actualización mínima necesaria para corregir una vulnerabilidad y te avisa cuando existe el riesgo de que el código deje de funcionar.
Agiliza la clasificación de vulnerabilidades transitivas con las sugerencias de corrección de Snyk para la dependencia directa.
Cuando actualizar causa demasiados cambios (o no es posible), corrige el problema rápida y precisamente con los parches patentados de Snyk, desarrollados en colaboración con la persona encargada del mantenimiento.

Comienza con Capture the Flag
Aprende a resolver desafíos de Capture the Flag con nuestro taller virtual 101 a pedido.
