LGTM: ver vulnerabilidades en el código

0
3851

Índice de contenidos

1. Entorno

Este tutorial está escrito usando el siguiente entorno:

  • Hardware: Slimbook Pro 2 13.3″ (Intel Core i7, 32GB RAM)
  • Sistema Operativo: Linux Mint 19

2. Introducción

En el ámbito de la seguridad de nuestras aplicaciones nunca podemos estar 100% seguros de no tener vulnerabilidades en nuestro código que faciliten poder hacer maldades en nuestras aplicaciones.

Es por ello que en el mercado están surgiendo herramientas que tratan de automatizar el chequeo de ciertas vulnerabilidades conocidas por todos como: SQL Injection, CSRF, XSS, etc… tienes una lista amplia en este enlace.

En este tutorial vamos a hablar de una que se está posicionando como una buena alternativa gratuita para proyectos Open Source para el chequeo de vulnerabilidades de este tipo, favoreciendo el «code review» en los proyectos: LGTM. Actualmente esta herramienta soporta los siguientes lenguajes: Java, TypeScript/JavaScript, Python, C/C++ y C#.

3. Vamos al lío

LGTM es una herramienta que sigue el modelo de negocio y el funcionamiento de otras como Travis; es decir nos permite conectar nuestros repositorios públicos de GitHub para la ejecución del análisis de nuestro código. Mientras el repositorio sea público no tendremos que pagar ningún tipo de licencia.

Para acceder a la herramienta tenemos que ir a su sitio web y registrarnos. La forma más cómoda es hacerlo con alguna de las opciones sociales que te ofrece como la cuenta que tengamos en GitHub.

Una vez seleccionada esta opción, nos pedirá el usuario y contraseña de GitHub.

Y nuestra autorización para poder conectar:

Hecho esto nos solicitará un username y pulsando en «Let’s go!» estaremos preparados para comenzar a utilizar la herramienta:

Esto nos va a llevar a nuestro dashboard donde se muestra la lista de proyectos que tenemos analizados. Para añadir un nuevo proyecto solo tenemos que poner la URL de un repositorio público ya sea nuestro o no y pulsar en «Add».

Al momento el proyecto quedará registrado y el sistema comenzará con su análisis, el cual puede tardar varios minutos.

Al finalizar el análisis, el sistema nos envía un correo advirtiendo de este hecho y podemos ver en el dashboard las alertas que haya detectado, pulsando en el detalle de cada proyecto analizado.

Dentro de la pestaña «Alerts» podemos ver el número de alertas y el detalle de cada una de ellas. En este caso la herramienta ha detectado algunos imports que no están utilizando y los marca como recomendaciones:

En otros casos puede encontrar errores de seguridad como la posibilidad de SQL Injections:

En la pestaña «Files» encontramos un diagrama de densidad que nos permite navegar por la estructura del proyecto y llegar a ver el código fuente y el número de líneas de cada fichero.

En la pestaña «Compare» nos da una comparación entre el proyecto analizados con respecto al estado de otros proyectos similares.

En la pestaña «Dependencies» nos da un listado de todas las dependencias de nuestro proyecto junto con las alertas de esas dependencias.

Y, por último, en la pestaña «Integrations» nos permite activar el Code Review automático en las pull request del repositorio (si somos nosotros los administradores) y nos ofrece fragmentos de código para mostrar como badget del resultado del análisis en el README del proyecto.

En caso de querer activar las pull request pulsamos en «Activate automated code review», lo que va a hacer que nos solicite permiso para acceder a más información de nuestro proyecto en GitHub.

De esta forma cada vez que haya una pull request automáticamente LGTM analizará los cambios y nos informará de si presenta algún tipo de alerta.

4. Conclusiones

Todavía queda un largo camino para que este tipo de herramientas detecten todos los tipos de vulnerabilidades existentes de forma automática; pero si que es cierto, que LGTM de una manera sencilla y gratuita para proyectos en repositorios públicos, puede ser una buena opción a la hora de solventar este tipo de alertas.

Cualquier duda o sugerencia en la zona de comentarios.

Saludos

DEJA UNA RESPUESTA

Por favor ingrese su comentario!

He leído y acepto la política de privacidad

Por favor ingrese su nombre aquí

Información básica acerca de la protección de datos

  • Responsable:
  • Finalidad:
  • Legitimación:
  • Destinatarios:
  • Derechos:
  • Más información: Puedes ampliar información acerca de la protección de datos en el siguiente enlace:política de privacidad