PEERSTITCH, il malware fantasma nei firewall Fortinet: quando il rischio arriva dal fornitore
Un provider di servizi gestiti del settore telecomunicazioni ha subito una violazione attraverso la console centrale che amministrava centinaia di firewall di terzi. Gli attaccanti hanno prelevato configurazioni, credenziali e chiavi di oltre 500 FortiGate e su alcuni di essi hanno installato PEERSTITCH, un impianto che vive solo in memoria e non apre nemmeno una connessione. È il caso di scuola di quello che la NIS2 chiama sicurezza della catena di approvvigionamento, e che nelle PMI italiane viene di solito gestito con una firma in calce a un contratto di manutenzione. Indice degli argomenti C’è un momento, in ogni progetto di esternalizzazione, in cui qualcuno dice la frase magica: “tanto il firewall lo gestisce il fornitore”. Da quel momento la sicurezza del perimetro smette di essere un problema dell’azienda e diventa un atto di fede. Funziona benissimo, finché qualcuno non va a controllare in che stato è la console da cui il fornitore governa tutti i firewall di tutti i suoi clienti. Il 14 ottobre 2026 l’unità di ricerca Unit 42 di Palo Alto Networks ha pubblicato la ricostruzione di un’intrusione che a quella console è arrivata davvero. Il report descrive un provider di servizi gestiti (MSP) nel settore telecomunicazioni, compromesso a partire da settembre 2024 tramite la vulnerabilità CVE-2024-47575 di FortiManager, la piattaforma Fortinet usata per amministrare in modo centralizzato i firewall FortiGate. Dalla console gli attaccanti hanno portato via i dati di oltre 500 dispositivi gestiti e, in una fase successiva, hanno concatenato una seconda vulnerabilità, CVE-2025-61624, per diventare root su alcuni firewall e installare un malware inedito per architettura ARM64 battezzato PEERSTITCH. Prima di entrare nel dettaglio tecnico, due precisazioni di onestà intellettuale, perché in questo settore i titoli corrono più veloci dei fatti. Unit 42 attribuisce l’attività al cluster CL-STA-0954, che si sovrappone a quello che Mandiant traccia come UNC5820, e dice soltanto che alcuni aspetti dell’attività post-sfruttamento ricordano intrusioni attribuite a sospetti attori statali. Non indica nazione, non indica movente. Inoltre il numero “500 firewall” misura i dispositivi di cui sono stati esposti dati, non le reti dei clienti effettivamente violate: i ricercatori dichiarano espressamente di non aver esaminato le reti dei clienti dell’MSP. Chi scrive “500 firewall compromessi” sta aggiungendo un’enfasi che la fonte non autorizza. La sequenza, come la ricostruisce Unit 42, è lineare e per questo istruttiva. A settembre 2024 gli attaccanti sfruttano CVE-2024-47575 contro il FortiManager del provider. Fortinet pubblicherà il bollettino FG-IR-24-423 il 23 ottobre 2024, con punteggio CVSS 9.8, ma Mandiant aveva già osservato lo sfruttamento di questa falla a partire dal 27 giugno 2024 su altre vittime, stimando oltre 50 FortiManager potenzialmente compromessi in vari settori. Quindi la finestra di esposizione non è stata “poche ore prima della patch”: è stata mesi. Dopo l’accesso iniziale gli attaccanti registrano nella console un FortiGate virtuale falso, chiamato localhost, ed esfiltrano subito un archivio con i dati di gestione. Poi aspettano. Unit 42 parla di un lungo periodo di permanenza, e la pazienza è la parte più preoccupante: non c’è fretta di monetizzare, perché ciò che hanno in mano non scade da solo. Nelle fasi successive la console compromessa viene usata per spingere configurazioni di sniffing sui firewall gestiti, le credenziali recuperate dall’archivio vengono craccate, gli attaccanti entrano via VPN SSL, sfruttano la seconda vulnerabilità e installano l’impianto su una selezione di firewall. Un dettaglio che dovrebbe far riflettere ogni MSP: il numero di serie del dispositivo falso (FMG-VMTM23017412) e due degli indirizzi IP usati per registrarlo compaiono già nell’elenco degli indicatori di compromissione pubblicato da Fortinet nel 2024. Chi avesse controllato quei log nell’autunno di due anni fa avrebbe trovato la porta d’ingresso. Il punto non è il rimprovero, è la lezione: gli indicatori pubblici invecchiano bene solo se qualcuno li usa. CVE-2024-47575, soprannominata FortiJump, è una mancanza di autenticazione per una funzione critica (CWE-306) nel demone fgfmd di FortiManager, il servizio che parla il protocollo FGFM con i firewall gestiti, in ascolto sulla porta TCP 541. Un attaccante remoto non autenticato, con richieste costruite ad arte, può eseguire codice o comandi. Le versioni corrette sono la 7.6.1, 7.4.5, 7.2.8, 7.0.13, 6.4.15 e 6.2.13, con date e dettagli nel bollettino Fortinet. Pillola: perché registrare un dispositivo falso è così potente. In un’architettura FortiManager la fiducia è bidirezionale e basata su certificati: la console si fida dei firewall che ha enrolled e i firewall si fidano della console. Se un estraneo riesce a farsi accettare come “dispositivo gestito”, la console lo tratta come un cliente legittimo e, con il comportamento di default, gli consegna informazioni che a un estraneo non dovrebbe mai dare. Fortinet suggerisce di abilitare set fgfm-deny-unknown enable (dalle versioni 7.0.12, 7.2.5 e 7.4.3), di disattivare la registrazione automatica dei dispositivi non noti e, dalla 7.2.0, di limitare con una policy local-in la porta TCP 541 ai soli indirizzi IP dei FortiGate conosciuti. Sono tre righe di configurazione che separano una console amministrata da una console esposta. L’archivio sottratto dalla console, secondo Unit 42, contiene le configurazioni complete in esecuzione di oltre 500 FortiGate, i database globali di policy e oggetti, l’inventario con numeri di serie e indirizzi pubblici, le mappe di topologia, le tabelle di routing, le credenziali di amministratori, utenti locali e VPN SSL, e materiale crittografico codificato che comprende certificati pubblici e chiavi private. Per un attaccante questo non è un furto di dati, è il furto di un’identità tecnica. Chi possiede configurazione, chiavi e credenziali di un firewall non ha bisogno di sfondarlo: può presentarsi alla porta con le chiavi giuste. È infatti quello che è successo. Le credenziali erano conservate in una forma reversibile, cioè cifrate e non sottoposte a hashing a senso unico, e Unit 42 ha confermato che le password di amministratori e VPN SSL possono essere recuperate con attacchi di forza bruta partendo da quei dati. Gli attaccanti sono rientrati dalla porta principale, con un accesso VPN SSL perfettamente valido. Ecco il messaggio che il report ripete con una chiarezza che andrebbe appesa nelle sale riunioni: il materiale di fiducia resta valido finché non viene ruotato, e una compromissione non finisce quando la piattaforma viene aggiornata. Applicare la patch a FortiManager chiude la porta da cui sono entrati. Non annulla le copie delle chiavi che sono già uscite. Fortinet, nel suo bollettino del 2024, elenca che cosa andrebbe ruotato dopo una compromissione, e la lista è lunga e scomoda: account di amministrazione, chiavi private dei certificati (offload SSL, ispezione profonda, autenticazione IPsec), chiavi precondivise delle VPN, utenti locali, chiavi TACACS, password LDAP e Active Directory, segreti RADIUS e SNMP, password dei vicini OSPF e BGP, chiavi wireless, credenziali salvate negli stitch di automazione, chiavi HA. Domanda onesta: quante PMI italiane, a valle di un fornitore che ha “aggiornato la console”, hanno mai ricevuto la richiesta di ruotare tutto questo? La seconda vulnerabilità è il pezzo che fa capire perché i punteggi CVSS vanno letti nel contesto. CVE-2025-61624 è una path traversal (CWE-22) nell’interprete a riga di comando di FortiOS, ma anche di FortiPAM, FortiProxy e FortiSwitchManager, che consente a un utente già privilegiato di scrivere o cancellare file con argomenti costruiti ad arte. Fortinet la classifica come escalation di privilegi, la valuta CVSS 6.0 e richiede credenziali di amministratore. NVD la porta a 6.5. Numeri da “patcha quando hai tempo”. Il problema è che le credenziali di amministratore gli attaccanti le avevano già, grazie al furto precedente. Il meccanismo, descritto da Unit 42, riguarda l’oggetto system.auto- script: il nome dello script non viene sanificato, quindi un nome contenente sequenze ../ permette di scrivere il corpo dello script in un punto qualsiasi del filesystem, e lo script viene eseguito con i privilegi del motore di auto-script. In questo modo si esce dalla CLI ristretta di FortiOS, che non offre una shell nemmeno al super_admin, e si ottiene root. Nell’attacco osservato l’oggetto si chiamava ../../../../setup. Una falla che richiede privilegi alti sembra poco pericolosa finché qualcuno non ha già quei privilegi. Nella valutazione del rischio, il punteggio di un singolo anello va sempre riletto alla luce di ciò che l’attaccante possiede nel momento in cui lo usa. CISA ha aggiunto CVE-2025-61624 al catalogo delle vulnerabilità sfruttate (KEV) il 16 ottobre 2026, con scadenza al 19 ottobre e l’indicazione che serve un’analisi forense, non solo la patch. Le versioni FortiOS corrette sono la 7.6.5 e la 7.4.10, mentre per i rami 7.2, 7.0 e 6.4 non c’è correzione e serve migrare. Fortinet segnala anche una patch virtuale. Non è noto se la falla fosse sfruttata prima della divulgazione di aprile 2026: Unit 42 non fornisce la data di installazione dell’impianto, quindi chi scrive “zero-day” sta ipotizzando. Veniamo al protagonista. PEERSTITCH è un eseguibile Linux ARM64 scritto in C e collegato staticamente a glibc. Unit 42 lo descrive come un iniettore monouso che modifica la memoria di processi già in esecuzione: non è un demone residente, non si installa, non si mette in ascolto. Il componente principale, chiamato lldprx, si scarica nella directory /data2/template/ insieme ad altri quattro file (script di preparazione, runtime Emscripten, modulo WebAssembly e uno script orchestratore) e, dopo aver fatto il suo lavoro, cancella se stesso dal disco. Il lavoro consiste nel cercare nei processi /bin/miglogd, che gestisce il logging, e /bin/iked, che gestisce IKE e IPsec, leggere le loro mappe di memoria, agganciarli con ptrace (nella variante PTRACE_SEIZE), allocare un’area anonima di 16 KB in lettura, scrittura ed esecuzione e scrivere al suo interno un payload di 1.344 byte attraverso /proc/ /mem. Poi applica alcune patch: istruzioni NOP in tre punti del codice, che Unit 42 interpreta come la soppressione dei controlli anti-manomissione, e un breve trampolino che reindirizza l’esecuzione nel codice iniettato. Qui sta la parte brillante, e richiede una ricostruzione precisione perché in giro circola una versione imprecisa. PEERSTITCH non dirotta sessioni FGFM e non apre socket. I due ganci iniettati nei demoni cercano passivamente, dentro i dati che i demoni già gestiscono, due marcatori testuali: la stringa 8550 e l’indirizzo 169.254.0.1. Quando ne trovano uno estraggono un token fino a 31 byte e lo salvano in un buffer circolare, poi lo scrivono nell’altro demone attraverso /proc/ /mem. Quando iked gestisce una successiva sessione VPN che porta un tag corrispondente, prende un ramo di uscita alternativo che aggira i controlli di sicurezza predefiniti di FortiOS. In pratica il canale dell’attaccante è del contenuto costruito ad arte dentro traffico che il firewall registra o negozia già per mestiere. Nessuna porta nuova, nessuna connessione in uscita generata dall’impianto, niente che un firewall perimetrale o un IDS possano segnalare come anomalo. Il malware usa il firewall come mezzo di comunicazione. La costruzione di un secondo canale, distinto dal precedente e questo sì con traffico in uscita, è avvenuta abusando di Apache mod_md, il modulo che gestisce i certificati ACME: scrivendo un file di configurazione fuori posizione tramite la stessa falla di path traversal e iniettando argomenti shell nel campo del dominio, gli attaccanti hanno ottenuto una shell SSH inversa, rinnovata ripetutamente grazie all’opzione MDRenewMode always. È un altro esempio di come funzionalità legittime, in questo caso la gestione dei certificati, diventino il veicolo per l’accesso remoto. Quindi l’affermazione “nessuna connessione in uscita” vale per PEERSTITCH, non per l’intera intrusione. La parte di anti-forensics merita attenzione perché spiega perché questo tipo di incidente si scopre tardi. Gli attaccanti terminavano miglogd e syslogd prima di eseguire gli script, cancellavano i crash log con diagnose debug crashlog clear per eliminare le tracce dei tentativi di iniezione falliti, rimuovevano amministratori, gruppi VPN e oggetti auto-script creati per l’occasione e sovrascrivevano il file di configurazione di mod_md con un contenuto di copertura. Unit 42 ritiene con confidenza media che abbiano anche provocato perdite di telemetria sull’interfaccia di gestione dei tunnel. Un corollario tecnico di cui tenere conto: lo strumento di verifica dell’integrità dei file di Fortinet, che confronta ciò che è sul disco, non può vedere un impianto che sul disco non c’è. È un’inferenza coerente con il report, non una verifica diretta, ma ha una conseguenza pratica evidente: il fatto che il controllo di integrità risulti pulito non dimostra nulla. Unit 42 fornisce indicazioni di ricerca concrete. In memoria volatile, si devono ispezionare le mappe di miglogd e iked alla ricerca di regioni anonime di esattamente 16.384 byte con permessi rwxp. Si verifica l’integrità del codice dei demoni, cercando l’istruzione 0xAA0003E0 ai tre offset indicati nel report. Si cercano scritture su /proc/ /mem da parte di un demone verso l’altro. Il comando diagnose debug crashlog read può mostrare segnali 11 (segmentation fault) in miglogd, iked o syslogd, residui di iniezioni andate male. Infine, un controllo di configurazione sulle revisioni: qualunque oggetto system.auto-script con ../../ nel nome è una bandiera rossa. Gli indicatori completi (hash, nomi di file, indirizzi) sono nelle tabelle del report originale e includono i file lldprx, pM.js, index.js, index.wasm e ipssem.js, oltre a una regola YARA pubblicata da Unit 42. Un consiglio operativo da chi queste cose le fa di mestiere: se sospetti l’impianto, non riavviare per primo. Quello che risiede solo in memoria è, per sua natura, la prova che il riavvio distrugge. Questo è un articolo che vuole essere utile, quindi conviene dire dove finisce la solidità delle fonti. Tutti i dettagli tecnici su PEERSTITCH vengono da un unico report di un unico vendor su una singola vittima. Palo Alto Networks è, per inciso, un concorrente di Fortinet: ciò non rende il lavoro meno valido, ma è un motivo in più per attendere analisi indipendenti. Il report non dice quando l’impianto è stato installato, su quanti dispositivi sia stato trovato, quali versioni di FortiOS e FortiManager fossero in uso, né se l’impianto sopravviva a un riavvio. Sul punto della persistenza si può ragionare: il codice che esiste solo in memoria normalmente si perde al riavvio del demone che lo ospita, ma è un ragionamento, non una prova, e le credenziali rubate e la shell inversa restano comunque. Chi afferma con sicurezza che serva un “reset di fabbrica”, o che il malware sia persistente, sta andando oltre ciò che è stato pubblicato. Per chi in azienda firma i contratti, esiste un equivoco ricorrente da correggere: l’articolo 24 della NIS2, nell’attuazione italiana, non riguarda i controlli sull’esportazione né la tracciabilità di beni a duplice uso. Nel D.Lgs. 138/2024, l’articolo 24, comma 2, lettera d) impone ai soggetti di adottare misure per la sicurezza della catena di approvvigionamento, compresi gli aspetti relativi ai rapporti con i diretti fornitori e fornitori di servizi, e il comma 3 chiede di tenere conto delle vulnerabilità specifiche di ciascun fornitore e della qualità complessiva dei suoi prodotti e delle sue pratiche di sicurezza. Nella direttiva europea il contenuto corrisponde all’articolo 21, paragrafo 2, lettera d) e paragrafo 3; l’articolo 24 della direttiva tratta tutt’altro, gli schemi europei di certificazione. Citare il numero giusto non è pignoleria: in un’ispezione, conta. Sul piano pratico, l’Agenzia per la cybersicurezza nazionale ha introdotto l’obbligo di dichiarare i “fornitori rilevanti NIS” con la determinazione 127437/2026, e secondo le FAQ ACN commentate dagli operatori i servizi gestiti e i servizi gestiti di sicurezza rientrano tra le categorie ICT da considerare. Chi gestisce firewall per conto di terzi è dunque, in modo molto concreto, un fornitore rilevante. Le date e i dettagli applicativi vanno verificati sui testi originali delle determinazioni, perché le scadenze variano a seconda del momento in cui il soggetto è stato registrato. La console FortiManager di un MSP è un punto unico di fiducia per tutti i firewall che amministra. Quando il comma 3 dell’articolo 24 chiede di valutare le pratiche di sicurezza del fornitore, quella console è la prima cosa da valutare, perché è il fornitore concentrato in un solo oggetto. Il precedente storico più citato per gli attacchi alla catena degli MSP è Kaseya del 2021, in cui il gruppo REvil sfruttò una vulnerabilità del software di gestione per colpire centinaia di aziende a cascata: cambia il vettore, non il principio. Se sei un’azienda cliente con firewall gestiti da terzi, scrivi al fornitore, per iscritto, e fai queste quattro domande. La console di gestione è mai stata raggiungibile da Internet prima del 23 ottobre 2024? Quale versione era in esecuzione? I log sono stati confrontati con gli indicatori del bollettino FG-IR-24-423? Che cosa è stato ruotato dopo, e quando? Un fornitore serio risponde in giornata, con date. Uno che risponde “stiamo verificando” per tre settimane ti ha appena dato una seconda risposta. Se sei tu l’MSP, la lista tecnica è più lunga ma chiara. Aggiornare FortiOS per CVE-2025-61624 o migrare dai rami senza correzione. Controllare nelle revisioni di configurazione la presenza di oggetti auto-script con ../ nel nome. Cercare le regioni RWX da 16 KB in miglogd e iked prima di riavviare qualsiasi cosa. Abilitare fgfm-deny-unknown, restringere con policy local-in la porta TCP 541 e, sulle versioni che lo supportano, usare una CA FGFM esclusiva. Isolare le interfacce di gestione con il massimo livello di segmentazione, come raccomanda lo stesso Unit 42, che le definisce il bersaglio di maggior valore per chi gestisce infrastrutture altrui. Aggiungere un allarme sul silenzio dei log: un firewall che smette di loggare è un firewall che sta forse nascondendo qualcosa. E considerare ogni credenziale e certificato custodito dalla console come compromesso nel momento stesso in cui la console lo è. Il perimetro della tua azienda non finisce dove finisce la tua rete: finisce dove finisce la console di chi la amministra per te. La vera questione non è se il tuo fornitore sia stato bravo ad applicare la patch, ma se qualcuno, nel tuo contratto, gli ha mai chiesto di dimostrare che nessuno aveva già copiato le chiavi prima che la patch arrivasse. Unit 42, Palo Alto Networks, “Unit 42 Uncovers PEERSTITCH, a Stealthy FortiGate Implant”, 14 ottobre 2026: https://unit42.paloaltonetworks.com/fortimanager-cve-2024-47575-peerstitch-malware/ Fortinet PSIRT, FG-IR-24-423 (CVE-2024-47575): https://fortiguard.fortinet.com/psirt/FG-IR-24-423 Fortinet PSIRT, FG-IR-26-122 (CVE-2025-61624): https://fortiguard.fortinet.com/psirt/FG-IR-26-122 CISA, catalogo KEV, aggiunta del 16 ottobre 2026. Mandiant, attività UNC5820 (via The Hacker News): https://thehackernews.com/2024/10/fortinet-warns-of-critical.html SecurityWeek: https://www.securityweek.com/exploited-fortinet-bug-linked-to-stealthy-fortigate-implant-in-telecom-hack/ D.Lgs. 4 settembre 2024, n. 138, art. 24: https://www.reteambiente.it/normativa/55231/dlgs-4-settembre-2024-n-138/ Cyberness, determinazione ACN 127437/2026 sui fornitori rilevanti NIS: https://www.cyberness.it/nis2-fornitori-rilevanti-determinazione-acn-127437-2026/
cybersecurity360.itOct 30, 2026source