# Um arquivo baixado liga para casa? Testamos o Spotlight e o Quick Look no macOS 26

> Uma alegação que circula por aí diz que a indexação do macOS faz arquivos não abertos buscarem conteúdo remoto. Testamos: a indexação e as miniaturas ficaram em silêncio, mas apertar Espaço para pré-visualizar não.

HisnLabs Security & Research Team · Published 2026-09-25
Canonical: https://hisnlabs.com/pt-br/blog/quick-look-preview-remote-content-macos

Uma versão dessa história circula em relatos de segurança, alguns já gerados por assistentes de IA: o daemon de indexação em segundo plano do macOS, o `mdworker`, supostamente busca as imagens remotas dentro de qualquer arquivo HTML que você baixa, então um arquivo que você nunca abre ainda pode informar seu endereço IP a quem o enviou. É uma boa história. Também é o tipo de alegação que deveria ser testada antes de ser repetida, então nós a testamos.

> **Note:** Versão resumida, medida no macOS 26.7: baixar um arquivo e deixar o Spotlight indexá-lo não causou nenhuma requisição de rede, e a miniatura do Quick Look também não. Apertar Espaço para pré-visualizar o arquivo causou: sua imagem remota, folha de estilo e imagem embutida em SVG foram todas buscadas.

## Três coisas diferentes acontecem com um arquivo novo

A alegação confunde três mecanismos separados. Quando um arquivo chega ao disco, o servidor de metadados do Spotlight o entrega a um plug-in importador, rodando dentro de um processo `mdworker_shared`, que extrai texto e atributos para que o arquivo se torne pesquisável ([mdimport](https://keith.github.io/xcode-man-pages/mdimport.1.html) e [mdls](https://keith.github.io/xcode-man-pages/mdls.1.html) são as janelas de linha de comando para isso). 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 você seleciona o arquivo e aperta Espaço é que o [Quick Look](https://developer.apple.com/documentation/quicklook) renderiza uma pré-visualização completa. Cada um desses pode se comportar de forma diferente, então cada um precisa do seu próprio teste.

## O teste

Rodamos um pequeno listener HTTP no endereço loopback que registra toda requisição com seu User-Agent, depois criamos dois arquivos em `~/Downloads` apontando para ele: uma página HTML com uma imagem de um pixel e uma folha de estilo externa, e um SVG com uma imagem externa embutida. O loopback mantém o experimento autocontido; um servidor de rastreamento remoto receberia as mesmas requisições, além do seu endereço IP público.

*q3-report.html (a isca)*

```html
<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>
```

*badge.svg*

```xml
<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. Apenas baixando: a indexação do Spotlight

Esperamos 40 segundos após criar os arquivos, depois confirmamos que o Spotlight os havia indexado. O listener não tinha recebido nada.

```console
$ mdls -name kMDItemContentType ~/Downloads/fireai-lab-test/q3-report.html
kMDItemContentType = "public.html"
# listener log: empty
```

### 2. Forçando o importador do Spotlight

Para descartar uma questão de tempo, rodamos o importador manualmente. Ele usou o importador RichText da Apple, extraiu 37 atributos, e não fez nenhuma requisição.

```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: a 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. Apertando Espaço: a pré-visualização do Quick Look

`qlmanage -p` abre o mesmo painel de pré-visualização que selecionar um arquivo no Finder e apertar Espaço ([qlmanage](https://keith.github.io/xcode-man-pages/qlmanage.1.html)). Dessa vez o listener acendeu imediatamente, para os dois arquivos:

*log do listener*

```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 usuário fez | Mecanismo | Requisição remota? |
| --- | --- | --- |
| Nada (arquivo baixado) | Importador do Spotlight no `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 arquivo, apertou Espaço | Pré-visualização do Quick Look (WebKit) | Sim: imagem, folha de estilo, imagem SVG |

*Teste da HisnLabs, macOS 26.7, Apple silicon, 25 de setembro de 2026. Listener em loopback; uma execução por caso.*

## O que isso significa

A versão "sem clique" não foi o que medimos: um arquivo que fica em Downloads, é indexado pelo Spotlight e mostrado como um ícone não fez nenhum contato externo. Isso importa, porque uma defesa construída sobre um modelo errado desperdiça esforço no lugar errado. Bloquear o `mdworker` de acessar a rede, por exemplo, não teria mudado nada neste teste.

A versão de uma única tecla é real. A pré-visualização do Quick Look renderiza HTML e SVG com o WebKit e carrega seus recursos remotos, então um único toque em Espaço sobre um "relatório" anexado informa a quem o enviou que o arquivo foi visto, quando, e a partir de qual endereço IP. Isso é um [web beacon](https://en.wikipedia.org/wiki/Web_beacon), o mesmo truque usado por pixels de rastreamento de e-mail, e que a [Proteção de Privacidade do Mail](https://support.apple.com/guide/mail/use-mail-privacy-protection-mlhl03be2866/mac) da Apple existe para neutralizar no Mail; ela simplesmente não cobre quando o mesmo conteúdo chega como um arquivo. Em termos de atacante, isso é reconhecimento, não comprometimento: a [MITRE ATT&CK T1598](https://attack.mitre.org/techniques/T1598/) cataloga esse tipo de coleta 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 em outras versões; rode de novo na sua, os arquivos acima são tudo que você precisa.
- Usamos um endereço loopback. Uma URL pública se comporta da mesma forma para o WebKit, mas não medimos isso aqui.
- Testamos HTML e SVG. Outros tipos com referências remotas (por exemplo, `.webarchive`, documentos do Office com imagens vinculadas, ou extensões de terceiros do Quick Look) não foram testados e podem se comportar de forma diferente, em qualquer direção.
- `qlmanage -p` é a interface de depuração da própria Apple para a pré-visualização; a pré-visualização por barra de espaço do Finder usa o mesmo framework, mas não instrumentamos o próprio Finder.

## O que fazer

1. Trate o Quick Look em um arquivo HTML ou SVG não confiável como se estivesse abrindo-o. Se quiser inspecionar um com segurança, leia-o como texto: `cat file.html`, ou abra-o em um editor de texto simples.
2. Verifique o tipo de um arquivo antes de pré-visualizar: `mdls -name kMDItemContentType file` diz como o Quick Look vai renderizá-lo, seja qual for a sugestão do ícone.
3. Observe qual processo faz a conexão, não apenas se uma acontece. Aqui foi a pré-visualização do WebKit agindo em nome da Apple, que é exatamente o motivo pelo qual regras que só confiam ou desconfiam de "aplicativos que você instalou" deixam isso passar.

A lição mais ampla é sobre método. A versão dramática dessa história foi escrita com confiança e teria sido fácil de publicar. Vinte minutos com um listener e quatro comandos mostraram onde ela estava errada e onde está o risco real, e menor.

## Onde FireAI e HisnLabs entram nessa história

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: um firewall com IA que roda direto no seu Mac. Ele mostra, em linguagem simples, cada conexão que seus aplicativos fazem e deixa você decidir o que sai do seu Mac — a IA roda localmente, então seu tráfego nunca é enviado para nós nem para ninguém. A equipe de pesquisa em segurança da HisnLabs é quem mantém essas decisões confiáveis: cataloga quais domínios são telemetria comum e quais são um serviço de verdade, rastreia o país e a rede por trás de uma conexão e treina o modelo local (o recurso FireAI Pilot) com padrões reais de tráfego, sem que nada disso saia do seu Mac.

Você pode ler as decisões técnicas por trás dele, ou testar o FireAI por 17 dias, em [FireAI, da HisnLabs](https://hisnlabs.com/fireai/pt-br/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)
