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.
https://www.ictsecuritymagazine.com/notizie/gaslight-prompt-injection-analista-macos/