🔍 GitHub CVE Scanner - Guida all'uso
Script per scansionare repository GitHub alla ricerca di vulnerabilità note nei progetti React e Next.js.
📋 Vulnerabilità Rilevate
Lo scanner verifica le seguenti CVE:
🚀 Come Usare
Prerequisiti
- Un browser web moderno (Chrome, Firefox, Edge, ecc.)
- Accesso a GitHub (opzionale: Personal Access Token per repository privati)
Passo per Passo
1. Aprire la Console del Browser
- Accedi a qualsiasi pagina di GitHub (es:
https://github.com)
- Apri DevTools:
- Chrome/Edge:
F12 oppure Ctrl+Shift+I (Windows) / Cmd+Option+I (Mac)
- Firefox:
F12 oppure Ctrl+Shift+K (Windows) / Cmd+Option+K (Mac)
- Vai alla scheda Console
2. Copiare ed Eseguire lo Script
- Apri il file
main.js
- Copia tutto il contenuto del file
- Incolla nella console del browser
- Premi
Enter per eseguire
3. Configurare la Scansione
Lo script farà una serie di domande interattive:
3.1. Autenticazione (Prima Domanda)
🔐 Scan private repos too?
OK = Enter PAT
Cancel = Public only
- OK: Ti verrà chiesto di inserire un Personal Access Token (PAT) di GitHub
- Consente di scansionare repository privati
- Necessario per accedere alle organizzazioni
- Cancel: verranno scansionati solo repository pubblici
Come creare un PAT:
- Accedi a:
https://github.com/settings/tokens
- Fai clic su "Generate new token" → "Generate new token (classic)"
- Assegna un nome descrittivo
- Seleziona l'ambito
repo (accesso completo ai repository)
- Fai clic su "Generate token"
- Copia il token immediatamente (non verrà mostrato di nuovo)
3.2. Ambito della Scansione (Se autenticato)
🔍 What do you want to scan?
OK = Organizations
Cancel = User Profile
- OK: Scansionare le organizzazioni
- Cancel: Scansionare solo il profilo utente
3.3. Selezione delle Organizzazioni (Se hai scelto Organizations)
🏢 Scan all organizations?
OK = All organizations
Cancel = Single organization
Opzione A - Tutte le organizzazioni (OK):
- Lo script recupererà automaticamente tutte le organizzazioni dell'utente autenticato
- Scansionerà tutti i repository di tutte le organizzazioni
Opzione B - Un'organizzazione specifica (Cancel):
- Ti verrà chiesto di inserire l'URL o il nome dell'organizzazione:
🔗 Enter organization URL or name:
Example: github.com/my-org or my-org
- Formati accettati:
github.com/minha-org
https://github.com/minha-org
minha-org (solo il nome)
3.4. Profilo Utente (Se non autenticato o hai scelto Profile)
- Se ti trovi su una pagina di profilo di GitHub, lo script lo rileverà automaticamente
- In caso contrario, ti verrà chiesto:
📊 Funzionalità
✨ Verifica dei Branch
Lo script verifica tutti i branch di ogni repository, non solo il branch predefinito. Ciò garantisce che le vulnerabilità nei branch di sviluppo, staging o altri branch attivi vengano rilevate.
🏢 Supporto per le Organizzazioni
- Scansiona i repository delle organizzazioni di GitHub
- Opzione per scansionare tutte le organizzazioni o una specifica
- Supporta l'inserimento di URL o nome dell'organizzazione
🔒 Accesso ai Repository Privati
Con un Personal Access Token valido, lo script può:
- Accedere a repository privati
- Scansionare organizzazioni private
- Verificare i branch dei repository privati
📈 Risultati
Dopo l'esecuzione, lo script mostrerà:
Tabella dei Risultati
Una tabella nella console che mostra:
- Repo: Nome del repository
- Branch: Nome del branch verificato
- Next: Versione di Next.js (se presente)
- React: Versione di React (se presente)
- ReactDOM: Versione di react-dom (se presente)
- RSCWebpack: Versione di react-server-dom-webpack (se presente)
- RSCParcel: Versione di react-server-dom-parcel (se presente)
- RSCTurbopack: Versione di react-server-dom-turbopack (se presente)
- Status: Stato della vulnerabilità
✅ Safe: Nessuna vulnerabilità rilevata
⚠️ CVE-XXXX-XXXXX: Vulnerabilità trovata
Riepilogo
📊 Summary:
Total repos: 15
Branches scanned: 23
With package.json: 20
Skipped: 3 (no package.json)
⚠️ 5 vulnerable repo(s) found!
oppure
✅ No vulnerabilities found!
⚙️ Configurazioni Tecniche
- Ritardo tra le richieste API: 200ms (per evitare il rate limiting)
- Ritardo tra le scansioni: 30ms
- Risultati per pagina: 100 elementi
- Supporto per repository privati: Sì (con PAT)
- Verifica dei branch: tutti i branch di ogni repository
🔧 Risoluzione dei Problemi
Errore: "Token invalid"
- Verifica che il token sia stato copiato correttamente
- Assicurati che il token abbia l'ambito
repo
- Verifica che il token non sia scaduto
Errore: "No repositories found"
- Verifica che l'utente/organizzazione esista
- Se stai scansionando organizzazioni, verifica di avere accesso
- Verifica che ci siano repository nel profilo/organizzazione
Errore: "No organizations found"
- Verifica di essere autenticato con un token valido
- Assicurati di far parte di organizzazioni
- Il token deve avere i permessi per accedere alle organizzazioni
Scansione molto lenta
- Lo script introduce ritardi intenzionali per evitare il rate limiting
- I repository con molti branch richiederanno più tempo
- Le organizzazioni con molti repository richiederanno più tempo
📝 Note Importanti
- Rate Limiting: lo script rispetta i limiti dell'API di GitHub con ritardi automatici
- Privacy: il token viene utilizzato solo localmente nel browser e non viene inviato a server esterni
- Precisione: lo scanner verifica solo il
package.json nella root del repository
- Branch: tutti i branch vengono verificati, ma solo quelli con
package.json vengono segnalati
- Versioni: lo scanner rileva le versioni vulnerabili in base alle definizioni CVE
🛡️ Sicurezza
- Lo script viene eseguito interamente nel browser (client-side)
- Nessun dato viene inviato a server esterni
- Il Personal Access Token viene utilizzato solo per le richieste all'API di GitHub
- Si consiglia di utilizzare token con gli ambiti minimi necessari
📄 Licenza
MIT License
🔄 Versione
3.0.0
Sviluppato per rilevare vulnerabilità di sicurezza nei progetti React e Next.js