Una chiave Cloudflare rubata ha trasformato i widget Brevo in un canale di distribuzione per ClickFix

Chiave Cloudflare rubata ha permesso di iniettare falsi controlli ClickFix in widget Brevo, esponendo fino a 100.000 siti il 14 settembre 2026.

Una chiave Cloudflare rubata ha trasformato i widget Brevo in un canale di distribuzione per ClickFix
Cloud Security

Immagine illustrativa generata con AI

Brevo ha confermato una compromissione della supply chain che ha permesso agli aggressori di iniettare contenuti dannosi nelle pagine ospitate dall’azienda e nei componenti JavaScript incorporati nei siti web dei clienti.

L’operazione non ha richiesto modifiche ai server di origine di Brevo. Gli aggressori hanno invece utilizzato una chiave API Cloudflare rubata per creare un Worker dannoso, riscrivendo le risposte HTTP mentre attraversavano la rete edge di Cloudflare.

Le modifiche non autorizzate sono rimaste attive per circa cinque ore e mezza il 14 settembre 2026. La società di sicurezza Sansec ha stimato che potrebbero essere stati esposti fino a 100.000 siti web che utilizzavano componenti Brevo interessati, anche se l’esposizione non implica necessariamente che ogni sito o visitatore sia stato compromesso.

La manomissione a livello edge ha interessato pagine e script incorporati di Brevo

Brevo ha identificato la principale finestra di esposizione tra le 16:07 e le 20:30 UTC del 14 settembre. Sansec ha indicato un intervallo leggermente diverso, dalle 16:05 alle 20:13 UTC.

Le pagine interessate includevano contenuti distribuiti tramite:

  • brevo.com
  • sendinblue.com
  • login/account/my/onboarding.brevo.com
  • sibforms.com

La compromissione ha raggiunto anche le risorse Brevo caricate da siti web di terze parti, tra cui lo script per i moduli Brevo, il widget Brevo Conversations e gli script di caricamento dell’SDK Brevo. Non sono state divulgate le versioni specifiche dei componenti.

L’attacco si è così esteso oltre le persone che visitavano direttamente i siti di Brevo. Qualsiasi sito web di un cliente che caricasse uno dei componenti manipolati avrebbe potuto diventare un punto di distribuzione indiretto per il codice degli aggressori.

Brevo ha dichiarato che diversi sistemi fondamentali non sono stati interessati, tra cui app.brevo.com, le API, l’infrastruttura per la distribuzione delle email e i dati degli account dei clienti. Non ci sono indicazioni che gli aggressori abbiano modificato i contenuti archiviati sui server di origine di Brevo.

Sansec ha riferito in seguito che il 15 settembre i sottodomini dannosi avevano smesso di risolvere e che i file Brevo interessati erano stati ripuliti.

Una credenziale Cloudflare hardcoded ha reso possibile la compromissione

Gli aggressori hanno ottenuto una chiave API Cloudflare con validità prolungata, inserita hardcoded nel codice sorgente dell’applicazione. La credenziale disponeva di autorizzazioni complete sull’account, anziché di un accesso limitato alle sole operazioni necessarie.

Queste autorizzazioni hanno permesso di creare Cloudflare Workers, regole di routing e record DNS nelle zone di Brevo. Secondo Brevo, questa attività non ha attivato alcun avviso.

Gli aggressori hanno quindi distribuito un Worker in grado di intercettare e riscrivere le risposte all’edge della CDN. Il Worker rimuoveva inoltre gli header HTTP di sicurezza, tra cui Content-Security-Policy, che altrimenti limiterebbe gli script e le risorse eseguibili dal browser.

Questa architettura spiega perché i controlli convenzionali sull’integrità dei file non abbiano rilevato i contenuti iniettati. I file ospitati da Brevo sono rimasti invariati, mentre ai visitatori venivano consegnate risposte modificate dall’infrastruttura Cloudflare.

La credenziale potrebbe essere stata esposta già alla fine di agosto. Brevo ha dichiarato di non aver trovato prove di un utilizzo dannoso prima della finestra dell’attacco del 14 settembre.

Dopo aver rilevato l’incidente, l’azienda ha rimosso il Worker dannoso e le relative route, revocato la chiave rubata e invalidato le credenziali create tramite essa. Brevo ha inoltre rimosso il segreto hardcoded dal codice sorgente, eliminato gli hostname controllati dagli aggressori e svuotato i contenuti memorizzati nella cache edge.

Falsi controlli Cloudflare hanno spinto gli utenti Windows verso ClickFix

Ai visitatori che ricevevano i contenuti modificati veniva mostrata una pagina contraffatta di verifica Cloudflare. L’esca proponeva poi istruzioni ClickFix pensate per convincere gli utenti Windows a eseguire autonomamente un comando.

Gli attacchi ClickFix si basano sull’ingegneria sociale, non su un exploit diretto del browser. Alla vittima viene detto che per completare una verifica, correggere un errore o superare un controllo di sicurezza è necessario copiare ed eseguire un comando. Seguire queste istruzioni può portare all’installazione di malware.

Le informazioni disponibili non identificano il comando esatto mostrato durante questa campagna né il payload Windows finale. Non è quindi chiaro quali famiglie di malware siano state distribuite agli utenti che hanno completato i passaggi.

La tecnica è comparsa anche in altre campagne di compromissione di siti web. Un’operazione separata ha recentemente utilizzato false richieste di verifica su migliaia di siti WordPress e PrestaShop compromessi, dimostrando quanto ampiamente possano essere distribuite queste esche quando vengono alterate risorse web affidabili.

