# Звонит ли скачанный файл «домой»? Мы протестировали Spotlight и Quick Look в macOS 26
> Ходит утверждение, что индексация macOS заставляет неоткрытые файлы загружать удалённый контент. Мы это проверили: индексация и миниатюры молчали, а вот предпросмотр по нажатию пробела — нет.
HisnLabs Security & Research Team · Published 2026-09-25
Canonical: https://hisnlabs.com/ru/blog/quick-look-preview-remote-content-macos
Одна из версий этой истории ходит по разборам безопасности, часть из которых теперь генерируется ИИ-ассистентами: фоновый демон индексации macOS, `mdworker`, якобы загружает удалённые изображения внутри любого скачанного HTML-файла, так что даже никогда не открытый файл может сообщить ваш IP-адрес тому, кто его прислал. Это хорошая история. Это также вид утверждения, которое стоит проверить, прежде чем повторять — поэтому мы его проверили.
> **Note:** Коротко, по измерениям на macOS 26.7: скачивание файла и предоставление Spotlight возможности его проиндексировать не вызвало ни одного сетевого запроса, как и миниатюра Quick Look. А вот нажатие пробела для предпросмотра — вызвало: были загружены его удалённое изображение, таблица стилей и изображение, встроенное в SVG.
## С новым файлом происходят три разные вещи
Утверждение смешивает три отдельных механизма. Когда файл появляется на диске, сервер метаданных Spotlight передаёт его плагину-импортёру, запускаемому внутри процесса `mdworker_shared`, который извлекает текст и атрибуты, чтобы файл стал доступен для поиска ([mdimport](https://keith.github.io/xcode-man-pages/mdimport.1.html) и [mdls](https://keith.github.io/xcode-man-pages/mdls.1.html) — это окна командной строки в этот процесс). Отдельно, когда Finder нужна иконка, [Quick Look Thumbnailing](https://developer.apple.com/documentation/quicklookthumbnailing) рендерит небольшую миниатюру. И только когда вы выбираете файл и нажимаете пробел, [Quick Look](https://developer.apple.com/documentation/quicklook) рендерит полный предпросмотр. Каждый из них может вести себя по-разному, поэтому каждый требует отдельного теста.
## Тест
Мы запустили крошечный HTTP-слушатель на loopback-адресе, который логирует каждый запрос вместе с его User-Agent, а затем создали в `~/Downloads` два файла, указывающих на него: HTML-страницу с изображением размером в один пиксель и внешней таблицей стилей, и SVG со встроенным внешним изображением. Loopback делает эксперимент самодостаточным; реальный сервер трекинга получил бы те же запросы плюс ваш публичный IP-адрес.
*q3-report.html (приманка)*
```html
Q3 Financial Report
Financial Summary
```
*badge.svg*
```xml
```
### 1. Просто скачать: индексация Spotlight
Мы подождали 40 секунд после создания файлов, затем убедились, что Spotlight их проиндексировал. Слушатель не получил ничего.
```console
$ mdls -name kMDItemContentType ~/Downloads/fireai-lab-test/q3-report.html
kMDItemContentType = "public.html"
# listener log: empty
```
### 2. Принудительный запуск импортёра Spotlight
Чтобы исключить фактор времени, мы запустили импортёр вручную. Он использовал импортёр RichText от Apple, извлёк 37 атрибутов и не сделал ни одного запроса.
```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. Иконка в Finder: миниатюра 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. Нажатие пробела: предпросмотр Quick Look
`qlmanage -p` открывает ту же панель предпросмотра, что и выбор файла в Finder с нажатием пробела ([qlmanage](https://keith.github.io/xcode-man-pages/qlmanage.1.html)). На этот раз слушатель сразу «загорелся» для обоих файлов:
*лог слушателя*
```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
```
| Что сделал пользователь | Механизм | Удалённый запрос? |
| --- | --- | --- |
| Ничего (файл скачан) | Импортёр Spotlight в `mdworker_shared` | Нет |
| Ничего (принудительный импорт) | `mdimport`, импортёр RichText | Нет |
| Посмотрел на папку | Миниатюра Quick Look (иконка в Finder) | Нет |
| Выбрал файл, нажал пробел | Предпросмотр Quick Look (WebKit) | Да: изображение, таблица стилей, SVG-изображение |
*Тест HisnLabs, macOS 26.7, Apple silicon, 25 сентября 2026 года. Слушатель на loopback; один прогон на случай.*
## Что это значит
Версия «без клика» — это не то, что мы измерили: файл, который просто лежит в Downloads, проиндексирован Spotlight и показан как иконка, никуда не обратился. Это важно, потому что защита, построенная на неверной модели, тратит усилия не там, где нужно. Например, блокировка `mdworker` от сети ничего бы не изменила в этом тесте.
Версия «одна клавиша» реальна. Предпросмотр Quick Look рендерит HTML и SVG через WebKit и загружает их удалённые ресурсы, так что одно нажатие пробела на прикреплённом «отчёте» сообщает отправителю, что файл посмотрели, когда и с какого IP-адреса. Это [веб-маяк](https://en.wikipedia.org/wiki/Web_beacon) — тот же приём, что используют трекинг-пиксели в почте и который призвана притупить функция Apple [Mail Privacy Protection](https://support.apple.com/guide/mail/use-mail-privacy-protection-mlhl03be2866/mac) в Mail; просто она не покрывает случай, когда тот же контент приходит в виде файла. С точки зрения атакующего это разведка, а не компрометация: [MITRE ATT&CK T1598](https://attack.mitre.org/techniques/T1598/) каталогизирует именно такой сбор информации перед реальной атакой.
## Ограничения этого теста
- Одна версия macOS (26.7) и один прогон на случай. Поведение может отличаться на других версиях; повторите тест на своей — файлов выше для этого достаточно.
- Мы использовали loopback-адрес. Публичный URL ведёт себя для WebKit так же, но мы это здесь не измеряли.
- Мы тестировали HTML и SVG. Другие типы с удалёнными ссылками (например, `.webarchive`, документы Office со связанными изображениями или сторонние расширения Quick Look) не тестировались и могут вести себя иначе в любую сторону.
- `qlmanage -p` — это отладочный интерфейс Apple для предпросмотра; предпросмотр по пробелу в Finder использует тот же фреймворк, но сам Finder мы отдельно не инструментировали.
## Что делать
1. Относитесь к открытию Quick Look для недоверенного HTML- или SVG-файла как к его открытию. Если хотите безопасно изучить файл, прочитайте его как текст: `cat file.html`, или откройте в обычном текстовом редакторе.
2. Проверьте тип файла перед предпросмотром: `mdls -name kMDItemContentType file` покажет, чем именно Quick Look его отрендерит, независимо от того, что подсказывает иконка.
3. Следите за тем, какой процесс устанавливает соединение, а не только за тем, произошло ли оно. В нашем случае это был предпросмотр WebKit, действующий от имени Apple — именно поэтому правила, доверяющие или не доверяющие только «установленным вами приложениям», это пропускают.
Более широкий урок касается метода. Драматичная версия этой истории была написана уверенно, и её было бы легко опубликовать. Двадцать минут со слушателем и четыре команды показали, где она была неверна и где на самом деле находится реальный, меньший риск.
## Какое место здесь занимают FireAI и 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 — это собственный продукт HisnLabs: ИИ-файрвол, работающий прямо на вашем Mac. Он показывает простым языком каждое соединение, которое устанавливают ваши приложения, и позволяет вам решать, что покидает ваш Mac, — его ИИ работает локально, поэтому ваш трафик никогда не отправляется ни нам, ни кому-либо ещё. Команда исследователей безопасности HisnLabs — это те, кто поддерживает точность этих решений: они каталогизируют, какие домены являются обычной телеметрией, а какие — реальным сервисом, отслеживают страну и сеть, стоящие за соединением, и обучают локальную модель (функцию FireAI Pilot) на реальных шаблонах трафика — и ничего из этого не покидает ваш Mac.
Вы можете прочитать о технических решениях, лежащих в его основе, или попробовать FireAI в течение 17 дней на странице [FireAI от HisnLabs](https://hisnlabs.com/fireai/ru/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)