← Tutti i controlli
SicurezzaGravità tipica: Alto

Scanner di librerie vulnerabili

Rileva versioni vulnerabili o non più supportate di jQuery, AngularJS e Bootstrap con CVE XSS note.

Cosa controlla

Questo scanner identifica le versioni delle comuni librerie front-end come jQuery, AngularJS e Bootstrap che il tuo sito carica. Segnala quelle vulnerabili o a fine vita con falle XSS note e documentate.

Perché è importante

Usare una libreria con vulnerabilità pubbliche è una porta aperta ben nota: gli attaccanti cercano proprio quelle versioni perché la falla è già pubblicata. Un XSS tramite una libreria obsoleta può consentire il furto di sessioni o l'iniezione di contenuti nel tuo sito.

Come risolverlo

Aggiorna quelle librerie a una versione supportata e senza vulnerabilità note, verificando prima che non si rompa nulla. Se una libreria non è più mantenuta, come AngularJS, valuta di migrare a un'alternativa moderna che lo sia ancora.

Come funziona questo controllo

Scanaris raccoglie l'HTML della tua pagina principale e scarica fino a quindici dei suoi script: tutti quelli serviti dal tuo stesso dominio e, tra gli esterni, quelli con "jquery" nel percorso. In quel testo cerca le intestazioni di versione che le librerie mettono in cima al file. Tre casi aprono un rilievo, tutti di gravità media. jQuery precedente a 3.5.0: vulnerabilità XSS note (CVE-2020-11022 e CVE-2020-11023) nel modo in cui elabora l'HTML. AngularJS, qualsiasi versione 1.x: il framework ha raggiunto il fine vita a gennaio 2022 e non riceve patch di sicurezza. Bootstrap 3.x precedente a 3.4.1 o 4.x precedente a 4.3.1: XSS tramite attributi data- in tooltip e popover (CVE-2019-8331). Segnala solo quando trova il numero di versione scritto; se il file è minificato senza intestazione, non indovina.

Perché è importante

Una vulnerabilità XSS in una libreria caricata da tutto il tuo sito è una porta aperta su tutte le pagine insieme: un attaccante che riesca a mettere testo dove la libreria lo interpreta come HTML (un commento, un nome di profilo, un parametro URL) esegue JavaScript con la sessione di chi lo vede. Per queste tre librerie le falle sono pubbliche da anni, con esempi di sfruttamento pubblicati, e gli strumenti automatici le provano di serie. Il caso di AngularJS è diverso ma peggiore a lungo termine: non è che abbia una falla specifica, è che la prossima che comparirà non verrà mai corretta.

Perché succede

Perché funzionano. Un jQuery 1.12 del 2016 continua a fare ciò che faceva e nessuno lo tocca per paura di rompere qualcosa. I temi e i plugin WordPress sono il caso tipico: il core di WordPress include jQuery 3.7 dalla versione 5.6, ma un tema vecchio può caricare la propria copia. Compare anche nei template HTML comprati, nei pannelli di amministrazione ereditati e nei progetti dove l'IA ha copiato un esempio con un URL di CDN di anni fa.

Come risolvere

  • jQuery: aggiorna all'ultima 3.x (la 3.7 è il ramo attuale). Cambia l'URL della CDN o il file locale, e carica jquery-migrate per qualche giorno perché ti avvisi in console delle chiamate vecchie da adattare. Prova i moduli, i menu e qualsiasi plugin jQuery che usi.
  • Bootstrap: se sei su 3.x, passa a 3.4.1, che è compatibile; se sei su 4.x, a 4.6.2. Sono versioni di manutenzione senza cambi di design. Saltare a 5.x è una migrazione maggiore perché elimina jQuery e rinomina le classi; pianificala a parte.
  • AngularJS: non c'è una versione sicura a cui salire. Le opzioni sono migrare (ad Angular moderno, Vue o React, a pezzi se l'app è grande), comprare supporto esteso commerciale nel frattempo, o isolare l'app: senza dati sensibili, dietro autenticazione e con una CSP rigorosa.
  • WordPress: aggiorna tema e plugin; se uno di loro continua a caricare un jQuery vecchio, sostituiscilo. Non disattivare il jQuery del core per "alleggerire": è la versione buona.
  • In generale: installa le librerie con npm invece di copiare URL di CDN, e attiva gli avvisi di dipendenze di GitHub o npm audit per sapere della prossima.

Verifica che sia risolto

curl -s https://tuodominio.it | grep -oE 'src="[^"]*(jquery|bootstrap|angular)[^"]*"'
curl -s URL_DELLO_SCRIPT | head -c 400 | grep -oE '(jQuery|Bootstrap|AngularJS)[^0-9]{0,30}v?[0-9]+\.[0-9]+\.[0-9]+'

Il primo ti dice quali file carica il tuo sito; il secondo, con l'URL di ciascuno, la versione che dichiarano. Atteso: jQuery 3.5.0 o superiore, Bootstrap 3.4.1, 4.3.1 o superiore, e nessun AngularJS.

Domande frequenti

Si rilevano solo queste tre librerie?

Per ora sì: sono quelle che concentrano la maggior parte delle vulnerabilità sfruttate nel front-end dei siti reali. Per il resto delle tue dipendenze, npm audit o gli avvisi di GitHub coprono ciò che una scansione esterna non può vedere.

Uso jQuery 1.12 ma non inserisco mai HTML degli utenti. Sono al sicuro?

Finché nessuno passa testo non affidabile per .html(), .append() o simili, la falla specifica non scatta. Ma è difficile garantirlo in tutto il sito e in tutti i plugin, e l'aggiornamento a 3.x di solito costa un pomeriggio. Nel frattempo, una CSP rigorosa limita il danno; la esamina CSP debole.

E se la libreria viene da una CDN?

Allora, oltre ad aggiornarla, fissa la versione e aggiungi integrity perché nessuno possa sostituirla sotto di te; lo spiega integrità delle sottorisorse.

Verificalo sul tuo sito

Scansiona il tuo sito gratis e scopri se questo e altri 44 controlli passano, con un prompt di fix per ogni problema.

Scansiona il mio sito gratis

Controlli correlati