Skip to main content

Salud de las dependencias: evaluación del riesgo de los paquetes con Snyk

Escrito por
Headshot of Anna Debenham

Anna Debenham

16 de mayo de 2019

0 minutos de lectura

El objetivo de Snyk es ayudarte a usar código abierto de forma segura. Las vulnerabilidades son un indicador de que una dependencia no está en buen estado, pero también intervienen otros factores de riesgo.

Por eso, contamos con todo un equipo dedicado a convertir a Snyk en el destino de referencia para consultar información sobre tus dependencias: desde seguridad e información sobre licencias hasta, ahora, su estado.

Este mes comenzamos a implementar la primera fase de nuestra iniciativa de salud de las dependencias para ayudar a los desarrolladores a identificar si alguna de las dependencias incluidas en su código podría implicar un riesgo.

Categorías de riesgo de salud

La nueva información sobre riesgos incluye:

  • Un indicador para los paquetes obsoletos

  • Fecha de la primera publicación del paquete (antigüedad)

  • Fecha de la última actualización del paquete (actividad)

  • Solo para los informes, la diferencia entre la versión actual de tu paquete y la versión más reciente (desactualización)

Aquí tienes más detalles sobre esta nueva información:

Estado problemático: ¿este paquete está obsoleto?

En npm, una dependencia se marca como “obsoleta” si su responsable ya no la actualiza. Ahora marcamos estos paquetes de snyk.io con un ícono de advertencia en la pestaña Dependencies de tus informes. También agregamos un filtro para que puedas ver solo los paquetes obsoletos.

Informe de dependencias con el menú de filtros abierto, que muestra los tipos de proyecto y el estado de salud de las dependencias configurado como obsoleto.

Además, agregamos una advertencia a la página del paquete correspondiente si la versión más reciente está obsoleta:

Página del paquete con vulnerabilidades de cryptiles, marcado como obsoleto, con la descripción «Utilidades criptográficas de uso general» y licencias BSD detectadas.

Algunos ejemplos de paquetes en los que puedes ver esta advertencia son cryptiles, node-uuid y hoek.

Antigüedad: ¿cuándo se publicó este paquete por primera vez?

Cuando preguntamos a nuestra comunidad qué consideraría una señal de alerta al instalar un paquete nuevo, muchos mencionaron primero su antigüedad: querían saber si el paquete llevaba tiempo disponible. Si se publicó por primera vez la semana pasada, probablemente no querrían instalarlo. Si se publicó hace más de un año, eso les indicaría que tiene más trayectoria. Por otro lado, algunos paquetes podrían considerarse “maduros” por error porque llevan mucho tiempo disponibles, aunque solo se haya publicado una versión. Por eso, también mostramos la última versión semántica (semver). Si es inferior a un rango como 0.1.0, podría indicar que aún está en una etapa muy temprana, así que quizá te convenga esperar antes de usarlo. Ahora mostramos estos datos en el informe:

Tabla de dependencias que destaca las versiones más recientes y las fechas de última publicación de paquetes como onetime, rc, restore-cursor y snyk-tree.

También mostramos estos datos en la página del paquete:

Página de Snyk Vulnerability Database para el paquete npm validator, con detalles de validación y sanitización de cadenas e información de versiones

Actividad: ¿se sigue manteniendo el paquete?

La fecha de última publicación también nos informa sobre la actividad del paquete. Muchos paquetes están prácticamente archivados, pero sus responsables no lo han indicado explícitamente. Es probable que un paquete que no se ha actualizado durante, por ejemplo, más de 12 meses no vuelva a actualizarse. Podría ser una biblioteca para un único propósito que se considera completa, pero si sus dependencias no se actualizan, implica un mayor riesgo.

Desactualización: ¿hay actualizaciones disponibles?

Si prefieres usar siempre la versión más reciente, ahora puedes comparar la dependencia instalada en tus proyectos con la última versión disponible de ese mismo paquete (sin incluir versiones alfa ni preliminares).

Tabla de dependencias que destaca las columnas de versión y última versión, con paquetes desactualizados como cryptiles, hoek, hawk, accept y ammo.

Como estos datos están directamente relacionados con tus proyectos, solo están disponibles en la sección de informes de Snyk.

Seguimos evaluando la calidad con Snyk

Una calificación de 4,5 estrellas no sería un buen indicador de la calidad de un producto si se basara en una sola reseña. Del mismo modo, los datos sobre la salud de las dependencias deben considerarse en un contexto más amplio. Por eso estamos ampliando nuestra base de datos con distintos indicadores de calidad para ayudar a nuestros clientes a revisar los riesgos y tomar decisiones más informadas. Recomendamos evaluar cada paquete en su contexto general: puede haber buenas razones por las que obtenga una puntuación baja en una métrica.

Y esto es solo el comienzo…

En los próximos meses ampliaremos el alcance y el nivel de detalle de la salud de las dependencias: agregaremos más puntos de datos a las categorías actuales, incorporaremos nuevas categorías, como popularidad, y ofreceremos políticas para automatizar la evaluación.

Cómo empezar

Encontrarás los detalles en la pestaña Dependencies de la sección de informes de Snyk (si tu plan de Snyk incluye informes) y en nuestras páginas de paquetes, disponibles para toda la comunidad de código abierto.

Por ahora, solo ofrecemos detalles de paquetes de npm. En los informes, estos datos se actualizan cada vez que Snyk toma una nueva instantánea del proyecto en el que se encontró la dependencia (de forma predeterminada, cada 24 horas).

Si tu plan incluye acceso a nuestra API, puedes usar nuestra API de dependencias para empezar a crear tus propios informes con scripts. También puedes exportar a un CSV todas tus dependencias para ayudar a tu equipo a priorizar las que sean problemáticas.

Pruébalo y cuéntanos qué otros datos te gustaría que mostremos.

Empieza con los desafíos de Capture the Flag

Aprende a resolver desafíos de captura la bandera con nuestro taller virtual introductorio a pedido.