Skip to content

Security1 publisher2 min readPublished

Planted web-form lead steered Salesforce Agentforce into leaking CRM records to an outside server

Noma Labs disclosed ForcedLeak, a CVSS 9.4 chain that let a planted Salesforce web-form lead steer Agentforce into leaking CRM data. Salesforce blocked the exit on September 8, leaving audits of recent leads and agent activity as the open task.

The Watch · Security desk

Illustration accompanying Planted web-form lead steered Salesforce Agentforce into leaking CRM records to an outside server

What happened

  • Noma Labs found ForcedLeak, a CVSS 9.4 vulnerability chain in Salesforce Agentforce that could exfiltrate CRM data through indirect prompt injection.
  • An attacker submits a Web-to-Lead form with hidden instructions, and when an employee later queries the agent about that lead, the agent runs the planted commands alongside the request.
  • The agent packaged CRM data into image requests aimed at a domain on Salesforce's allow list that Noma registered for $5.
  • Salesforce began enforcing Trusted URL allow lists for Agentforce and Einstein Generative AI agents on September 8, 2025, and says customers are no longer affected.

Compiled by The WatchSomething wrong?How this is made

Why it matters

  • exposure Any org running Agentforce with Web-to-Lead is reachable through a public intake form, with no credentials and no click required from the victim.
  • capability Because the model cannot separate data it reads from commands it should refuse, any field an outsider can fill becomes a possible command channel.
  • decision With the block already enforced for everyone, the open choice for customers is retrospective: audit recent leads and 30-60 days of agent activity for planted payloads.
  • constraint The exfil path depended on a stale allow-list entry an attacker could simply buy, so CSP allow lists that no one maintains are the failure point a fix has to keep covering.

The model had no way to tell the employee's question from the text an outsider had left in the record. Noma describes the LLM as an execution engine that could not separate the data loaded into its context from instructions it should have refused [16]. So text an attacker planted in a lead became instructions the agent obeyed [10].

Salesforce's response controls where an agent's output can go [3]. The company describes its Trusted URL enforcement as a defense-in-depth control against sensitive data escaping customer systems via external requests after a successful prompt injection [21]. The injection can still fire, but with Trusted URLs enforced the agent will no longer return images or URLs carrying sensitive data [15].

Because that enforcement is server-side and now default, the remaining work for customers is backward-looking. Noma recommends auditing lead data from recent months for submissions carrying unusual instructions, and reviewing agent interactions over the past 30 to 60 days for anomalous behavior [13]. Its blog also lists enforcing Trusted URLs among the immediate actions, though Salesforce says it began that enforcement platform-wide on September 8 [19][4].

Noma calls ForcedLeak "the first zero-click vulnerability capable of running destructive actions" [14]. Zero-click, here, means the attacker never touches the victim's session; the trigger is a routine employee interaction, and the payload can sit dormant until one happens [18]. The company says the same chain could let attackers manipulate CRM records and hold persistent access, not only read data [17]. Any organization running Agentforce with Web-to-Lead enabled was in range, with sales and marketing workflows most exposed because they ingest external lead data as a matter of course [12][11].

What to watch

  • Whether a CVE identifier is assigned to the ForcedLeak chain.
  • Whether other CRM or business agents with public intake and CSP allow lists show the same exfiltration path.
  • Whether Salesforce extends Trusted URL enforcement beyond Agentforce and Einstein Generative AI agents.
Loading claim ledger
Loading source directory links
Loading share composer
Loading topic controls
Loading related stories