# Um Ficheiro Transferido Liga para Casa? Testámos o Spotlight e o Quick Look no macOS 26
> Circula uma alegação de que a indexação do macOS faz com que ficheiros nunca abertos vão buscar conteúdo remoto. Testámo-la: a indexação e as miniaturas mantiveram-se silenciosas, mas carregar em Espaço para pré-visualizar não.
HisnLabs Security & Research Team · Published 2026-09-25
Canonical: https://hisnlabs.com/pt/blog/quick-look-preview-remote-content-macos
Uma versão desta história circula em relatos de segurança, alguns deles já gerados por assistentes de IA: o daemon de indexação em segundo plano do macOS, o `mdworker`, alegadamente vai buscar as imagens remotas dentro de qualquer ficheiro HTML que transfira, pelo que um ficheiro que nunca abre pode, ainda assim, reportar o seu endereço IP a quem quer que o tenha enviado. É uma boa história. É também o tipo de alegação que deveria ser testada antes de ser repetida, por isso testámo-la.
> **Note:** Versão curta, medida no macOS 26.7: transferir um ficheiro e deixar o Spotlight indexá-lo não causou nenhum pedido de rede, e a miniatura do Quick Look também não. Carregar em Espaço para pré-visualizar o ficheiro causou: a sua imagem remota, folha de estilos e imagem incorporada em SVG foram todas obtidas.
## Três coisas diferentes acontecem a um novo ficheiro
A alegação confunde três mecanismos separados. Quando um ficheiro chega ao disco, o servidor de metadados do Spotlight entrega-o a um plugin importador, corrido dentro de um processo `mdworker_shared`, que extrai texto e atributos para que o ficheiro se torne pesquisável (o [mdimport](https://keith.github.io/xcode-man-pages/mdimport.1.html) e o [mdls](https://keith.github.io/xcode-man-pages/mdls.1.html) são as janelas de linha de comandos sobre isto). Separadamente, quando o Finder precisa de um ícone, o [Quick Look Thumbnailing](https://developer.apple.com/documentation/quicklookthumbnailing) renderiza uma pequena miniatura. E só quando seleciona o ficheiro e carrega em Espaço é que o [Quick Look](https://developer.apple.com/documentation/quicklook) renderiza uma pré-visualização completa. Cada um destes pode comportar-se de forma diferente, por isso cada um precisa do seu próprio teste.
## O teste
Corremos um pequeno recetor HTTP no endereço de loopback que regista cada pedido com o seu User-Agent, e depois criámos dois ficheiros em `~/Downloads` a apontar para ele: uma página HTML com uma imagem de um pixel e uma folha de estilos externa, e um SVG com uma imagem externa incorporada. O loopback mantém a experiência autocontida; um servidor de rastreio remoto receberia os mesmos pedidos, mais o seu endereço IP público.
*q3-report.html (o isco)*
```html
Q3 Financial Report
Financial Summary
```
*badge.svg*
```xml
```
### 1. Apenas transferi-lo: a indexação do Spotlight
Esperámos 40 segundos depois de criar os ficheiros, e depois confirmámos que o Spotlight os tinha indexado. O recetor não tinha recebido nada.
```console
$ mdls -name kMDItemContentType ~/Downloads/fireai-lab-test/q3-report.html
kMDItemContentType = "public.html"
# listener log: empty
```
### 2. A forçar o importador do Spotlight
Para excluir uma questão de tempo, corremos o importador à mão. Usou o importador RichText da Apple, extraiu 37 atributos, e não fez nenhum pedido.
```console
$ 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 empty
```
### 3. O ícone do Finder: miniatura do Quick Look
```console
$ 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 empty
```
### 4. A carregar em Espaço: a pré-visualização do Quick Look
`qlmanage -p` abre o mesmo painel de pré-visualização que selecionar um ficheiro no Finder e carregar em Espaço ([qlmanage](https://keith.github.io/xcode-man-pages/qlmanage.1.html)). Desta vez o recetor acendeu-se imediatamente, para ambos os ficheiros:
*registo do recetor*
```console
$ 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
```
| O que o utilizador fez | Mecanismo | Pedido remoto? |
| --- | --- | --- |
| Nada (ficheiro transferido) | Importador do Spotlight em `mdworker_shared` | Não |
| Nada (importação forçada) | `mdimport`, importador RichText | Não |
| Olhou para a pasta | Miniatura do Quick Look (ícone do Finder) | Não |
| Selecionou o ficheiro, carregou em Espaço | Pré-visualização do Quick Look (WebKit) | Sim: imagem, folha de estilos, imagem SVG |
*Teste da HisnLabs, macOS 26.7, silício da Apple, 25 de setembro de 2026. Recetor em loopback; uma execução por caso.*
## O que isto significa
A versão de "clique zero" não é o que medimos: um ficheiro que fica em Downloads, é indexado pelo Spotlight e mostrado como ícone, não fez nenhum contacto. Isso importa, porque uma defesa construída sobre um modelo errado desperdiça esforço no sítio errado. Bloquear o `mdworker` da rede, por exemplo, não teria mudado nada neste teste.
A versão de "uma tecla" é real. A pré-visualização do Quick Look renderiza HTML e SVG com o WebKit e carrega os seus recursos remotos, pelo que um único toque em Espaço sobre um "relatório" anexado diz a quem o enviou que o ficheiro foi visto, quando, e a partir de que endereço IP. Isso é um [pixel de rastreio (web beacon)](https://en.wikipedia.org/wiki/Web_beacon), o mesmo truque que os pixels de rastreio de e-mail usam e que a [Mail Privacy Protection](https://support.apple.com/guide/mail/use-mail-privacy-protection-mlhl03be2866/mac) da Apple existe para atenuar no Mail; simplesmente não está coberto quando o mesmo conteúdo chega como ficheiro. Em termos de atacante, é reconhecimento, não comprometimento: a [T1598 do MITRE ATT&CK](https://attack.mitre.org/techniques/T1598/) cataloga este tipo de recolha de informação antes de um ataque real.
## Limites deste teste
- Uma versão do macOS (26.7) e uma execução por caso. O comportamento pode diferir noutras versões; volte a correr o teste na sua, os ficheiros acima são tudo o que precisa.
- Usámos um endereço de loopback. Um URL público comporta-se da mesma forma para o WebKit, mas não o medimos aqui.
- Testámos HTML e SVG. Outros tipos com referências remotas (por exemplo, `.webarchive`, documentos do Office com imagens ligadas, ou extensões de terceiros do Quick Look) não foram testados e podem comportar-se de forma diferente em qualquer uma das direções.
- `qlmanage -p` é a interface de depuração da Apple para a pré-visualização; a pré-visualização do Finder com a tecla Espaço usa a mesma estrutura, mas não instrumentámos o próprio Finder.
## O que fazer
1. Trate o Quick Look sobre um ficheiro HTML ou SVG não fiável como se o estivesse a abrir. Se quiser inspecionar um em segurança, leia-o como texto: `cat ficheiro.html`, ou abra-o num editor de texto simples.
2. Verifique o tipo de um ficheiro antes de o pré-visualizar: `mdls -name kMDItemContentType ficheiro` diz-lhe como o Quick Look o vai renderizar, seja qual for o ícone que sugere.
3. Vigie qual o processo que faz a ligação, não apenas se uma acontece. Aqui foi a pré-visualização do WebKit a agir em nome da Apple, razão pela qual regras que só confiam ou desconfiam de "aplicações que instalou" não a apanham.
A lição mais ampla é sobre método. A versão dramática desta história estava escrita com confiança e teria sido fácil de publicar. Vinte minutos com um recetor e quatro comandos mostraram onde estava errada e onde está o risco real, e mais pequeno.
## O papel do FireAI e da 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.
O FireAI é o produto da HisnLabs: uma firewall com IA que corre diretamente no seu Mac. Mostra, em linguagem clara, cada ligação que as suas aplicações fazem e deixa-o decidir o que sai do seu Mac — a IA funciona localmente, pelo que o seu tráfego nunca é enviado para nós nem para mais ninguém. A equipa de investigação em segurança da HisnLabs é quem mantém essas decisões fiáveis: cataloga que domínios são simples telemetria e quais são um serviço real, acompanha o país e a rede por detrás de uma ligação e treina o modelo local (a funcionalidade FireAI Pilot) com padrões de tráfego reais, sem que nada disso saia do seu Mac.
Pode ler as decisões técnicas por detrás dele, ou experimentar o FireAI durante 17 dias, em [FireAI, da HisnLabs](https://hisnlabs.com/fireai/pt/download).
## Sources
- [qlmanage(1) man page](https://keith.github.io/xcode-man-pages/qlmanage.1.html)
- [mdimport(1) man page](https://keith.github.io/xcode-man-pages/mdimport.1.html)
- [mdls(1) man page](https://keith.github.io/xcode-man-pages/mdls.1.html)
- [Apple Developer: Quick Look](https://developer.apple.com/documentation/quicklook)
- [Apple Developer: Quick Look Thumbnailing](https://developer.apple.com/documentation/quicklookthumbnailing)
- [Apple: Use Mail Privacy Protection on Mac](https://support.apple.com/guide/mail/use-mail-privacy-protection-mlhl03be2866/mac)
- [MITRE ATT&CK T1598: Phishing for Information](https://attack.mitre.org/techniques/T1598/)
- [Wikipedia: Web beacon](https://en.wikipedia.org/wiki/Web_beacon)