sistema: OPERATIVO
← volver a todos los hacks
AGENTS CRITICAL NEW

Copilot para SQL Server: un modo de solo lectura basado en regex, inyección de prompts y el camino a sysadmin

Una falla crítica en Copilot de SQL Server Management Studio muestra por qué el modo de solo lectura debe ser un permiso de la base de datos, no una regex ni una instrucción al modelo.

2026-10-13 // 6 min affects: copilot-ssms, sql-server-management-studio

¿Qué es esto?

El 30 de septiembre de 2026, el investigador Johann Rehberger (Embrace The Red) publicó el resumen de su charla en BlueHat Asia 2026 sobre Copilot en SQL Server Management Studio (SSMS). Microsoft registra el problema como una vulnerabilidad de elevación de privilegios de SQL Server, publicada en su Security Update Guide el 8 de septiembre de 2026, con una puntuación CVSS 3.1 de 9,6 (crítica). La investigación inicial data de mayo de 2026.

Es un caso compacto de un error recurrente en la seguridad de agentes: una propiedad de seguridad («solo lectura») aplicada mediante análisis de texto en la aplicación en lugar de por la propia base de datos.

Cómo funciona

Según el artículo, el modo de solo lectura de Copilot dependía de un clasificador basado en expresiones regulares que decidía si una sentencia generada era segura. Un clasificador así inspecciona la cadena, no el efecto. El investigador mostró que la ejecución dinámica mediante una variable podía eludir la comprobación, de modo que sentencias que modifican o eliminan datos se ejecutaban pese al modo de solo lectura. Una segunda herramienta, destinada a verificar archivos de copia de seguridad, también reenviaba T-SQL arbitrario.

Dos elementos agravaban el problema. Primero, los resultados de consultas podían enviarse a una ruta de archivos remota mediante un procedimiento almacenado extendido, lo que ofrecía un canal de exfiltración. Segundo, Copilot lee archivos de instrucciones almacenados en la propia base (una «constitución» para toda la base e instrucciones por objeto, guardadas como propiedades extendidas). Un usuario con derechos modestos sobre un objeto podía adjuntar tales instrucciones, y Copilot las seguía después con los privilegios de quien lo usara.

Encadenados, un propietario de base de datos podía colocar instrucciones, esperar a que un sysadmin abriera Copilot sobre esa base y lograr que el agente añadiera su inicio de sesión al rol sysadmin. El ataque requiere interacción del usuario, pero no código de explotación: la «carga» es texto que el agente trata como guía. Aquí no se reproduce ninguna cadena funcional.

Ejemplo de prompt

Ilustrativo y censurado: muestra la forma de la debilidad, no una carga utilizable.

# SQL Copilot: solo lectura impuesta por un clasificador (ilustrativo, defensivo, censurado)
# Patrón: la protección examina el texto de una sentencia, no los privilegios de la conexión.
#   control de «solo lectura»  ->  filtrado del texto T-SQL   [eludible mediante indirección]
#   archivos de instrucciones guardados en la base leídos como guía de confianza [CENSURADO]
# Defensa: conexión cuya cuenta carezca realmente de permisos de escritura; tratar todo
# texto de instrucciones almacenado como entrada no confiable; nunca conectar el agente como sysadmin.

Por qué importa

Los asistentes de bases de datos son atractivos porque se ejecutan con la conexión de quien los usa, a menudo muy privilegiada. Así el agente se convierte en un «confused deputy»: contenido de bajo privilegio dirige una sesión de alto privilegio. El caso también muestra que «se le dijo al modelo que no lo hiciera» y «un filtro revisa el SQL» no son fronteras de seguridad. Solo el sistema de permisos de la base de datos puede responder con fiabilidad qué puede hacer una conexión.

El mismo patrón se aplica a cualquier agente con una herramienta de ejecución: los archivos de instrucciones de un repositorio, una wiki o una base de datos son entradas no confiables, por cómodos que resulten como configuración.

Defensas

Imponer el solo lectura como permiso. Use para las sesiones del asistente un inicio de sesión sin derechos de escritura, DDL ni ejecución, en lugar de confiar en un clasificador o en un prompt.

No conectar nunca el asistente con una sesión sysadmin o de propietario. Utilice una cuenta dedicada de mínimo privilegio para el trabajo asistido por IA, separada de las sesiones de administración.

Tratar las instrucciones almacenadas como no confiables. Revise quién puede escribir propiedades extendidas o metadatos equivalentes y alerte ante nuevos archivos de instrucciones. Desactive su carga cuando el producto lo permita.

Limitar la salida de red y los procedimientos peligrosos. Restrinja el acceso saliente a recursos compartidos de archivos y elimine o deniegue los procedimientos extendidos que lo habilitan.

Usar los controles del proveedor. Microsoft documenta controles administrativos para desactivar Copilot, definir políticas y elegir el contexto de ejecución; aplíquelos de forma centralizada y mantenga SSMS actualizado según la guía vigente de Microsoft.

Registrar y revisar. Audite por separado las sentencias ejecutadas por sesiones del asistente y las de sesiones humanas.

Estado

ElementoReferenciaFechaNotas
Aviso del proveedorCVE-2026-656692026-09-08Elevación de privilegios en SQL Server; CVSS 3.1 base 9,6 (crítica); afecta a Copilot en SSMS
Resumen del investigadorEmbrace The Red2026-09-30Charla en BlueHat Asia 2026; investigación iniciada en mayo de 2026
Versión corregidaNo indicada en las fuentes revisadasn/aConsulte la guía vigente de Microsoft para la versión corregida de SSMS

Sources