Uno script pubblicitario manomesso ha derubato i visitatori di migliaia di siti: e nessuno di quei siti era stato violato

Per almeno una settimana il file di tracciamento di Adform ha servito ai visitatori un codice che sostituiva gli indirizzi dei portafogli copiati. I siti coinvolti erano intatti: il codice arrivava da fuori, e nessuno se n'era accorto.

C’è una categoria di guai che non compare in nessun pannello di controllo, non genera un avviso e non si risolve con un aggiornamento. Questa è una di quelle.

Per almeno una settimana, il file di tracciamento della piattaforma pubblicitaria Adform — si chiama trackpoint-async.js e viene caricato dal dominio s2.adform.net — ha servito ai visitatori dei siti che lo incorporano un pezzo di codice che non doveva esserci.

I siti che lo caricavano non erano stati violati. Nessuno era entrato nei loro server, nessuna password era stata rubata, nessun plugin manomesso. Eppure quel codice arrivava ai loro visitatori passando dal loro dominio.

Cosa faceva quel codice

Due blocchi, aggiunti in forma offuscata in coda alla libreria legittima.

Il primo controlla gli appunti — quello che l’utente ha copiato — ogni quattro secondi. Se trova qualcosa che ha la forma di un indirizzo di portafoglio Bitcoin, Ethereum o TRON, lo sostituisce con un indirizzo controllato da chi ha piazzato il codice. L’utente incolla credendo di incollare quello che aveva copiato, e manda i soldi a uno sconosciuto.

Il secondo blocco fa la stessa cosa a video: riscrive i valori dentro i campi di inserimento, le aree di testo e i contenuti modificabili della pagina.

Il codice contattava anche un indirizzo esterno, inviando il nome del sito e il percorso della pagina su cui si trovava.

Plugin installato contro tag richiamato da remoto

Un plugin sta sul tuo server: lo installi tu, lo vedi nell'elenco, quando esce una versione nuova il pannello ti avvisa. Un tag di terze parti è solo una riga che dice al browser del visitatore di andare a prendere un file su un server altrui, ogni volta che qualcuno apre la pagina. Il contenuto di quel file può cambiare in qualsiasi momento, senza che tu tocchi nulla e senza che tu venga avvisato. Sul tuo sito la riga resta identica.

Il punto che riguarda te, anche se non hai mai sentito nominare Adform

Adform è una delle maggiori piattaforme pubblicitarie europee — vale da sola quasi il 30% del mercato delle piattaforme di acquisto degli spazi. Le fonti danno numeri diversi sui suoi clienti diretti, da qualche migliaio a diverse migliaia, e Adform non ha divulgato quanti siti siano stati effettivamente coinvolti.

Ma la domanda utile non è «ho Adform?». È questa: quanti pezzi di codice, sul sito della tua azienda, vengono presi da server che non sono tuoi?

La risposta, nella stragrande maggioranza delle piccole imprese, è: parecchi, e nessuno sa esattamente quali. Il tag di analisi delle visite. Il pixel di una campagna pubblicitaria fatta due anni fa. La chat che avevate provato e poi abbandonato. Il banner dei cookie. Il widget delle recensioni. Il carrello di un servizio esterno. Li ha messi un’agenzia, poi un’altra, poi lo sviluppatore che è passato a sistemare una cosa.

Ognuno di quei tag è codice che gira nel browser dei tuoi clienti, sotto il tuo dominio, con i permessi della tua pagina. Se uno viene manomesso alla fonte, i tuoi clienti vengono colpiti mentre stanno guardando il tuo sito — e per loro il responsabile sei tu.

Due versioni che non coincidono

Vale la pena registrarlo, perché è la parte che di solito sparisce nelle riprese.

Adform ha dichiarato che il codice non installava software sul dispositivo e non lasciava tracce persistenti: funzionava solo finché la pagina restava aperta. L’azienda ha avvisato i clienti, ha segnalato alle autorità e raccomanda a chi ha visitato siti interessati di svuotare cache e cookie del browser, perché il file alterato può essere rimasto in memoria.

Su due punti però le versioni divergono. Adform circoscrive l’esposizione alla giornata del 27 luglio; il ricercatore documenta attività malevola per almeno una settimana. E sull’ammontare eventualmente sottratto non c’è alcun dato: nessuno ha detto quanto sia stato rubato, né quanti visitatori siano stati esposti.

Quando la finestra dichiarata dal fornitore e quella osservata da chi ha analizzato il codice non coincidono, l’ipotesi prudente è la seconda.

Cosa fare lunedì mattina

Non è un intervento tecnico da fare di persona. È una richiesta da girare a chi ti gestisce il sito — agenzia, sviluppatore, chiunque sia.

  1. Fatti dare l’elenco completo degli script di terze parti caricati sulle pagine del sito, con il dominio da cui arriva ognuno e a cosa serve. Non «più o meno quali sono»: l’elenco.
  2. Fai togliere tutto quello che non serve più. Ogni tag rimasto acceso per inerzia è un fornitore a cui hai lasciato le chiavi. È la voce che si riduce più in fretta e con il maggior guadagno.
  3. Chiedi se sul sito era presente un tag Adform e, in caso affermativo, fai svuotare le cache — quella del sito e quella dei sistemi che lo servono.
  4. Chiedi due contromisure tecniche, con questi nomi: il controllo di integrità del sottorisorsa (fa sì che il browser rifiuti un file esterno se il contenuto è cambiato rispetto a quanto atteso) e una politica sulle sorgenti di contenuto (limita i domini da cui la pagina può caricare codice). Non sono applicabili a tutti i tag, ma dove si possono mettere chiudono esattamente questo tipo di attacco.
  5. Stabilisci una regola per il futuro: nessun tag nuovo sul sito senza che qualcuno sappia chi l’ha chiesto, a cosa serve e quando andrà tolto.

In breve

Il file trackpoint-async.js della piattaforma pubblicitaria Adform è stato manomesso e per almeno una settimana ha servito ai visitatori dei siti che lo incorporano un codice che sostituiva gli indirizzi dei portafogli copiati negli appunti e riscriveva i campi delle pagine. Il campione più vecchio individuato è del 26 luglio, la rimozione del 27 luglio; Adform sostiene che l’esposizione sia stata di un giorno, il ricercatore che l’ha scoperta parla di una settimana.

I siti coinvolti erano intatti: il codice arrivava da un server esterno, ed è questa la cosa da portarsi a casa. Il tuo sito può fare danno ai tuoi clienti senza essere stato violato, e nessun pannello te lo dirà. L’unica difesa è sapere quali pezzi di codice altrui giri sulle tue pagine — e tenerne il meno possibile.

Fonti consultate

  1. DoublePulsar (Kevin Beaumont) — Adform compromised to serve crypto stealer via supply chain attack · primary
  2. BleepingComputer — Online ad firm Adform's script compromised to steal cryptocurrency · press
  3. The Hacker News — Hackers Poison Adform Script to Swap Crypto Wallet Addresses Across Customer Sites · press