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.
- 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?".
- 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-Policysolo permiteconnect-srchaciaservices.nvd.nist.gov. Cualquier intento de enviar datos a otro host es bloqueado por el navegador.
- Eliges un producto (macOS, iOS, Windows, Android, Chrome, Firefox, Signal…) y opcionalmente la versión.
- Se construye un identificador CPE 2.3 y se consulta el NVD (
virtualMatchString). - 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.
- 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).
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- Sube el contenido de esta carpeta a un repo de GitHub (este repo:
luisassardo/cve-check). - En Cloudflare Dashboard → Pages → Create a project → conecta el repo.
- Build settings:
- Framework preset: None
- Build command: (vacío)
- Build output directory:
/
- Deploy. Cloudflare emite un dominio
*.pages.dev; luego puedes apuntarcve.c-lab.toolsu 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.
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.
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:
- Pide una API key gratuita del NVD: https://nvd.nist.gov/developers/request-an-api-key.
- En Cloudflare Pages → Settings → Environment variables, añade
NVD_API_KEYcomo secret (encriptada). - En
app.js, cambiaconst NVD_VIA_PROXY = false;atrue. - (Opcional, más estricto) En
_headers, reduce el CSP aconnect-src 'self'para forzar que todo el tráfico pase por el proxy y el navegador no pueda llamar al NVD directo. - Redeploy. Las respuestas del proxy traen
X-CVECheck-Cache: HIT|MISSpara 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 .(elpython3 -m http.serversirve los estáticos pero no ejecutafunctions/, así que en local dejaNVD_VIA_PROXY = false).
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)
MIT, ver LICENSE.
C-LAB · ARGUS Defense Network · herramientas para periodistas y defensores de DD. HH.