Skip to content
luisassardoPublic

About

CVECheck — find the known CVEs affecting your device/app version, with plain-language fixes. Client-side, queries NIST's public NVD API. C-LAB / ARGUS.

Topics

Resources

Security policy

Stars

0 stars

Watchers

0 watching

Forks

Repository files navigation

CVECheck

Herramienta web para descubrir las vulnerabilidades conocidas (CVE) del dispositivo o app que usas. El usuario elige un producto y su versión; la herramienta consulta en vivo la base de datos pública de vulnerabilidades del NIST (NVD) y devuelve los CVE relevantes ordenados por gravedad, cada uno con explicación en lenguaje claro y cómo solucionarlo.

Parte del portfolio tools-cybersecurity, pensada para periodistas y defensores de derechos humanos que quieren saber qué fallos públicos afectan a su versión de macOS, iOS, Windows, Android, su navegador o su app de mensajería, y cómo cerrarlos.

Qué es y qué no es

  • Sí: un buscador de CVE públicos. Te dice qué vulnerabilidades catalogadas afectan a la versión que indicas, ordenadas por puntaje CVSS, con pasos concretos de actualización.
  • No: un escáner de malware ni un análisis forense. No lee tu dispositivo ni detecta si estás comprometido. La ausencia de resultados no prueba que estés a salvo (puede que el NIST no tenga registros bajo ese nombre exacto).

Para una revisión real del dispositivo (compromiso, spyware, configuración) usa una herramienta forense dedicada: esta responde solo a "¿qué agujeros conocidos tiene mi versión y cómo los cierro?".

Privacidad

  • Corre 100% en el navegador. Sin backend propio, sin cuentas, sin cookies, sin telemetría, sin analítica.
  • La única conexión de red es la consulta a services.nvd.nist.gov (la API pública del NVD). Lo único que se envía es el producto + versión que escribes, para poder buscar los CVE. Nada más sale del navegador.
  • Sin CDN externos: todo el código (HTML/JS/CSS + fuentes) es estático, vendored y auditable.
  • La Content-Security-Policy solo permite connect-src hacia services.nvd.nist.gov. Cualquier intento de enviar datos a otro host es bloqueado por el navegador.

Cómo funciona

  1. Eliges un producto (macOS, iOS, Windows, Android, Chrome, Firefox, Signal…) y opcionalmente la versión.
  2. Se construye un identificador CPE 2.3 y se consulta el NVD (virtualMatchString).
  3. Como el NVD no ordena por gravedad, se piden los registros más recientes que afectan a tu versión y se ordenan por CVSS en el navegador.
  4. Cada CVE se muestra con: gravedad + puntaje, descripción, CWE, fecha, pasos de actualización y enlaces a las fuentes del fabricante.

Idiomas de interfaz: EN / ES / DE (alemán en forma Du).

Uso local

No requiere servidor para la mayoría de los navegadores (la consulta al NVD funciona por CORS). Para evitar restricciones de file://, conviene servirlo:

python3 -m http.server 8000
# → http://localhost:8000

Deploy a Cloudflare Pages

  1. Sube el contenido de esta carpeta a un repo de GitHub (este repo: luisassardo/cve-check).
  2. En Cloudflare Dashboard → Pages → Create a project → conecta el repo.
  3. Build settings:
    • Framework preset: None
    • Build command: (vacío)
    • Build output directory: /
  4. Deploy. Cloudflare emite un dominio *.pages.dev; luego puedes apuntar cve.c-lab.tools u otro.

El archivo _headers ya trae las cabeceras de seguridad (CSP con connect-src 'self' https://services.nvd.nist.gov, no-referrer, nosniff, etc.). Cloudflare Pages las aplica automáticamente.

Sobre el rate limit del NVD

La API del NVD permite consultas anónimas con un límite por IP (≈5 solicitudes / 30 s). En el modo por defecto (cliente → NVD directo) cada usuario consume su propia cuota desde su propia IP, así que con pocos usuarios no hay cuello de botella. CVECheck hace 2 solicitudes por búsqueda con una pausa entre ellas y cachea resultados en memoria. Si el NVD responde 403/429, la herramienta lo indica y sugiere reintentar en ~30 s.

Cambiar al proxy con API key (cuando lo necesites)

El repo incluye, desactivado por defecto, un proxy listo para encender: una Cloudflare Pages Function en functions/api/cve.js. Encenderlo aporta sobre todo privacidad: el NVD deja de ver la IP de cada usuario (solo ve la del servidor), la API key vive en el servidor (nunca en el navegador) y las respuestas se cachean en el edge de Cloudflare (6 h): los CVE cambian lento, así que la mayoría de búsquedas ni tocan al NVD.

Cuándo conviene: cuando quieras ocultar las IP de los usuarios al NIST (recomendado para esta audiencia), si el tráfico crece, o para aprovechar el cache del edge. Para ~10 personas el modo directo basta.

Para encenderlo:

  1. Pide una API key gratuita del NVD: https://nvd.nist.gov/developers/request-an-api-key.
  2. En Cloudflare Pages → Settings → Environment variables, añade NVD_API_KEY como secret (encriptada).
  3. En app.js, cambia const NVD_VIA_PROXY = false; a true.
  4. (Opcional, más estricto) En _headers, reduce el CSP a connect-src 'self' para forzar que todo el tráfico pase por el proxy y el navegador no pueda llamar al NVD directo.
  5. Redeploy. Las respuestas del proxy traen X-CVECheck-Cache: HIT|MISS para verificar el cache.

El proxy es estrecho a propósito: solo el endpoint de CVE del NVD, solo una lista blanca de parámetros y con validación (virtualMatchString debe ser un CPE, etc.), para que no pueda usarse como relay abierto. Funciona sin key (heredaría el límite anónimo), pero la key sube el límite a 50/30 s y junto al cache hace el modo proxy fluido.

Probar la Function en local: npx wrangler pages dev . (el python3 -m http.server sirve los estáticos pero no ejecuta functions/, así que en local deja NVD_VIA_PROXY = false).

Archivos

index.html      estructura + UI (sistema de diseño ARGUS / C-LAB)
styles.css      estilos específicos de la herramienta
node.css        sistema de diseño compartido ARGUS (vendored)
node.js         motor de animación compartido ARGUS
icons.js        registro de iconos SVG inline
app.js          i18n (EN/ES/DE), mapa de CPE, consulta al NVD, render
_headers        cabeceras de seguridad para Cloudflare Pages
functions/      Cloudflare Pages Function (proxy NVD con key + edge cache), OFF por defecto
fonts/          Space Grotesk + IBM Plex Mono (subset latino, vendored)

Licencia

MIT, ver LICENSE.


C-LAB · ARGUS Defense Network · herramientas para periodistas y defensores de DD. HH.

About

CVECheck — find the known CVEs affecting your device/app version, with plain-language fixes. Client-side, queries NIST's public NVD API. C-LAB / ARGUS.

Topics

Resources

Security policy

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages