La extensión que se salió del navegador
Zscaler encontró una puerta trasera llamada Edgecution que se ejecuta dentro de una ventana de Microsoft Edge que la víctima nunca abrió, y luego usa Native Messaging — el canal legítimo que una extensión usa para hablar con una aplicación de escritorio — para ejecutar comandos en el host. La pregunta que vale la pena hacerse es qué alcanza ese puente hacia el host cuando el navegador vive en una VM desechable.
Se supone que una extensión de navegador está atrapada dentro del navegador. Una puerta trasera llamada Edgecution es una demostración funcional de que «se supone» estaba haciendo gran parte del trabajo. Se ejecuta dentro de una ventana de Microsoft Edge que la víctima nunca abrió y no puede ver, y usa una función incorporada en todos los navegadores Chromium para ejecutar comandos en la máquina que hay debajo.
Imagina a la persona recién contratada en contabilidad, con tres semanas en el puesto, todavía diciendo que sí a todo. Llega un mensaje en Microsoft Teams de alguien cuyo nombre aparece en soporte de TI. Hay una actualización del filtro de spam para Outlook; el equipo de correo la está desplegando esta semana; aquí está la página. Ella la abre. Está rotulada como una «Consola de gestión de actualizaciones de Outlook», parece bastante interna, y le da un breve comando que ejecutar para terminar la instalación. Lo ejecuta. No parece pasar nada. Cierra la pestaña y vuelve al trabajo.
A finales de junio, el equipo ThreatLabz de Zscaler documentó lo que ocurre después de que ella cierra esa pestaña. La familia de malware es Edgecution, y BleepingComputer lo cubrió la misma semana. El malware es silencioso por diseño; la parte que merece una mirada más de cerca es dónde el atacante eligió esconderlo.
Un mensaje de TI que no lo era.
El primer movimiento es ingeniería social a través de Microsoft Teams, con el atacante haciéndose pasar por el propio personal de TI de la empresa y dirigiendo a la empleada hacia esa página falsa de actualización de Outlook. La página ofrece tres maneras de «terminar la instalación», y según el desglose de Zscaler todas entregan lo mismo: un script de AutoHotKey ofuscado empaquetado con un ejecutable real de AutoHotKey, un script batch de Windows copiado al portapapeles, o un script de PowerShell copiado al portapapeles. Dos de esos tres son la maniobra de pegar desde el portapapeles que quizá conozcas como ClickFix — la página escribe el comando por ti, y lo único que le queda hacer al humano es pegar y pulsar Enter.
Ese pegado lo es todo. La carga útil llega dentro de un ZIP cifrado con
sus bytes mágicos PK eliminados, de modo que el archivo no parezca un
ZIP para nada que lo escanee. Una vez que el script se ejecuta, el host
queda comprometido — no por un exploit ingenioso, sino porque se convenció
a una persona de ejecutar un programa en su propia computadora. Todo lo
que viene después es el atacante decidiendo cómo quedarse.
El navegador como puerta trasera.
La forma en que sobrevive a un reinicio es la parte en la que vale la pena
detenerse. La mayoría del malware que quiere persistir deja caer un
ejecutable, escribe una clave de arranque en el registro, o instala un
servicio — todas cosas que las herramientas de seguridad están diseñadas
para vigilar. Edgecution hace algo más silencioso. El script de
instalación programa una tarea de Windows que lanza Microsoft Edge con un
puñado de banderas de línea de comandos, incluyendo --load-extension
para cargar de forma lateral la propia extensión del atacante y
--headless=new para que la ventana del navegador nunca se dibuje en
pantalla. Ahora hay un proceso de Microsoft Edge ejecutándose en la
máquina — un programa firmado, de confianza y corriente — que el usuario
no puede ver y que no inició.
Dentro de ese navegador invisible, la extensión hace dos cosas. Emite señales hacia un servidor de mando y control (la dirección que los atacantes usan para enviar instrucciones) a través de un WebSocket alojado en Amazon CloudFront, de modo que el tráfico parece un navegador normal hablando con una red de contenidos normal. Y retransmite los comandos que recibe hacia el host usando Native Messaging.
Native Messaging es una función real y documentada de Chromium,
funcionando como fue diseñada. Es el canal que permite a una extensión de
navegador hablar con un programa de escritorio instalado en la misma
máquina — el mecanismo que una extensión usa para entregarle trabajo a su
aplicación de escritorio asociada, por ejemplo. Una extensión llama a
chrome.runtime.sendNativeMessage, y el navegador lanza un pequeño
programa «native host» nombrado en un archivo de manifiesto y le canaliza
JSON. Edgecution registra su propio native host: un native_host.bat
que arranca una puerta trasera en Python. A partir de ahí la puerta
trasera puede ejecutar comandos de shell, ejecutar PowerShell, ejecutar
Python arbitrario, leer y escribir archivos, listar procesos en ejecución,
y reportar información del sistema de vuelta por la cadena — todo lo que
necesitas para ser el corredor de acceso inicial que le entrega un punto
de apoyo limpio a un grupo de ransomware. Zscaler vincula el modus
operandi de este operador con la operación de ransomware Payouts King.
Fíjate en lo que no está en esa imagen: ningún servicio nuevo, y ningún
.exe dejado caer reposando en el disco esperando a ser marcado. Lo que
ejecuta los comandos del atacante es python.exe lanzado por un archivo
batch lanzado por Microsoft Edge — y el tráfico que transporta esos
comandos es un navegador hablando con un CDN. Se mezcla con el entorno
porque casi cada parte es algo legítimo realizando una acción de
apariencia legítima.
Los titulares llamaron a esto un escape del sandbox. La versión precisa: el host ya estaba comprometido en el momento en que la empleada ejecutó el script. Native Messaging no es un agujero que el atacante reventó; es una puerta que el navegador trae de fábrica, y el atacante la cruzó. La distinción señala dónde debe vivir el verdadero arreglo. No se sale uno a base de parches de una función que funciona como fue diseñada. Cambias hacia dónde da esa puerta.
Lo que alcanza «el puente hacia el host» en Bromure.
Bromure es un navegador que pone la seguridad primero. Cada pestaña se ejecuta dentro de una VM Linux desechable (máquina virtual — su propia computadora aparte) en tu Mac, y la VM se borra cuando cierras la ventana. Esa única decisión arquitectónica cambia lo que el resto de la historia de Edgecution significa en tu máquina.
Empieza por Native Messaging, el meollo de todo el ataque. En un navegador normal, el «native host» con el que una extensión habla es un programa en tu sistema operativo — el mismo sistema operativo que guarda tus archivos, tu llavero, y tus recursos de red compartidos. El puente es abierto: cualquier extensión puede registrar un native host, y ese host puede ser cualquier cosa. Todo el truco de Edgecution depende de que el navegador y tus archivos estén en la misma máquina.
En Bromure, el navegador no está en esa máquina. Se ejecuta dentro de la VM desechable, así que el sistema operativo que está debajo del navegador es el invitado Linux desechable, no macOS. Un native host malicioso registrado por algo dentro de la VM sería un programa dentro de la VM — hablando con una computadora que no contiene nada de tu vida y que deja de existir cuando cierras la ventana. El estrecho conjunto de puentes que sí llegan hasta macOS son de origen propio y están integrados en la imagen de disco de solo lectura: el puente de credenciales, por ejemplo, rellena passkeys y contraseñas desde el Keychain de tu Mac. No hay forma de que una sesión en ejecución añada uno nuevo, porque — y esta es la segunda mitad de la respuesta — no puedes instalar extensiones en absoluto.
El bloqueo no es un ajuste del que una página de phishing pueda
convencerte para saltártelo. En la política del navegador de Bromure,
chrome://extensions y la Web Store están en una lista de bloqueo rígida,
y no hay developer mode, ni «load unpacked», ni ningún interruptor
avanzado para esquivarlo. Tampoco hay forma de hacer lo que Edgecution
hace del lado del host — lanzar un segundo Chromium con --load-extension
apuntando a tu perfil real — porque tu perfil real no es una carpeta en tu
Mac a la que un proceso descarriado pueda apuntar un navegador. Está
sellado dentro de la VM.
Hay un hilo más que vale la pena tirar, porque es la victoria más barata de toda la historia. El señuelo llegó por Microsoft Teams. Mucha gente ahora usa Teams, Outlook y Slack como aplicaciones web. Si ese hábito vive dentro de una pestaña desechable de Bromure, el mensaje de suplantación, el enlace y la página falsa de «actualización de Outlook» aterrizan todos en una sesión aislada desde el primer segundo — y la cadena que acabamos de recorrer nunca llega al paso tres, porque la página que quiere que ejecutes un script está sentada en una VM que no puede alcanzar tu shell. El ataque que necesita el host nunca se encuentra con el host.
Lo que esto no resuelve.
El aislamiento no es un hechizo, y vale la pena exponer sus límites con claridad.
Un comando que ejecutas tú mismo
El punto de entrada aquí es un humano ejecutando un script — un comando batch o de PowerShell copiado al portapapeles, o un ejecutable de AutoHotKey. Si pegas un comando en tu propia shell y pulsas Enter, no hay ningún aislamiento de navegador en ese bucle. El uso compartido del portapapeles entre la VM y tu Mac está activado por defecto porque copiar y pegar es parte de la navegación normal; puedes cambiar un perfil a aislamiento total, y la capa de phishing está ahí para señalar la página antes de que actúes. Pero la regla perdurable es más antigua que todo esto: nunca ejecutes un comando que te haya entregado una página web.
Binarios de Windows, una técnica portable
Edgecution apunta a Microsoft Edge en Windows, y esos archivos exactos no se ejecutarán en un Mac. Eso es un consuelo pobre, no una defensa. Native Messaging es también una función de Chromium en macOS, y esa misma semana trajo una campaña en macOS que convenció a los usuarios de pegar un comando de Terminal para soltar el infostealer Atomic. La técnica es portable; solo los binarios son específicos del sistema operativo.
Lo que Bromure cambia es más acotado y, creemos, más útil que una promesa de que nada malo podrá nunca alcanzarte. Elimina las condiciones que hicieron a Edgecution silencioso y duradero. El navegador ya no es un proceso permanente y de confianza sentado junto a tus archivos. Native Messaging ya no es un puente abierto que cualquier extensión pueda registrar — las extensiones no se pueden añadir en absoluto, y el propio sistema operativo del navegador es desechable. Y la persistencia, lo que toda esta arquitectura fue construida para lograr, no tiene nada en lo que persistir: cierra la ventana y la máquina en la que vivía la puerta trasera desaparece.
El navegador peligroso es el que no puedes ver.
Durante veinte años, los consejos de seguridad sobre navegadores han girado en torno a la ventana que tienes delante — revisa la barra de direcciones, busca el candado, no hagas clic en enlaces extraños. Edgecution es un pequeño recordatorio de que el navegador que hace el daño es cada vez más el que nunca ves: un proceso headless, iniciado por una tarea programada, hablando con un CDN, ejecutando una extensión que no instalaste. No puedes inspeccionar la barra de direcciones de una ventana que nunca se dibujó.
La pregunta ya no es si la ventana que tienes delante es segura. Es qué puede alcanzar cualquier navegador en esta máquina, si se vuelve en tu contra. En una computadora corriente, la respuesta es tus archivos, a través de un puente que viene de fábrica. En una máquina que ejecuta Bromure, la respuesta es: una caja Linux desechable que olvida todo en el momento en que terminas con ella. Esa es la diferencia que vale la pena tener. Instálalo, conviértelo en tu navegador por defecto para la mitad de tu navegación en la que no confías, y deja que las ventanas ocultas den a algo que de todos modos ibas a tirar.