GitHub amplió el alcance de las alertas de Dependabot relacionadas con paquetes maliciosos de npm a ocho ecosistemas, después de conectar GitHub Advisory Database con los datos del repositorio de OpenSSF dedicado a los paquetes maliciosos. La nueva cobertura incluye npm, PyPI, Maven, RubyGems, NuGet, Go, crates.io y PHP Composer, lo que permite detectar dependencias maliciosas en proyectos que utilizan lenguajes y herramientas que van más allá de JavaScript.
Dependabot había comenzado a detectar software malicioso dentro de las dependencias de npm a principios de año. La nueva ampliación se basa en importar registros de OpenSSF en formato OSV, en lugar de crear sistemas de detección independientes para cada ecosistema. Según la publicación, el repositorio de OpenSSF contiene más de 15.000 informes desde su lanzamiento en 2023 y sigue creciendo mediante informes de la comunidad y fuentes de detección automatizadas, incluidos paquetes de similitud nominal, paquetes de confusión de dependencias, apropiaciones de cuentas y archivos binarios maliciosos precompilados.
Un importador unificado para los datos de paquetes maliciosos
El equipo de ingeniería de seguridad de la cadena de suministro de GitHub desarrolló un único importador que sigue el patrón de los importadores utilizados con los repositorios de alertas públicas. El importador lee los archivos modificados desde la última ejecución y, antes de incorporar cualquier registro a la base de datos, valida los campos obligatorios, los tipos y el formato según el esquema OSV. Los registros que no superan la validación se rechazan y se registran para su revisión, en lugar de modificarse automáticamente y aceptarse.
Después de superar la validación, los registros se convierten en entradas de alimentación que incluyen el origen, el identificador y el identificador CVE cuando está disponible, además de conservar el registro original completo como copia de referencia. El importador también gestiona las diferencias de datos entre las fuentes, como el uso por parte de OpenSSF del nombre PyPI mientras que la base de datos de GitHub utiliza el nombre pip, la representación de las versiones afectadas como valores individuales en lugar de rangos, la ausencia de una versión utilizable en algunos informes y la retirada de informes que posteriormente se demuestra que eran incorrectos.
Prevención de duplicados y protección del flujo de publicación
Surge un problema adicional porque el propio GitHub contribuye con datos al repositorio de OpenSSF, mientras que las alertas de GitHub sobre software malicioso de npm fluyen hacia el repositorio. Para evitar volver a importar los mismos datos, el importador utiliza los datos de origen del registro en OSV y excluye cualquier entrada que contenga la etiqueta ghsa-malware, porque originalmente comenzó en GitHub. La publicación señala que más de la mitad de los nuevos informes de npm que llegan mensualmente al repositorio correspondían a alertas de GitHub, por lo que se excluyen al considerarse ciclos de reimportación.
Las alertas de software malicioso se publican automáticamente sin una revisión humana de cada informe antes de su publicación, porque retrasar la alerta varios días puede dar al atacante tiempo adicional cuando el paquete está robando credenciales. Esto difiere de las alertas de vulnerabilidades, que normalmente requieren una verificación humana de la correspondencia de los paquetes, los rangos de versiones y la gravedad del problema.
Tres capas para gestionar los datos incorrectos
- Límites de lotes: cada ejecución establece un límite configurable para el número de alertas que se pueden crear. Si los datos superan el límite, la ejecución se detiene por completo y no se publica nada, y se envía el número exacto de alertas.
- Seguimiento del origen: cada alerta se vincula al commit específico del repositorio malicious-packages, lo que permite determinar el origen del informe durante los incidentes.
- Reversión: cada lote puede identificarse y revertirse como una unidad única si se filtran datos contaminados, en lugar de eliminar manualmente las alertas de la base de datos.
Activación para los usuarios
Las alertas de dependencias maliciosas de Dependabot ya están disponibles de forma opcional y pueden activarse desde la configuración de seguridad del repositorio, la organización o la empresa. Después de la activación, Dependabot compara las dependencias con las alertas de software malicioso de GitHub Advisory Database, incluida una coincidencia posterior con las alertas ya existentes.