Gli amministratori WordPress hanno dovuto fare i conti con una backdoor persistente

Il codice iniettato eseguiva controlli aggiuntivi sui siti WordPress che utilizzavano un widget Brevo interessato. In particolare, tentava di determinare se il visitatore corrente fosse autenticato come amministratore.

Quando questa condizione era verificata, il codice cercava di scaricare un archivio di plugin dannoso da:

https://cdn10.sendibt1[.]com/p/wm.zip

Durante la sua indagine, Sansec non è riuscita a recuperare l’archivio. Tuttavia, una copia individuata su VirusTotal ha mostrato che il pacchetto si spacciava per un plugin chiamato Web Media Optimizer.

Il suo vero scopo era garantire la persistenza, caricare JavaScript remoto e consentire agli aggressori di mantenere l’accesso. Tra le infrastrutture utilizzate per distribuire il plugin o gli script associati figuravano:

  • https://yelahaye[.]surf
  • https://boiseno[.]club

Dopo l’installazione, il plugin si nascondeva dall’elenco standard dei plugin WordPress. Si copiava inoltre nella directory dei must-use plugin, da cui WordPress carica automaticamente i plugin senza richiederne la normale attivazione.

La backdoor contattava periodicamente:

https://glegchner.com/ads.php

Al momento dell’analisi, quell’endpoint restituiva un indirizzo codificato in Base64 che risolveva in:

https://corralos[.]beer/a412dkoq.js

Il JavaScript proveniente da quell’indirizzo veniva iniettato nelle pagine visibili ai visitatori per mostrare un’altra esca ClickFix. Il plugin conservava una copia dell’URL JavaScript più recente e valido, permettendogli di continuare a caricare codice dannoso anche quando il server di comando diventava temporaneamente non disponibile.

Ancora più grave, il plugin conteneva una chiave di autenticazione hardcoded. Gli aggressori in possesso di quella chiave potevano generare una sessione valida di amministratore WordPress senza conoscere la password dell’amministratore. La sola rotazione delle password potrebbe quindi non essere sufficiente finché il plugin rimane installato.

I proprietari dei siti dovrebbero controllare plugin, configurazione edge e credenziali

Gli amministratori WordPress che hanno visitato un sito interessato mentre erano autenticati il 14 settembre dovrebbero controllare tutti i plugin installati o attivati quel giorno. La verifica deve includere la directory dei must-use plugin, perché il pacchetto dannoso potrebbe non comparire nell’elenco della dashboard standard.

I responsabili della difesa dovrebbero cercare Web Media Optimizer, i domini e gli URL indicati, file PHP imprevisti e sessioni di amministratore sconosciute. Qualsiasi plugin sospetto dovrebbe essere rimosso immediatamente, seguito dalla rotazione delle password degli amministratori e dalla chiusura delle sessioni esistenti.

Le organizzazioni che utilizzano componenti Brevo dovrebbero inoltre:

  • Controllare pagine e template alla ricerca di moduli Brevo, Conversations e script di caricamento dell’SDK interessati.
  • Esaminare le attività di creazione, modifica e routing dei Cloudflare Worker.
  • Verificare le modifiche DNS e gli hostname creati di recente.
  • Controllare l’utilizzo delle chiavi API e le credenziali generate tramite token con privilegi elevati.
  • Revocare le chiavi potenzialmente esposte, invece di affidarsi esclusivamente alle procedure di rotazione programmate.
  • Rimuovere i segreti incorporati nel codice sorgente e negli artefatti di deployment.
  • Svuotare le cache della CDN e dell’applicazione dopo aver verificato che le route dannose siano state eliminate.
  • Cercare nei log di rete, proxy, DNS e web riferimenti all’infrastruttura identificata.
  • Analizzare i casi in cui gli utenti hanno visualizzato richieste di verifica simili a quelle di Cloudflare e successivamente eseguito comandi.

Non è stato divulgato alcun numero di infezioni. La stima di Sansec, fino a 100.000 siti web esposti, descrive il possibile perimetro di distribuzione, non il numero di installazioni riuscite del plugin o di compromissioni Windows.

L’incidente segue una campagna separata di dirottamento degli account Brevo

La compromissione di Cloudflare è avvenuta poco dopo un altro incidente di sicurezza che ha coinvolto Brevo. Il 10 settembre l’azienda ha divulgato una campagna legata all’SSO, durante la quale gli aggressori hanno dirottato gli account dei clienti e li hanno utilizzati per inviare messaggi di phishing.

Il provider di wallet per criptovalute Trezor ha riferito l’11 settembre che la campagna aveva raggiunto 347.000 indirizzi email di utenti e aveva portato alla compromissione di almeno 2.500 account.

Brevo non ha confermato se l’attività di dirottamento degli account fosse collegata alla chiave API Cloudflare rubata. In assenza di prove che colleghino gli operatori, l’infrastruttura o i metodi di accesso, i due incidenti devono essere trattati come indagini separate.

L’ultima compromissione espone comunque un confine di fiducia ad alto impatto: una singola credenziale CDN con privilegi eccessivi ha permesso agli aggressori di manipolare i contenuti nei domini controllati da Brevo e potenzialmente in migliaia di siti dei clienti, lasciando però intatti i file originali.

Leggi anche

Fonti

Questo articolo è una rielaborazione originale basata sulle fonti seguenti.

Argomenti correlatiBrevoCloudflareClickFixsupply chainwidget Brevosicurezza informaticaWordPress
Torna alla home