Tener una dependencia vulnerable no siempre significa que la aplicación llame a la función afectada. Reachability analysis agrega un veredicto a cada Dependabot alerta para ayudarle a priorizar las correcciones en función de cómo el código usa la dependencia.
Nota:
Reachability analysis para Dependabot alerts está en versión preliminar pública y está sujeto a cambios.
Cómo funciona reachability analysis
Reachability analysis analiza su open Dependabot alerts para determinar si la aplicación puede llamar a las funciones vulnerables. Usa CodeQL análisis estáticos y datos seleccionados que identifican las funciones afectadas para buscar rutas de acceso de llamada desde el código a esas funciones.
Cada alerta analizada Dependabot recibe un veredicto que le ayuda a decidir su prioridad. Cuando esté disponible, la evidencia de la ruta de llamadas muestra cómo el código puede llegar a una función vulnerable, por lo que puede comprender por qué una alerta es importante para la aplicación.
Requisitos y ecosistemas admitidos
Reachability analysis admite repositorios de JavaScript que usan npm, pnpm o Yarn, y repositorios de TypeScript. El repositorio debe tener un archivo de bloqueo, como package-lock.json, pnpm-lock.yamlo yarn.lock.
Dependabot alerts debe estar habilitado para que reachability analysis funcione.
El análisis se ejecuta en ejecutores alojados en GitHub. No se admiten ejecutores autohospedados.
Comprender los veredictos de alcanzabilidad
Use la alcanzabilidad junto con la gravedad, las puntuaciones de Exploit Prediction Scoring System (EPSS), el ámbito de dependencia y la relación de dependencia para decidir qué alertas abordar primero.
| Veredicto | Meaning | Respuesta recomendada |
|---|---|---|
| Accesible | El análisis encontró al menos una ruta de llamada desde el código de su repositorio a una función vulnerable. | Priorice la corrección y revise la evidencia de la ruta de llamada. |
| Potencialmente accesible | El análisis no pudo descartar una llamada a una función vulnerable. Esta incertidumbre no se debe a un ecosistema no admitido o a un escaneo fallido. En los repositorios con varios manifiestos, las llamadas que solo se encuentran fuera del directorio de un manifiesto se consideran potencialmente accesibles. | Priorice la corrección junto con las alertas alcanzables. |
| No accesible | El análisis se completó y no encontró una llamada del código de la aplicación a una función vulnerable. | Asigne a la alerta una prioridad más baja, pero no la descarte o cierre únicamente debido a este veredicto. |
| Capacidad de conexión no disponible | El análisis no pudo proporcionar un veredicto, por ejemplo, porque la alerta es para un ecosistema no admitido o el análisis falló o superó el tiempo de espera. | Clasificar la alerta mediante las otras señales de priorización. |
Usa la alcanzabilidad para priorizar, no cerrar, alertas
Reachability analysis agrega información a las alertas abiertas existentes para ayudarle a priorizar la corrección. No encuentra nuevas vulnerabilidades ni cierra ni descarta automáticamente las alertas.
Un veredicto es una evaluación puntual. No debe cerrar ni descartar una alerta únicamente en función de su veredicto de alcanzabilidad; aunque es posible que hoy no se pueda acceder a una función desde el código, los cambios de código o las actualizaciones de un aviso de seguridad pueden cambiar el resultado de un examen posterior.
La alcanzabilidad no es explotabilidad
Una función accesible no es necesariamente explotable. La alcanzabilidad muestra que existe una ruta de llamada, no que un atacante pueda usarla para aprovechar la vulnerabilidad.
Del mismo modo, un veredicto "Inaccesible" no es una garantía de que una dependencia sea segura. Siga revisando estas alertas y mantenga actualizadas las dependencias.
Evidencia de la trayectoria de llamada
En el caso de las alertas alcanzables, la evidencia de la ruta de llamada muestra cómo una llamada del código puede dar lugar a una función vulnerable. Use esta evidencia para comprender dónde usa la aplicación la dependencia afectada y planificar la corrección.
Una alerta puede mostrar hasta cinco rutas de acceso de ejemplo. Estos ejemplos no son una lista exhaustiva de cada ruta de acceso de llamada posible.
Comprender cuándo se actualizan los resultados
Al habilitar reachability analysis, se inicia un examen inicial de las alertas abiertas del repositorio. Después, los análisis se ejecutan una vez cada 24 horas mientras el repositorio tiene alertas abiertas. Cada examen cubre todas las alertas abiertas.
Hacer push de cambios de código no desencadena un análisis. Después de cambiar el código, el veredicto no reflejará esos cambios hasta que se complete un análisis posterior.
Durante versión preliminar pública, no se pueden programar ni desencadenar análisis bajo demanda.
La duración del análisis depende del tamaño y las dependencias del repositorio. Los escaneos pueden completarse en unos minutos, pero los escaneos más extensos tardan más tiempo. Durante el versión preliminar pública, los escaneos tienen un límite de tiempo de tres horas.
Facturación y uso durante el versión preliminar pública
Reachability analysis es gratuito durante el versión preliminar pública. Sus análisis no consumen minutos facturados GitHub Actions.
Limitaciones conocidas
Reachability analysis tiene las siguientes limitaciones durante el versión preliminar pública:
- Soporte para ecosistemas: no se admiten alertas fuera de los ecosistemas compatibles de JavaScript y TypeScript.
- Repositorios grandes y monorepos: algunos repositorios pueden alcanzar el límite de examen de tres horas o encontrar límites de recursos, lo que deja los resultados no disponibles.
Uso de veredictos a través de la API REST
La Dependabot alerts API REST expone veredictos para reachability analysis. Puede recuperar veredictos a través del repositorio, la organización y los endpoints de alertas empresariales. Consulte Puntos finales de la API REST para Dependabot alerts.
Pasos siguientes
Para habilitar reachability analysis para su repositorio, consulte Configuración del análisis de alcanzabilidad para las alertas de Dependabot.