Snyk - Plataforma de seguridad

Este artículo es un primer acercamiento a la plataforma de seguridad de código abierto Snyk. Esta plataforma se encarga de encontrar y corregir vulnerabilidades en el código de los proyectos. Aquí comentaré su instalación y configuración y la pondré en práctica con un par de proyectos.

Antes de comenzar quiero indicar que este documento forma parte de una serie de trabajos que realicé junto a Adrián Bazán en el Máster de Ciberseguridad de la UCA.

Instalación de Snyk

Para instalar Snyk en tu ordenador y poder usarlo desde la terminar, en primer lugar deberemos de tener instalado Node.js, para poder usar los comandos que se nos muestran en la página principal de Snyk.

Snyk 01

El segundo comando, mostrado abajo, nos permite loguearnos en Snyk. Tras ello solo deberíamos de irnos al directorio en el cual tengamos nuestro proyecto y ejecutar el tercero de los comandos.

Snyk 02

Análisis de proyecto

Para analizar un proyecto hemos optado por el siguiente código encontrado en GitHub: https://github.com/S3KDevelopers/s3kdev_packages/tree/master/framework7_scripts

Para su análisis hemos descargado el código y lo hemos situado en una carpeta local. Al ejecutar el comando snyk monitor nos ha advertido de que hay que instalar las dependencias del proyecto:

Snyk 03

Hemos ejecutado npm install en la carpeta para instalar dichas dependencias, y posteriormente hemos vuelto a ejecutar snyk monitor:

Snyk 04

Accediendo al enlace proporcionado por el resultado de ejecución nos ha indicado que todo está correcto:

Snyk 05

Conexión de GitHub con Snyk

Para sincronizar la cuenta de GitHub habría que ir al menú ‘Integrations’ y pulsar sobre GitHub dentro de ‘Source Control’.

Iniciamos sesión en nuestro GitHub y le damos los permisos necesarios. Posteriormente seleccionamos los proyectos que deseamos importar:

Snyk 06

Pulsamos en ‘Add selected repositories’ y se inicializará el proceso de importación:

Snyk 07

Una vez importados nuestros repositorios, tendríamos lo siguiente, donde podemos ver los proyectos que tenemos y el rojo amarillo o verde el nivel de gravedad de los errores en dicho proyecto.

Snyk 08

Análisis de un proyecto

En concreto nos centraremos en el proyecto DespliegueBar, que es una página web realizada hace unos 5 años donde se utilizaban diferentes frameworks como Bootstrap, Angular, jQuery o Bower. Si pulsamos sobre el proyecto, se nos abre un desplegable, donde podemos ver cada uno de los archivos analizados y a su vez, donde podemos encontrar concretamente, los errores que nos eran reflejados en el proyecto.

Snyk 09

Si hacemos click sobre el archivo en cuestión, podemos observar que las vulnerabilidades están referenciadas en Angular, Bootstrap y jQuery. Con respecto a AngularJS, indica varias vulnerabilidades de alto riesgo:

Snyk 10

Esta primera, nos indica que la versión 1.4.8 de AngularJS cuenta con vulnerabilidades graves, como por ejemplo la ejecución de código arbitrario a través de la etiqueta svg en las animación, así como vulnerabilidad XSS que hace que el navegador pueda ejecutar código peligroso. Con respecto a las vulnerabilidades XSS hay muchas otras vulnerabilidades además de la mostrada que tienen un riesgo medio, como por ejemplo esta:

Snyk 11

También, de riesgo medio, hay otro tipo de vulnerabilidades, como por ejemplo ataques de denegación de servicios, ataques de JSONP Callback y Clickjacking:

Snyk 12

Snyk 13

Con respecto a Bootstrap tenemos 5 vulnerabilidades de riesgo medio referidas a la versión 3.3.6. Las 5 vulnerabilidades permiten la explotación de XSS:

Snyk 14

Y por último tenemos una vulnerabilidad de alto riesgo en jQuery UI 1.11.4 la cual permite XSS a través del uso de la propiedad [closeText]:

Snyk 15

Configuración de Snyk

Otra de las opciones que nos proporciona Snyk es programar con qué frecuencia queremos que se realicen los tests sobre nuestro proyecto. Lo cual nos permitiría ir verificando nuestro proyecto conforme vamos desarrollándolo en el tiempo. Para ello debemos de pulsar en el botón a la derecha de cada archivo, llamado Project Settings.

Snyk 16

En la configuración del proyecto, se nos permite deshabilitar las notificaciones, desactivar el proyecto o eliminarlo, pero las opciones que más interesantes se presentan son las de realizar los tests sobre nuestro proyecto periódicamente, que como podemos ver en la imagen siguiente, se nos permite programarlos nunca, diariamente, o semanalmente.

Snyk 17

Algo a destacar, es que en la configuración, tal y como podemos ver en la imagen anterior, se nos suministra un Project ID, que nos permitirá a un nivel un tanto más elevado, desarrollar una serie de scripts haciendo uso de la API del Snyk, para dotar de más utilidad a la conjunción de Snyk y nuestro proyecto.

Snyk también permite invitar a otros usuarios a tu repositorio, para que colaboren. Para ello deberíamos ir a opciones de Snyk, Member y añadir el correo del usuario al que queramos invitar. Así mismo podríamos asignarle roles, según su prioridad.

Snyk 18

Written on February 8, 2021
Herramienta