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-migrateper 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 auditper 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.