Polyfill JS: codice malevolo spunta in decine di migliaia di siti. Scoprite se c'è il vostro (aggiornato)

Un gruppo di criminali informatici si impossessa di nomi di dominio famosi, ampiamente utilizzati dagli sviluppatori Web, e provoca il caricamento di codice malevolo.

Nell’ultimo periodo sono aumentati i cosiddetti supply chain attack verso i progetti open source. Si tratta di attacchi che prendono di mira uno o più anelli della catena distributiva di un software conosciuto. L’obiettivo degli aggressori è modificare componenti fidati, facendo leva sulla fiducia riposta su di essi, e utilizzare questo grimaldello su uno specifico gruppo di vittime. Dopo la scoperta della backdoor inserita nelle XZ Utils, questa volta tocca a Polyfill JS e, come vedremo più avanti, ad alcuni famosi servizi CDN (Content Delivery Network).

Polyfill JS è una libreria che fornisce funzionalità non nativamente supportate in alcuni browser. L’obiettivo è colmare le lacune di compatibilità, consentendo agli sviluppatori di utilizzare le più recenti caratteristiche del linguaggio JavaScript e delle API del browser, anche quando gli utenti utilizzano software datati.

Oggi più di 100.000 siti Web utilizzano Polyfill JS, per consentire a tutti i visitatori di utilizzare la stessa base di codice, anche se i loro browser non supportano le caratteristiche dei software più recenti.

Attacco ai siti che usano Polyfill JS

Gli esperti di Sansec hanno scoperto che tutti i siti Web facenti uso di Polyfill JS hanno improvvisamente iniziato a erogare codice malevolo. Il minimo comune denominatore consiste nella presenza di un riferimento a un nome di dominio che “scimmiotta” quello di Google Analytics (ha i caratteri “l” sostituiti con “i”: googie-anaiytics al posto di google-analytics). Il caricamento del codice ospitato su quel nome a dominio provoca il download di malware o l’apertura di pagine Web indesiderate.

Sansec racconta che il codice caricato varia in base al contenuto nelle intestazioni HTTP, integra una protezione specifica contro il reverse engineering e si attiva solo su dispositivi mobili specifici in orari specifici.

Tra le vittime illustri ci sono, ad esempio, il sito del World Economic Forum e quello della libreria digitale JSTOR. Con una semplice query sul sito PublicWWW, si apprende che ad oggi oltre 100.000 siti utilizzano Polyfill JS.

Come avviene l’aggressione

Come può succedere che un componente come Polyfill JS sia sfruttato da un gruppo di aggressori per farsi strada su decine di migliaia di siti Web a livello mondiale? Anche in questo caso, con un attacco alla supply chain.

Pochi si sono infatti accorti che a febbraio 2024 un soggetto cinese ha acquistato il dominio che ospitava il codice di Polyfill JS. Inizialmente ha conservato il contenuto legittimo, poi ha provveduto a modificare i file ospitati inserendo codice JavaScript malevolo.

Tanti sviluppatori, quando utilizzano componenti JavaScript o fogli di stile forniti da terze parti, spesso richiamano in pagina URL remoti. Per evitare di consumare banda locale e sovraccaricare i server, inseriscono i riferimenti ai componenti remoti necessari per il corretto rendering delle loro pagine Web. È ovvio che se il codice ospitato esternamente venisse modificato, ad esempio inserendo istruzioni dannose, il sito Web inizierebbe a caricare gli elementi malevoli. È esattamente quanto accaduto nel caso di Polyfill JS.

Il caso del dominio “passato di mano”

Lo sviluppatore del progetto Polyfill JS, Andrew Betts, aveva già messo in allerta gli utenti spiegando di non essere mai stato il proprietario del nome a dominio acquisito a febbraio scorso dal soggetto cinese. Anzi, ha invitato tutti gli utenti di Polyfill JS a rimuovere i riferimenti verso tale dominio dalle loro pagine Web (vedere anche questa discussione su GitHub).

