Skip to main content

Priorización al máximo con el nuevo Priority Score de Snyk

Escrito por
Headshot of Dan Mckean

Dan Mckean

Prioritisation header feature

4 de agosto de 2020

0 minutos de lectura

El nuevo Priority Score de Snyk simplifica enormemente uno de los mayores desafíos de usar código abierto de forma segura: determinar qué vulnerabilidades corregir primero.

Para la mayoría de las organizaciones, corregir todas las vulnerabilidades simplemente no es viable. Cada cambio tiene un costo, que suele aumentar con la antigüedad y la complejidad del software. En promedio, un repositorio tiene más de 35 vulnerabilidades el día que se importa por primera vez a Snyk, mientras que los proyectos de contenedores tienen más de 130 cada uno.

Cómo funciona el puntaje

Nuestro algoritmo Priority Score procesa diversos puntos de datos (factores) para generar un puntaje de entre 0 y 1000. Empezamos con una escala de 0 a 100, pero pronto nos dimos cuenta de que las empresas no solo priorizan dentro de un proyecto, sino también entre _todos_sus proyectos. La granularidad es clave para evitar el problema que surge al usar solo la gravedad o incluso CVSS: ¡que todo quede como máxima prioridad! Calculamos la ponderación de los distintos factores para garantizar una distribución equilibrada de los puntajes y, a la vez, que los riesgos más altos reciban los puntajes más altos.

Puedes ver los puntajes de cada problema en la vista Projects, donde ahora todos los problemas están ordenados por Priority Score para mostrarte primero los más urgentes. También puedes filtrar los problemas por rango de puntaje.

Panel de seguridad que muestra una vulnerabilidad de deserialización crítica y alcanzable, con detalles de corrección y opciones de filtrado.

Los puntajes también aparecen en la pestaña Issues de la sección Reports (para clientes con un plan de pago), e incluyen Priority Score como una columna que puedes ordenar. La tabla ya está ordenada por puntaje de forma predeterminada, para que puedas priorizar tu tiempo de inmediato. También puedes filtrar los problemas por puntaje.

Panel de problemas de Snyk que muestra vulnerabilidades ordenadas por puntuación; se destacan problemas de gravedad alta con puntuaciones de 899, 786 y 756.

Actualmente, los puntajes de las posiciones más bajas se pueden consultar mediante las distintas llamadas de API relacionadas con problemas (para clientes con planes de pago). Ahora estas llamadas devuelven los puntajes en la respuesta y permiten filtrar por puntaje.

Obtén más información sobre las llamadas de API correspondientes:

Cómo se calcula el puntaje

La primera versión del algoritmo procesa hasta 10 factores por problema. Hacerlo manualmente (o incluso en hojas de cálculo) sería una tarea abrumadora cuando se trata de miles de vulnerabilidades en los proyectos de una empresa. En el futuro, Snyk planea agregar muchos más factores para ayudar a determinar mejor dónde conviene invertir tiempo para reducir los riesgos de seguridad.

Estos son solo algunos de los factores que ya incluimos; la lista no es exhaustiva.

CVSS es la base de la clasificación de prioridades de la mayoría de las vulnerabilidades. Aunque ya considera una amplia variedad de factores, no tiene en cuenta la vulnerabilidad específica en el contexto de tu proyecto. Además, priorizar solo con CVSS es difícil cuando más del 23 % de las vulnerabilidades que detecta Snyk tienen un CVSS superior a 8.0. En cambio, nuestro Priority Score ofrece una distribución mucho mejor: menos del 5 % obtiene más de 800 puntos de 1000. Aun así, el valor de CVSS es indiscutible, por lo que tiene un peso considerable en el algoritmo de puntuación de Snyk.

El siguiente factor es la gravedad. Aunque está estrechamente correlacionada con CVSS, en algunos ecosistemas no es posible calcular CVSS y, en ciertos casos, ya no es preciso. Las Políticas de seguridad de Snyk permiten cambiar la gravedad de un problema según información que ni siquiera Snyk puede determinar, como si el servicio es crítico para el negocio. Cambiar la gravedad permite tener esto en cuenta al priorizar y reducir el puntaje asignado.

Un factor evidente es Exploit Maturity de Snyk. El equipo de seguridad de Snyk, líder en la industria, usa métodos manuales y automatizados para hacer un seguimiento de qué vulnerabilidades son explotables y en qué medida. Esta información es fundamental para determinar el riesgo que representa una vulnerabilidad.

También estamos incorporando al Priority Score información sobre vulnerabilidades alcanzables, una novedad para Snyk en general. Al analizar las rutas de código que se ejecutan en un proyecto, podemos ayudar a nuestros usuarios a identificar qué vulnerabilidades son realmente alcanzables en el código.

Aunque la disponibilidad de una corrección no cambia el riesgo que representa una vulnerabilidad, sí cambia drásticamente el costo de corregirla. Si no hay una versión más segura a la que actualizar ni un parche práctico de Snyk, la única alternativa para mitigar la vulnerabilidad es corregirla por tu cuenta o usar otro paquete en el software. Ninguna opción es sencilla ni rápida, y las vulnerabilidades que no se pueden corregir suelen considerarse un riesgo inevitable.

Por último, está el tiempo, uno de los factores más difíciles para evaluar el impacto. Antes de analizar los datos, planteamos la hipótesis de que las vulnerabilidades podrían representar un mayor riesgo justo después de publicarse, pero que también podrían ganar «popularidad» con el tiempo. Resultó que lo primero tiene un impacto mucho mayor en el riesgo que representa una vulnerabilidad, por lo que también es un factor en el puntaje.

Además de estos, estamos trabajando en varios factores del algoritmo, como el análisis estático de código para identificar qué vulnerabilidades se encuentran en rutas de código que realmente se usan.

Cómo empezar

El Priority Score de Snyk ya está disponible para todos los usuarios de Snyk. Para empezar, revisa las vulnerabilidades de cualquiera de tus proyectos o ve a la pestaña Issues de la sección Reporting para ver qué problemas debes corregir primero.

Obtén más información en el Centro de conocimiento de Snyk.