Escáner de vulnerabilidades SBOM
Suelta un lockfile o una SBOM y comprueba cada versión fijada frente a vulnerabilidades conocidas: se analiza localmente y se compara con la base de datos OSV.
Un lockfile es la lista exacta de versiones que tu compilación instala realmente, y cada versión fijada es una apuesta a que nadie ha encontrado un agujero en ella desde entonces. Este escáner lee esa lista (package-lock.json, requirements.txt, go.mod o una SBOM CycloneDX / SPDX), envía solo los pares de nombre y versión a la base de datos pública de vulnerabilidades OSV.dev e informa qué paquetes tienen vulnerabilidades conocidas, lo graves que son, qué versión corrige cada una y si alguno de los CVE está en la lista de vulnerabilidades explotadas conocidas de CISA. La guía complementaria ¿tu lockfile oculta vulnerabilidades? explica lo que los resultados demuestran, y lo que no. Si el análisis marca un CVE, el escritorio Bulk CVE Triage lo pone en contexto de explotación.
Última actualización:
Tu lockfile o SBOM
Aceptados: package-lock.json, requirements.txt, go.mod, CycloneDX JSON, SPDX JSON. Tamaño máximo de archivo: 5 MB.
El formato se detecta a partir del nombre del archivo y del contenido; también puedes elegirlo tú abajo.
🔒 Tu lockfile se analiza en tu navegador y nunca se sube. Solo los nombres y las versiones de los paquetes se envían a OSV.dev; solo los identificadores CVE se envían a nuestro propio comprobador para las marcas KEV.
Resultados del análisis
Aún no hay análisis. Sube o pega un lockfile o una SBOM arriba y pulsa “Buscar vulnerabilidades”.
No se encontraron vulnerabilidades conocidas
Ninguna de las versiones analizadas coincidió con una vulnerabilidad en la base de datos OSV. Eso significa que nadie ha notificado ninguna para estas versiones exactas; no es una garantía de que el código sea seguro. Las vulnerabilidades no notificadas, los paquetes maliciosos y los typosquats son invisibles para esta comprobación; el artículo explica el límite.
Tu lockfile nunca sale de esta página
El análisis se realiza por completo en tu navegador: el archivo que sueltas, o el texto que pegas, se lee localmente y nunca se sube a ningún sitio. Solo los nombres y las versiones extraídos de los paquetes se envían, a la base de datos pública de vulnerabilidades OSV.dev (sin cuenta, sin clave), para que pueda compararlos con vulnerabilidades conocidas. Después, los identificadores CVE de las coincidencias se envían al comprobador propio de este sitio para consultar la lista KEV de CISA. Nada más sale de la página: ni el contenido del archivo, ni rutas, ni nombres de proyectos.
Límites del análisis
Se analizan como máximo 500 paquetes por ejecución; los restantes se enumeran como no analizados. Se obtienen como máximo 200 detalles de vulnerabilidades. Los resultados proceden de la base de datos OSV para las versiones exactas de tu archivo; una versión de paquete que la base de datos nunca ha visto no devuelve coincidencias, lo que no es lo mismo que un certificado de buena salud.
Los límites, con honestidad
“No se encontraron vulnerabilidades” significa que no hay ninguna en la base de datos OSV para estas versiones exactas. No significa que el código sea seguro: las vulnerabilidades que nadie ha notificado todavía, los paquetes maliciosos, los nombres typosquat y las versiones comprometidas son todos invisibles para una comprobación por coincidencia de versión.
Una coincidencia es exacta por versión. Si tu archivo fija un rango en lugar de una versión exacta, se omite y se enumera como tal: el escáner no adivinará qué versión instalaste realmente. Lo mismo se aplica a los paquetes cuyo ecosistema no puede asignar el escáner: se enumeran como omitidos, nunca se descartan en silencio.
Las marcas KEV proceden de una única consulta al comprobador propio de este sitio (datos KEV de CISA, actualizados a diario). Si esa consulta falla o se limita por frecuencia, el análisis se completa igualmente: la columna KEV simplemente dice “desconocido” en lugar de bloquear tus resultados.
Por qué la versión fijada es la superficie de ataque
Un lockfile existe porque “latest” no es una versión. Registra el árbol exacto que instaló tu compilación, para que cada máquina y cada despliegue reciban el mismo código. Esa determinación es también lo que hace que el lockfile se pueda analizar: una base de datos de vulnerabilidades se indexa por paquete y versión exactos, así que una versión fijada se puede juzgar con una sola consulta, mientras que un rango flotante no. El análisis, por tanto, solo es tan bueno como el archivo: confirma el lockfile, mantenlo actualizado y el escáner podrá decirte la verdad sobre lo que envías.
La comprobación en sí es deliberadamente limitada. OSV.dev agrega registros de vulnerabilidades de los avisos de GitHub, el NVD y los ecosistemas de lenguajes, y los compara con tus versiones. Lo que no puede hacer es juzgar el código: un paquete sin CVE conocido puede seguir siendo malicioso, estar abandonado o ser un sosia de un paquete que querías instalar. La coincidencia de versiones es un primer filtro rápido y barato, el que detecta el lodash que olvidaste actualizar, no una auditoría de seguridad.
Por qué una marca KEV pesa más que una puntuación CVSS alta
Una puntuación CVSS mide lo grave que sería una vulnerabilidad si se explotara. El catálogo de vulnerabilidades explotadas conocidas de CISA mide otra cosa: si se está explotando realmente, en la práctica, ahora mismo. Un CVE de gravedad media en la lista KEV merece un parche esta semana; un CVE crítico que nadie ha convertido en arma a menudo puede esperar a la siguiente actualización planificada. Por eso este escáner marca las filas KEV por separado y por eso los resultados se ordenan primero por la peor gravedad, pero la insignia KEV es en la que hay que actuar primero.
Las versiones corregidas conllevan su propio riesgo. La corrección de una vulnerabilidad suele ser una versión menor o de parche, pero “corregido en 4.17.21” también puede significar un cambio de comportamiento que rompe tu compilación, y algunas vulnerabilidades no tienen ninguna versión corregida: el escáner lo dice claramente en lugar de inventar una. Corrige primero los elementos KEV, luego los críticos con una corrección publicada y después programa el resto; fija las nuevas versiones, confirma el lockfile y vuelve a analizar. El mismo ciclo pertenece a CI, donde se ejecuta en cada pull request en lugar de una vez al trimestre.
Licencias en esta SBOM
Las licencias que se muestran aquí proceden solo de los campos de licencia que lleva la propia SBOM. Los lockfiles (package-lock.json, requirements.txt, go.mod) no contienen datos de licencia, así que no se muestra nada para ellos: esta página no busca licencias por paquete, porque ninguna base de datos pública las proporciona de forma fiable.
Términos de lockfile y SBOM, definidos con precisión
Lockfile. Un archivo que registra la versión exacta de cada paquete que instala una compilación: package-lock.json para npm, requirements.txt con fijaciones == para Python, go.mod/go.sum para Go, para que las instalaciones sean reproducibles.
SBOM. Software Bill of Materials: un inventario legible por máquina de cada componente de un programa, normalmente en formato CycloneDX o SPDX. Es el lockfile generalizado a toda la cadena de suministro.
OSV.dev. La base de datos pública de vulnerabilidades de Google, que agrega avisos de GitHub, el NVD y los ecosistemas de lenguajes, y se puede consultar por nombre exacto de paquete, ecosistema y versión.
GHSA. Un identificador de aviso de seguridad de GitHub (GHSA-xxxx-xxxx-xxxx). La mayoría de las vulnerabilidades de npm, PyPI y Go en OSV llevan uno, normalmente junto a un identificador CVE.
CVE. Common Vulnerabilities and Exposures: el sistema de numeración compartido (CVE-YYYY-NNNNN) que permite que todas las bases de datos, escáneres y proveedores hablen de la misma vulnerabilidad.
CVSS. Common Vulnerability Scoring System: una puntuación de 0 a 10 de lo grave que sería una vulnerabilidad si se explotara. 9,0 o más es CRITICAL, 7,0 o más HIGH, 4,0 o más MEDIUM, por debajo de 4,0 LOW.
KEV. El catálogo de vulnerabilidades explotadas conocidas de CISA: vulnerabilidades cuya explotación en la práctica está confirmada, cada una con una fecha límite de corrección. Una marca KEV significa “corrige ahora”, diga lo que diga el CVSS.
Fixed version. La primera versión de un paquete en la que una vulnerabilidad ya no está presente, tomada de los eventos de rango afectado del aviso. Algunas vulnerabilidades aún no tienen ninguna publicada.
Purl. Package URL (pkg:npm/[email protected]): una forma estándar de nombrar un paquete con su ecosistema y versión. Las SBOM llevan purls, y así es como el escáner sabe a qué ecosistema pertenece un componente.
Preguntas frecuentes
¿Mi lockfile sale de mi navegador?
No. El archivo se analiza localmente y nunca se sube. Solo los nombres y las versiones extraídos de los paquetes se envían a OSV.dev, una base de datos pública de vulnerabilidades, y solo los identificadores CVE de las coincidencias se envían al comprobador propio de este sitio para consultar la lista KEV. El contenido del archivo, las rutas y los nombres de proyectos nunca salen de la página.
¿Por qué un paquete aparece como “omitido”?
Por tres motivos: la línea no es una fijación exacta (un rango como ~= o >=, una inclusión -r, una directiva replace), el ecosistema no se puede asignar a uno que OSV.dev admita, o el análisis alcanzó el límite de 500 paquetes. Las entradas omitidas siempre se enumeran con su motivo: nada se descarta en silencio.
“No se encontraron vulnerabilidades”: ¿estoy a salvo?
No necesariamente. Significa que no se ha notificado ninguna vulnerabilidad para estas versiones exactas en la base de datos OSV. Las vulnerabilidades no notificadas, los paquetes maliciosos o typosquat y las versiones comprometidas no aparecen en ninguna base de datos de vulnerabilidades. Trata el análisis como un primer filtro, no como un certificado de buena salud.
¿Qué debería corregir primero?
Empieza por todo lo que lleve una insignia KEV: esas vulnerabilidades se están explotando ahora y CISA fija una fecha límite para cada una. Después, las filas CRITICAL y HIGH que tengan una versión corregida publicada, empezando por los paquetes que tu aplicación importa realmente. Usa el escritorio Bulk CVE Triage para conocer el contexto de explotación de cada CVE.
Una vulnerabilidad no tiene versión corregida. ¿Qué hago ahora?
Primero comprueba si existe una versión más reciente que el aviso aún no ha registrado: los avisos van por detrás de las versiones. Si realmente no hay corrección, tus opciones son eliminar la dependencia, sustituirla o mitigar la ruta de código vulnerable (por ejemplo, dejar de pasar entrada no confiable a la función afectada) y vigilar el aviso para ver si se actualiza. Vuelve a analizar después de cualquier cambio.