# Звонит ли скачанный файл «домой»? Мы протестировали 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)