Una versione di questa storia circola negli articoli sulla sicurezza, alcuni dei quali ora generati da assistenti IA: il demone di indicizzazione in background di macOS, mdworker, presumibilmente recupera le immagini remote all'interno di qualsiasi file HTML scaricato, quindi un file che non apri mai può comunque segnalare il tuo indirizzo IP a chiunque lo abbia inviato. È una bella storia È anche il tipo di affermazione che dovrebbe essere testata prima di essere ripetuta, quindi l'abbiamo testata.
A un nuovo file accadono tre cose diverse
L’affermazione confonde tre meccanismi separati. Quando un file arriva sul disco, il server di metadati di Spotlight lo trasmette a un plug-in di importazione, eseguito all'interno di un processo mdworker_shared, che estrae testo e attributi in modo che il file diventi ricercabile (mdimport e mdls sono le finestre della riga di comando su questo). Separatamente, quando il Finder necessita di un'icona, Anteprima rapida esegue il rendering di una piccola miniatura. E solo quando selezioni il file e premi Spazio Sguardo veloce esegue il rendering di un'anteprima completa. Ognuno di questi può comportarsi in modo diverso, quindi ognuno necessita del proprio test.
La prova
Abbiamo eseguito un piccolo ascoltatore HTTP sull'indirizzo di loopback che registra ogni richiesta con il suo agente utente, quindi abbiamo creato due file in ~/Downloads che puntano ad esso: una pagina HTML con un'immagine da un pixel e un foglio di stile esterno e un SVG con un'immagine esterna incorporata. Il loopback mantiene l'esperimento autonomo; un server di monitoraggio remoto riceverebbe le stesse richieste, più il tuo indirizzo IP pubblico.
<html><head><title>Q3 Financial Report</title></head><body>
<h1>Financial Summary</h1>
<img src="http://127.0.0.1:8765/html-img.png" width="1" height="1">
<link rel="stylesheet" href="http://127.0.0.1:8765/html-css.css">
</body></html><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="100" height="100">
<image xlink:href="http://127.0.0.1:8765/svg-image.png" width="100" height="100"/>
</svg>1. Basta scaricarlo: indicizzazione Spotlight
Abbiamo aspettato 40 secondi dopo aver creato i file, quindi abbiamo confermato che Spotlight li aveva indicizzati. L'ascoltatore non aveva ricevuto nulla.
mdls -name kMDItemContentType ~/Downloads/fireai-lab-test/q3-report.html
kMDItemContentType = "public.html"
# listener log: empty2. Forzare l'importatore Spotlight
Per escludere tempistiche, abbiamo gestito manualmente l'importatore. Ha utilizzato l’importatore RichText di Apple, ha estratto 37 attributi e non ha effettuato alcuna richiesta.
mdimport -t -d1 ~/Downloads/fireai-lab-test/q3-report.html
Imported '…/q3-report.html' of type 'public.html' with plugIn /System/Library/Spotlight/RichText.mdimporter.
37 attributes returned
# listener log: still empty3. L'icona del Finder: miniatura Visualizzazione rapida
qlmanage -t -s 256 -o /tmp ~/Downloads/fireai-lab-test/q3-report.html ~/Downloads/fireai-lab-test/badge.svg
* …/q3-report.html produced one thumbnail
Done producing thumbnails
# listener log: still empty4. Premendo Spazio: l'anteprima Quick Look
qlmanage -p apre lo stesso pannello di anteprima selezionando un file nel Finder e premendo Spazio (qlmanage). Questa volta l'ascoltatore si è illuminato immediatamente, per entrambi i file:
qlmanage -p ~/Downloads/fireai-lab-test/q3-report.html
13:40:22.408 GET /html-img.png UA=Mozilla/5.0 (Macintosh; …) AppleWebKit/605.1.15 … Safari/605.1.15
13:40:22.408 GET /html-css.css UA=Mozilla/5.0 (Macintosh; …) AppleWebKit/605.1.15 … Safari/605.1.15
qlmanage -p ~/Downloads/fireai-lab-test/badge.svg
13:40:30.035 GET /svg-image.png UA=Mozilla/5.0 (Macintosh; …) AppleWebKit/605.1.15 … Safari/605.1.15| Cosa ha fatto l'utente | Meccanismo | Richiesta remota? |
|---|---|---|
| Niente (file scaricato) | Importatore Spotlight in mdworker_shared | NO |
| Niente (importazione forzata) | mdimport, importatore RichText | NO |
| Guardò la cartella | Miniatura Quick Look (icona Finder) | NO |
| Selezionato il file, premuto Spazio | Anteprima sguardo rapido (WebKit) | Sì: immagine, foglio di stile, immagine SVG |
Cosa significa?
La versione “zero clic” non è quella che abbiamo misurato: un file che si trova in Download, viene indicizzato da Spotlight e mostrato come un'icona non richiamata. Ciò è importante, perché una difesa costruita su un modello sbagliato spreca sforzi nel posto sbagliato. Bloccare mdworker dalla rete, ad esempio, non avrebbe cambiato nulla in questo test.
La versione a una chiave è reale. L'anteprima di Quick Look esegue il rendering di HTML e SVG con WebKit e carica le relative risorse remote, quindi una singola pressione di Spazio su un "rapporto" allegato indica al mittente che il file è stato esaminato, quando e da quale indirizzo IP. Questo è un webfaro, lo stesso trucco utilizzato dai pixel di tracciamento delle e-mail e che Protezione della privacy della posta di Apple esiste per smussare in Mail; semplicemente non è coperto quando lo stesso contenuto arriva come file. In termini di aggressore si tratta di ricognizione, non di compromesso: MITRA ATT&CK T1598 cataloga questo tipo di raccolta di informazioni prima di un vero attacco.
Limiti di questo test
- Una versione di macOS (26.7) e un'esecuzione per caso. Il comportamento potrebbe differire in altre versioni; eseguilo nuovamente sul tuo, i file sopra sono tutto ciò di cui hai bisogno.
- Abbiamo utilizzato un indirizzo di loopback. Un URL pubblico si comporta allo stesso modo per WebKit, ma non lo abbiamo misurato qui.
- Abbiamo testato HTML e SVG. Altri tipi con riferimenti remoti (ad esempio
.webarchive, documenti Office con immagini collegate o estensioni Quick Look di terze parti) non sono stati testati e potrebbero comportarsi diversamente in entrambe le direzioni. qlmanage -pè il front-end di debug di Apple per l'anteprima; L'anteprima della barra spaziatrice del Finder utilizza lo stesso framework, ma non abbiamo strumentato il Finder stesso.
Cosa fare
- Tratta Quick Look su un file HTML o SVG non attendibile come se lo aprisse. Se vuoi esaminarne uno in sicurezza, leggilo come testo:
cat file.htmlo aprilo in un editor di testo semplice. - Controlla il tipo di file prima di visualizzarne l'anteprima:
mdls -name kMDItemContentType fileti dice come verrà visualizzato Quick Look, qualunque cosa suggerisca la sua icona. - Osserva quale processo crea la connessione, non solo se si verifica. Qui era l’anteprima di WebKit ad agire per conto di Apple, motivo per cui le regole che si fidano o diffidano solo delle “app installate” non riescono a farlo.
La lezione più ampia riguarda il metodo. La versione drammatica di questa storia è stata scritta con sicurezza e sarebbe stato facile da pubblicare. Venti minuti con un ascoltatore e quattro comandi hanno mostrato dove si sbagliava e dove si nasconde il rischio reale, minore.
Il ruolo di FireAI e di HisnLabs
The fetch in this test came from a WebKit preview running on Apple’s behalf, not from an app you installed, which is exactly the kind of connection a per-app firewall exists to show you: FireAI lists the process, the destination and the country, and lets you deny it.
FireAI è il prodotto di HisnLabs: un firewall con IA che funziona direttamente sul Mac. Mostra in linguaggio chiaro ogni connessione che le tue app effettuano e ti lascia decidere cosa esce dal tuo Mac — la sua IA lavora in locale, quindi il tuo traffico non viene mai inviato a noi né a nessun altro. Il team di ricerca sulla sicurezza di HisnLabs è quello che mantiene affidabili queste decisioni: cataloga quali domini sono semplice telemetria e quali un servizio reale, traccia il Paese e la rete dietro una connessione e addestra il modello locale (la funzione Autopilot) su schemi di traffico reali, senza che nulla lasci il tuo Mac.
Puoi leggere le scelte tecniche che ci stanno dietro, oppure provare FireAI per 17 giorni, su FireAI, di HisnLabs.
