Un SVG manipulado enviado a la búsqueda de imágenes de Bing ejecutó comandos como NT AUTHORITYSYSTEM en los servidores de producción de Microsoft, así como como root en las máquinas Linux del mismo clúster. Las pruebas realizadas por XBOW confirmaron el problema en múltiples hosts y rangos de red, indicando que la falla residía en la capa de procesamiento de imágenes de Bing y no en una máquina específica.
Microsoft emitió dos avisos críticos, CVE-2026-32194 y CVE-2026-32191, ambos con una puntuación CVSS de 9.8. XBOW, una startup de seguridad ofensiva autónoma, descubrió ambas vulnerabilidades y las reportó de forma privada. Los usuarios de Bing no tienen que aplicar parches; Microsoft corrigió los fallos en el servidor antes de los avisos de marzo, y los registros indican que 'no se requiere acción del cliente'.
Ninguno de los avisos registraba explotación o divulgación pública cuando se publicaron el 19 de marzo. XBOW publicó los detalles de explotación el 23 de julio, después de retenerlos a solicitud de Microsoft hasta que la corrección estuviera lista.
Lo que perdura más allá de la corrección es la naturaleza del error. La aplicación creía que estaba procesando una imagen; el componente auxiliar interpretó parte de esa imagen como un comando. Si tu propia infraestructura envía archivos cargados o URL obtenidas del servidor a ImageMagick, la exposición depende de si el contenido controlado por el atacante puede alcanzar una ruta habilitada para delegados. Al deshabilitar los delegados, reducir los formatos aceptados y mantener el trabajador fuera de la red, el mismo SVG no causa ningún daño.
El mecanismo de explotación
La búsqueda inversa de imágenes de Bing obtiene una URL de imagen del backend, lo que por sí solo constituye un SSRF ciego: no se devuelve nada al cliente. La pista fue el error: algunos trabajadores devolvían un 500 al navegador pero aún así obtenían y analizaban el contenido, lo que apuntaba a que algún componente downstream estaba realizando el análisis.
SVG respondió esa pregunta. Es XML, no píxeles: puede referenciar otras imágenes, y un renderizador que sigue esas referencias las busca. Debajo, los paquetes de conversión delegan formatos que no procesan ellos mismos a un delegado, un programa externo invocado mediante un shell. En la ruta que alcanzó XBOW, esa capa estaba habilitada, por lo que una referencia de imagen que comenzaba con un carácter de tubería se enviaba al shell en lugar de leerse como un nombre de archivo. El payload era un SVG de un píxel cuya referencia ejecutaba un comando en el trabajador y devolvía el resultado a un recopilador controlado por XBOW.
Dos rutas de ataque
Esto dio lugar a dos rutas hacia la misma capa de conversión y dos CVEs: CVE-2026-32194, clasificado como inyección de comandos bajo CWE-77, es la carga pública 'Buscar por imagen', donde el SVG se envía en base64 como el campo imageBin a /images/kblob. CVE-2026-32191, clasificado como inyección de comandos del sistema operativo bajo CWE-78, es la ruta del rastreador: alojar el SVG en cualquier lugar, pasar su URL a la búsqueda mediante el parámetro imgurl, y bingbot/2.0 lo obtiene y lo introduce en el mismo pipeline. Ninguna de las dos requiere autenticación, cookies, estado de sesión ni clics.
The Hacker News verificó ambos registros CVE el 24 de julio. Ambos aún muestran el estado de Microsoft de marzo de que no hay divulgación pública, lo que ha sido superado por el informe de XBOW, y Microsoft aún los enumera como no explotados.
La prueba tuvo que salir de banda. El frontend podía devolver un error mientras el trabajador ejecutaba de todos modos. Los trabajadores Linux devolvían uid=0 y gid=0. En Windows, systeminfo mostraba Windows Server 2022 Datacenter, whoami /all mostraba SeImpersonatePrivilege y SeDebugPrivilege habilitados, y los listados de directorios situaban la ejecución dentro de los componentes de procesamiento de imágenes multimedia de Bing. La empresa afirma que solo ejecutó comandos benignos de solo lectura y no tocó datos de clientes.
Reducir a esa ruta requirió docenas de pruebas. Los pseudoprotocolos de ImageMagick respondían de manera diferente según el codificador: label: renderizaba texto y xc: producía una imagen de color, mientras que text:, caption: y las lecturas directas de archivos fallaban. Los metacaracteres de shell dentro de label: se renderizaban como texto en lugar de ejecutarse, lo que descartaba ese codificador. La ruta que sí alcanzó un delegado fue la referencia de imagen dentro del propio SVG.
Cómo mitigar el riesgo
Un trabajador de procesamiento de imágenes que maneje archivos no confiables no debería alcanzar un shell, ejecutarse como SYSTEM ni tener salida a internet. El pipeline de Bing hacía las tres cosas.
La propia guía de ImageMagick es explícita: la política predeterminada es abierta y está pensada para entornos aislados o con firewall, no para un sitio web público. Para cualquier cosa que toque imágenes no confiables, deniegue los delegados directamente en policy.xml: <policy domain="delegate" rights="none" pattern="*" />
- Reduzca los formatos que acepta. SVG, MVG y EPS están entre los que contienen referencias e intérpretes.
- Revise delegates.xml y deshabilite cualquier cosa habilitada que no necesite.
- Ejecute la conversión en un entorno aislado y con privilegios reducidos.
- Bloquee el tráfico de red saliente del trabajador, que es lo que convirtió un error ciego en uno demostrado.
- Liste blanca los destinos que una obtención del lado del servidor puede alcanzar y mantenga el trabajador fuera de las direcciones internas.
La guía de ImageMagick recomienda probar después de cualquier cambio de política, y magick identify -list policy imprime lo que realmente está cargado.
Lecciones de ImageTragick
ImageTragick, la inyección de comandos de delegado de 2016 rastreada como CVE-2016-3714, es la misma clase de fallo, y sigue resurgiendo porque nadie cuenta el convertidor como parte de la superficie de ataque. Nico Waisman, CISO de XBOW y autor de la divulgación, lo expresó así: 'Las aplicaciones tratan a los ayudantes de imagen como tuberías. Los atacantes los tratan como analizadores'.
La obtención era accesible, no devolvía nada y parecía un callejón sin salida. Lo que la convirtió en un shell SYSTEM fue el analizador detrás, y nada en la respuesta habría indicado eso.




















Deja una respuesta