Una versión de esta historia circula en artículos de seguridad, algunos de ellos ahora generados por asistentes de IA: el demonio de indexación en segundo plano de macOS, mdworker, supuestamente recupera las imágenes remotas dentro de cualquier archivo HTML que descargues, por lo que un archivo que nunca abras aún puede informar tu dirección IP a quien lo envió. Es una buena historia. También es el tipo de afirmación que debe probarse antes de repetirse, por eso la probamos.
A un archivo nuevo le suceden tres cosas diferentes
La afirmación desdibuja tres mecanismos separados. Cuando un archivo llega al disco, el servidor de metadatos de Spotlight lo entrega a un complemento importador, que se ejecuta dentro de un proceso mdworker_shared, que extrae texto y atributos para que el archivo se pueda buscar (mdiimportar y mdls son las ventanas de línea de comandos sobre esto). Por otra parte, cuando Finder necesita un icono, Miniaturas de vista rápida muestra una pequeña miniatura. Y solo cuando selecciona el archivo y presiona la barra espaciadora, Vista rápida muestra una vista previa completa. Cada uno de ellos puede comportarse de manera diferente, por lo que cada uno necesita su propia prueba.
la prueba
Ejecutamos un pequeño detector HTTP en la dirección de loopback que registra cada solicitud con su User-Agent, luego creamos dos archivos en ~/Downloads apuntándolo: una página HTML con una imagen de un píxel y una hoja de estilo externa, y un SVG con una imagen externa incrustada. Loopback mantiene el experimento autónomo; un servidor de seguimiento remoto recibiría las mismas solicitudes, más su dirección IP pública.
<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. Simplemente descargándolo: indexación de Spotlight
Esperamos 40 segundos después de crear los archivos y luego confirmamos que Spotlight los había indexado. El oyente no había recibido nada.
mdls -name kMDItemContentType ~/Downloads/fireai-lab-test/q3-report.html
kMDItemContentType = "public.html"
# listener log: empty2. Forzar el importador de Spotlight
Para descartar el tiempo, ejecutamos el importador a mano. Utilizó el importador RichText de Apple, extrajo 37 atributos y no realizó ninguna solicitud.
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. El icono del Finder: miniatura de Vista rápida
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. Presionando la barra espaciadora: la vista previa de Vista rápida
qlmanage -p abre el mismo panel de vista previa que al seleccionar un archivo en Finder y presionar la barra espaciadora (qlgestionar). Esta vez el oyente se iluminó inmediatamente, para ambos archivos:
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| Lo que hizo el usuario | Mecanismo | ¿Solicitud remota? |
|---|---|---|
| Nada (archivo descargado) | Importador de Spotlight en mdworker_shared | No |
| Nada (importación forzada) | mdimport, importador de texto enriquecido | No |
| Miró la carpeta | Miniatura de Vista rápida (icono del Finder) | No |
| Seleccionó el archivo, presionó Espacio | Vista previa de vista rápida (WebKit) | Sí: imagen, hoja de estilo, imagen SVG |
¿Qué significa esto?
La versión de “clic cero” no es lo que medimos: un archivo que se encuentra en Descargas, es indexado por Spotlight y se muestra como un ícono que no aparece. Eso es importante, porque una defensa construida sobre un modelo equivocado desperdicia esfuerzos en el lugar equivocado. Bloquear a mdworker de la red, por ejemplo, no habría cambiado nada en esta prueba.
La versión de una tecla es real. La vista previa de Quick Look representa HTML y SVG con WebKit y carga sus recursos remotos, por lo que una sola pulsación de la barra espaciadora en un "informe" adjunto le indica al remitente que se miró el archivo, cuándo y desde qué dirección IP. Se trata de un baliza web, el mismo truco que utilizan los píxeles de seguimiento de correo electrónico y que el Protección de privacidad del correo de Apple existe para atenuarlo en Mail; simplemente no está cubierto cuando el mismo contenido llega como archivo. En términos de atacante, se trata de reconocimiento, no de compromiso: INGLETE ATT&CK T1598 cataloga este tipo de recopilación de información antes de un ataque real.
Límites de esta prueba
- Una versión de macOS (26.7) y una ejecución por caso. El comportamiento puede diferir en otras versiones; Vuelva a ejecutarlo en el suyo, los archivos anteriores son todo lo que necesita.
- Usamos una dirección de loopback. Una URL pública se comporta igual para WebKit, pero no la medimos aquí.
- Probamos HTML y SVG. Otros tipos con referencias remotas (por ejemplo
.webarchive, documentos de Office con imágenes vinculadas o extensiones Quick Look de terceros) no se probaron y pueden comportarse de manera diferente en cualquier dirección. qlmanage -pes la interfaz de depuración de Apple para la vista previa; La vista previa de la barra espaciadora del Finder utiliza el mismo marco, pero no instrumentamos el propio Finder.
que hacer
- Considere Quick Look en un archivo HTML o SVG que no sea de confianza como si lo abriera. Si desea inspeccionar uno de forma segura, léalo como texto:
cat file.htmlo ábralo en un editor de texto sin formato. - Verifique el tipo de archivo antes de obtener una vista previa:
mdls -name kMDItemContentType filele indica cómo lo representará Quick Look, independientemente de lo que sugiera su ícono. - Observe qué proceso establece la conexión, no sólo si ocurre una. Aquí estaba la vista previa de WebKit actuando en nombre de Apple, razón por la cual las reglas que solo confían o desconfían de las "aplicaciones que usted instaló" no se cumplen.
La lección más amplia es sobre el método. La versión dramática de esta historia fue escrita con confianza y habría sido fácil de publicar. Veinte minutos con un oyente y cuatro comandos mostraron dónde estaba mal y dónde está el riesgo real y menor.
El papel de FireAI y de 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 es el propio producto de HisnLabs: un cortafuegos con IA integrada para Mac. Muestra, en lenguaje claro, cada conexión que hacen tus aplicaciones y te deja decidir qué sale de tu Mac; su IA funciona en el propio equipo, así que tu tráfico nunca se envía a HisnLabs ni a nadie más. El equipo de investigación en seguridad de HisnLabs es quien mantiene esas decisiones fiables: cataloga qué dominios son simple telemetría frente a un servicio real, sigue el país y la red detrás de una conexión, y entrena el modelo local (la función Autopilot) con tráfico real, sin que nada salga de tu Mac.
Puedes leer las decisiones técnicas detrás de esto, o probar FireAI durante 17 días, en FireAI, de HisnLabs.
