Gaslight, il malware macOS che attacca l’analista AI invece della sandbox

SentinelOne analizza Gaslight, impianto macOS in Rust che incorpora una cascata di 38 messaggi falsi per ingannare la triage assistita da LLM dell’analista. Non la prima prompt injection anti-analista, ma il primo impianto macOS noto ad adottarla.

Gaslight, il malware macOS che attacca l'analista AI invece della sandbox

Per anni la prompt injection è stata descritta come un problema di chi costruisce applicazioni sui modelli linguistici: input ostili che dirottano un chatbot o un agent. Gaslight, analizzato il 23 giugno dai laboratori di SentinelOne, rovescia il bersaglio. A essere ingannato non è il sistema della vittima, ma chi lo difende: il malware incorpora un payload costruito per confondere gli strumenti di analisi basati su intelligenza artificiale con cui l’analista lo esamina.

È un impianto e infostealer per macOS scritto in Rust, appartenente a una famiglia mai documentata prima. Gli stealer macOS in Rust non sono però una novità assoluta: SentinelLABS ne aveva già analizzati nel 2023, come AMOS, agganciati allo stesso login.keychain-db . L’attribuzione ad attori allineati alla Corea del Nord è data con alta confidenza, ma va letta per quello che è: una valutazione del vendor, non un’attribuzione formale. E il campione resta un backdoor con funzioni di furto dati, non un ransomware.

Come funziona la catena

Il comando e controllo passa per le API dei bot di Telegram: l’impianto entra in un polling loop e mette a disposizione dell’operatore una shell interattiva. I comandi principali sono sei ( help , id , shell via execvp, kill , upload e stop ), con indizi di un settimo, focus , dalla funzione che SentinelOne non è riuscita a ricostruire. Per evitare doppioni, l’impianto sfrutta la risposta Conflict di Telegram, che termina la seconda copia in polling sullo stesso token, e tiene il sistema sveglio con IOPMAssertionCreateWithName . La persistenza si appoggia a un LaunchAgent con l’etichetta ingannevole com.apple.system.services.activity .

Sul piano della rete l’OPSEC è curata. I payload verso il C2 viaggiano cifrati in AES-GCM su TLS con certificate pinning ( SecTrustSetAnchorCertificatesOnly ), e l’impianto rispetta i proxy di sistema. Token del bot, ID della chat e resto della configurazione non sono nel campione ma arrivano a runtime; in più, l’impianto oscura il proprio token Telegram nell’output, sottraendolo a chi dovesse catturare log o crash artifact.

La raccolta dati è affidata a uno script Python in Base64 di circa 6,6 KB, che aspira cronologie del Terminale, elenco delle applicazioni installate, processi attivi, profilo hardware e software, il database del Keychain di macOS e i dati di Chrome, Brave, Firefox e Safari, per poi comprimere tutto in un archivio ZIP esfiltrato via Telegram. L’interprete non viene dato per scontato: un installer bash separato scarica a parte un cpython-3.10.18 dal progetto astral-sh/python-build-standalone, una catena di approvvigionamento del runtime che SentinelLABS indica come inedita in un impianto di questo tipo. Emoji e intestazioni prolisse nei commenti tradiscono codice generato almeno in parte da un modello linguistico, segno di un tooling ormai banale anche sul versante offensivo.

Il vero salto: ingannare la triage automatica

Ciò che distingue Gaslight è un blocco di circa 3,5 KB, racchiuso fra token {{DATA}} dentro un fence Markdown che imita lo scaffold di un modello: 38 falsi messaggi di «sistema» pensati per spingere un security agent basato su LLM ad abortire, troncare o rifiutare l’analisi. Lo scaffold, scrive SentinelOne, finge scadenze del token, terminazioni per esaurimento di memoria, disco pieno e fallimenti ripetuti, e dissemina avvisi inventati su vulnerabilità da injection e segnalazioni di analisi statica. La sintesi di Phil Stokes è netta: «attacca la percezione dell’agent, non la sandbox in cui gira».

La tecnica non nasce qui, e il rischio aveva già lasciato tracce concrete. Nel 2025 Check Point aveva documentato una prompt injection anti-analista, un proof of concept su Windows costruito su una singola istruzione diretta al modello; Socket ha descritto un payload di supply chain (Hades) il cui stealer si apre con un falso header di prompt injection; il codice trapelato di Shai-Hulud conteneva una «Anthropic Magic String» pensata per fermare Claude Code. La novità di Gaslight è dunque circoscritta, il che la rende più istruttiva che clamorosa: è il primo impianto macOS documentato ad adottare la tecnica e il primo caso noto a sostituire la singola istruzione o l’header con una cascata di 38 messaggi che spoofa l’intero harness di triage, rendendo l’inganno assai più credibile per un agent che processa il campione in sequenza.

Il rilievo operativo è evidente: le pipeline di triage assistite da LLM, sempre più diffuse nei flussi di reverse engineering e nei SOC, diventano una superficie di attacco a tutti gli effetti. Un analista che si affida al verdetto di uno strumento automatico rischia di archiviare come innocuo, o come non analizzabile, un campione pienamente operativo. La raccomandazione di SentinelOne è netta: trattare il materiale in esame come input ostile, mai come istruzioni, e tenerlo fuori dal modello. Sul piano editoriale, questo si traduce in scelte di governance che vanno oltre il singolo patch: isolare i guardrail dalla logica di triage e imporre la verifica umana sulle decisioni di archiviazione, con l’avvertenza che si tratta di analisi e non di una prescrizione del report.

Condividi sui Social Network: