Публичной формы для сбора лидов оказалось достаточно, чтобы чужая инструкция попала внутрь Salesforce и заставила корпоративного ИИ-агента выводить CRM-данные без единого клика сотрудника. Zenity Labs раскрыла цепочку SalesBleed из трёх проблем Agentforce, где внешняя запись Web-to-Lead превращалась в косвенную prompt injection, а доверенный агент продолжал атаку уже внутри корпоративной среды.
Злоумышленнику достаточно было отправить специально подготовленный лид через Web-to-Lead, штатный механизм Salesforce для сбора заявок с публичных сайтов. Вредоносная инструкция сохранялась в CRM как обычная запись и могла долго оставаться незаметной. Когда сотрудник позднее просил Agentforce обработать свежий лид, агент читал внедрённый текст как часть задания и мог обращаться к другим записям Salesforce в пределах доступных пользователю прав.
Первая проблема позволяла обойти Trusted URLs, механизм, который должен блокировать ссылки и изображения с недоверенных доменов. Проверка некорректно обрабатывала некоторые доменные зоны и специальные последовательности символов. После обхода фильтра Agentforce мог получить сведения из таблиц Leads и Accounts, встроить их в адрес изображения и вернуть HTML-тег. При загрузке изображения браузер отправлял запрос на подконтрольный атакующему сервер, поэтому данные покидали CRM автоматически. Такой сценарий хорошо показывает, почему ИИ-агент с доступом к корпоративным API фактически становится новым привилегированным пользователем.
Особенно показательно поведение защиты. Agentforce мог сообщить сотруднику, что контент заблокирован политиками безопасности, хотя запрос с чувствительными сведениями уже успевал уйти наружу. Для демонстрации специалисты использовали названия компаний, размеры сделок и адреса электронной почты, но тем же способом можно было передавать другие CRM-данные, доступные агенту.
Второй вариант SalesBleed переносил утечку в Slack. Мессенджер автоматически загружает данные по ссылкам, чтобы сформировать превью. Специально подготовленный адрес заставлял Slack обратиться к инфраструктуре злоумышленника сразу после появления ссылки в сообщении. Пользователю снова не требовалось ничего нажимать, а похищенные сведения передавались вместе с сетевым запросом.
Третья проблема затронула действие Reply to a Slack Thread из стандартного набора Slack Knowledge. Agentforce мог публиковать сообщения в рабочих обсуждениях без обязательного подтверждения и без понятного указания, кто инициировал отправку. В сочетании с заражённым лидом такая цепочка доверия позволяла внешнему атакующему превратить корпоративного агента в источник фишинговых сообщений внутри Slack.
Опасность усиливалась тем, что вредоносная запись оставалась в таблице Leads. Каждый новый запрос к тому же лиду давал внедрённой инструкции ещё один шанс сработать. Salesforce получила сведения о проблемах 1 июня. Исправление обхода Trusted URLs подтвердили 19 августа, корректную атрибуцию сообщений в Slack проверили 20 августа, а к 21 сентября команда подтвердила исправление всей описанной цепочки. Теперь опасные действия в Slack по умолчанию требуют подтверждения пользователя.
SalesBleed продолжает серию случаев, когда интерфейс обещает человеку контроль уже после того, как агент успел выполнить чувствительное действие. В сентябре похожую проблему нашли в Kiro, где рабочие данные могли уйти на сервер злоумышленника ещё до нажатия пользователем кнопки разрешения.
Salesforce сталкивается и с более традиционными рисками вокруг доверенных подключений. В конце 2025 года компрометация интеграций Gainsight создала угрозу данным множества клиентов Salesforce и ещё раз показала, насколько большой радиус атаки получают компоненты, которым CRM разрешает работать с корпоративной информацией.