Oggi Betts aggiunge che Polyfill JS dovrebbe comunque essere definitivamente eliminato perché non c’è più ragione di utilizzare le sue funzionalità. “La maggior parte delle funzionalità sono ormai adottate da tutti i principali browser, con alcune eccezioni che generalmente non possono essere comunque essere integrate in Polyfill, come Web Serial e Web Bluetooth“, ha aggiunto lo sviluppatore.

Nel frattempo, Cloudflare e Fastly hanno creato i propri mirror del servizio Polyfill JS in modo che i siti Web facenti ancora uso della libreria non eroghino codice dannoso.

Il problema non riguarda soltanto Polyfill JS ma anche Bootcss, Bootcdn e Staticfile

Confermando il problema, Google ha immediatamente avviato una campagna informativa per segnalare i gestori dei siti Web circa la presenza di codice malevolo sulle loro pagine.

La società di Mountain View rivela inoltre che il problema è molto più grave del previsto perché non sono solo gli utenti di Polyfill JS ad essere presenti di mira, ma anche coloro che si affidano ai servizi CDN di Bootcss, Bootcdn e Staticfile. In tutti i casi, i nomi di dominio sono utilizzati per diffondere codice dannoso.

Abbiamo provato a fare qualche verifica avvalendoci del servizio PublicWWW: sono più di 500.000 i siti che integrano in pagina riferimenti a Bootcss, Bootcdn e Staticfile. A conferma della gravità del problema.

Controllate la presenza dei seguenti nomi di dominio nel sorgente delle vostre pagine Web

Per accedere al sorgente HTML di qualunque pagina, basta premere CTRL+U da browser Web sui sistemi desktop. Utilizzando la combinazione di tasti CTRL+F andate alla ricerca dei seguenti domini:

polyfill.io
bootcss.com
bootcdn.net
staticfile.org

Nel caso in cui doveste rinvenire uno o più riferimenti, rimuoveteli immediatamente.

Potete effettuare una verifica aggiuntiva digitando una query nel sito PublicWWW, ad esempio:

"polyfill.io" depth:all site:nomedelsito.it

L’ultimo riferimento va ovviamente rimpiazzato con il nome del sito oggetto di controllo.

Se siete curiosi, digitate "polyfill.io" site:it e verificate quanti e quali siti italiani richiamano i nomi di dominio passati sotto il controllo dei criminali informatici.

AgID elimina il riferimento a Polyfill JS dal suo sito Web

Sospettiamo che i nuovi assegnatari del dominio polyfill.io, applichino strategie differenti a seconda dei nomi di dominio. Tra i siti che usano Polyfill JS, infatti, c’è c’era (fino alle prime ore del 27 giugno 2024) anche quello dell’Agenzia per l’Italia digitale (AgID).

Polyfill.io AgID

Nel momento in cui scriviamo, il tag script che richiamava polyfill.io è stato rimosso.

Aggiornamento del 27 giugno: Namecheap sospende il dominio e Cloudflare eroga una versione “sana” degli script

Venendo incontro alle molteplici segnalazioni, il registrar Namecheap ha provveduto a sospendere il dominio polyfill.io. Abbiamo infatti verificato che il dominio non è più risolto a livello di record DNS.

Con quest’azione, nessun codice malevolo sarà più servito attraverso le pagine Web che ancora richiamano file ospitati sul dominio polyfill.io.

Dal canto suo, per evitare problemi sulle pagine che ancora si avvalgono del codice di Polyfill JS, Cloudflare ha fatto in modo che i siti facenti uso delle sue funzionalità di proxying eroghino sempre e solo versioni sicure dei file JavaScript. La funzionalità di protezione è attiva anche per gli utenti non paganti ovvero coloro che si avvalgono del piano free di Cloudflare.

Credit immagine in apertura: iStock.com – Olemedia

Ti consigliamo anche

Link copiato negli appunti