🔍 GitHub CVE Scanner - Guía de uso
Script para escanear repositorios de GitHub en busca de vulnerabilidades conocidas en proyectos React y Next.js.
📋 Vulnerabilidades detectadas
El escáner verifica las siguientes CVEs:
🚀 Cómo usar
Requisitos previos
- Un navegador web moderno (Chrome, Firefox, Edge, etc.)
- Acceso a GitHub (opcional: Personal Access Token para repositorios privados)
Paso a paso
1. Abrir la consola del navegador
- Acceda a cualquier página de GitHub (ej.:
https://github.com)
- Abra el DevTools:
- Chrome/Edge:
F12 o Ctrl+Shift+I (Windows) / Cmd+Option+I (Mac)
- Firefox:
F12 o Ctrl+Shift+K (Windows) / Cmd+Option+K (Mac)
- Vaya a la pestaña Console
2. Copiar y ejecutar el script
- Abra el archivo
main.js
- Copie todo el contenido del archivo
- Péguelo en la consola del navegador
- Pulse
Enter para ejecutarlo
3. Configurar el escaneo
El script hará una serie de preguntas interactivas:
3.1. Autenticación (primera pregunta)
🔐 Scan private repos too?
OK = Enter PAT
Cancel = Public only
- OK: Se le solicitará introducir un Personal Access Token (PAT) de GitHub
- Permite escanear repositorios privados
- Necesario para acceder a organizaciones
- Cancel: Solo se escanearán repositorios públicos
Cómo crear un PAT:
- Acceda a:
https://github.com/settings/tokens
- Haga clic en "Generate new token" → "Generate new token (classic)"
- Asigne un nombre descriptivo
- Seleccione el alcance
repo (acceso completo a repositorios)
- Haga clic en "Generate token"
- Copie el token inmediatamente (no se volverá a mostrar)
3.2. Alcance del escaneo (si está autenticado)
🔍 What do you want to scan?
OK = Organizations
Cancel = User Profile
- OK: Escanear organizaciones
- Cancel: Escanear solo el perfil del usuario
3.3. Selección de organizaciones (si eligió Organizations)
🏢 Scan all organizations?
OK = All organizations
Cancel = Single organization
Opción A - Todas las organizaciones (OK):
- El script buscará automáticamente todas las organizaciones del usuario autenticado
- Escaneará todos los repositorios de todas las organizaciones
Opción B - Una organización específica (Cancel):
- Se le solicitará introducir la URL o el nombre de la organización:
🔗 Enter organization URL or name:
Example: github.com/my-org or my-org
- Formatos aceptados:
github.com/minha-org
https://github.com/minha-org
minha-org (solo el nombre)
3.4. Perfil del usuario (si no está autenticado o eligió Profile)
- Si se encuentra en una página de perfil de GitHub, el script lo detectará automáticamente
- De lo contrario, se le solicitará:
📊 Funcionalidades
✨ Verificación por ramas
El script verifica todas las ramas de cada repositorio, no solo la rama predeterminada. Esto garantiza que se detecten vulnerabilidades en ramas de desarrollo, staging u otras ramas activas.
🏢 Soporte para organizaciones
- Escanea repositorios de organizaciones de GitHub
- Opción de escanear todas las organizaciones o una específica
- Admite la introducción de la URL o el nombre de la organización
🔒 Acceso a repositorios privados
Con un Personal Access Token válido, el script puede:
- Acceder a repositorios privados
- Escanear organizaciones privadas
- Verificar ramas de repositorios privados
📈 Resultados
Tras la ejecución, el script mostrará:
Tabla de resultados
Una tabla en la consola que muestra:
- Repo: Nombre del repositorio
- Branch: Nombre de la rama verificada
- Next: Versión de Next.js (si está presente)
- React: Versión de React (si está presente)
- ReactDOM: Versión de react-dom (si está presente)
- RSCWebpack: Versión de react-server-dom-webpack (si está presente)
- RSCParcel: Versión de react-server-dom-parcel (si está presente)
- RSCTurbopack: Versión de react-server-dom-turbopack (si está presente)
- Status: Estado de la vulnerabilidad
✅ Safe: Sin vulnerabilidades detectadas
⚠️ CVE-XXXX-XXXXX: Vulnerabilidad encontrada
Resumen
📊 Summary:
Total repos: 15
Branches scanned: 23
With package.json: 20
Skipped: 3 (no package.json)
⚠️ 5 vulnerable repo(s) found!
o
✅ No vulnerabilities found!
⚙️ Configuración técnica
- Retardo entre solicitudes API: 200ms (para evitar rate limiting)
- Retardo entre escaneos: 30ms
- Resultados por página: 100 elementos
- Soporte para repositorios privados: Sí (con PAT)
- Verificación de ramas: Todas las ramas de cada repositorio
🔧 Solución de problemas
Error: "Token invalid"
- Verifique que el token se haya copiado correctamente
- Asegúrese de que el token tiene el alcance
repo
- Verifique que el token no haya expirado
Error: "No repositories found"
- Verifique que el usuario/organización exista
- Si está escaneando organizaciones, verifique que tenga acceso
- Verifique que haya repositorios en el perfil/organización
Error: "No organizations found"
- Verifique que esté autenticado con un token válido
- Asegúrese de que forma parte de organizaciones
- El token debe tener permisos para acceder a organizaciones
Escaneo muy lento
- El script introduce retardos intencionados para evitar rate limiting
- Los repositorios con muchas ramas tardarán más
- Las organizaciones con muchos repositorios tardarán más
📝 Notas importantes
- Rate Limiting: El script respeta los límites de la API de GitHub con retardos automáticos
- Privacidad: El token se usa solo localmente en el navegador, no se envía a servidores externos
- Precisión: El escáner verifica únicamente el
package.json en la raíz del repositorio
- Ramas: Se verifican todas las ramas, pero solo se reportan aquellas con
package.json
- Versiones: El escáner detecta versiones vulnerables según las definiciones de CVE
🛡️ Seguridad
- El script se ejecuta completamente en el navegador (client-side)
- Ningún dato se envía a servidores externos
- El Personal Access Token se usa únicamente para solicitudes a la API de GitHub
- Se recomienda usar tokens con los alcances mínimos necesarios
📄 Licencia
MIT License
🔄 Versión
3.0.0
Desarrollado para detectar vulnerabilidades de seguridad en proyectos React y Next.js