Where It Went Wrong, 2024–2026
Module 4 of 5 in the chapter External Client Apps, Tokens and Their Lifecycle, chapter 13 of Securing Salesforce: Identity and Access. Each module stands on its own.
The question this module answers: How did the 2024 to 2026 attacks on Salesforce customers get in, and which controls close each door?
Through the door, not the wall
Section titled “Through the door, not the wall”Between 2024 and 2026, many companies lost Salesforce data to attackers. If you followed the news, you might think Salesforce was broken into. It wasn’t, and the people who investigated say so in plain words.
Google’s threat intelligence team, which investigated one campaign: “In all observed cases, attackers relied on manipulating end users, not exploiting any vulnerability inherent to Salesforce” (S14). Salesforce, on its Trust site: “there is no indication that the Salesforce platform has been compromised, nor is this activity related to any known vulnerability in our technology” (S13). And Salesforce’s framing, earlier the same year: “Cybersecurity is a shared responsibility between a provider and their customers” (S12).
So the attackers didn’t come through the wall. They came through the doors this course is about: people, apps and tokens. That’s why it belongs in an identity course. Integration Architect’s chapter 13 tells the same story from the integration side; here it’s the identity side.
Three doors
Section titled “Three doors”Door 1: a person approving an app
Section titled “Door 1: a person approving an app”Here’s how it worked. Someone called an employee, pretending to be from IT support. In Salesforce’s words, they were “prompting users to navigate to the login.salesforce[.]com/setup/connect page in order to add a malicious connected app”, and “the malicious connected app is a modified version of the Data Loader app published under a different name and/or branding” (S12). Google, which tracks the group as UNC6040, describes the same thing: the victim is guided “to approve a version of the Data Loader app with a name or branding that differs from the legitimate version”, or to “enter a ‘connection code’” (S14).
Now look at that page: /setup/connect. Have you seen it before? It’s the device flow’s verification page from chapter 9 (chapter 9’s S7). The caller had a code on their own device, and talked the employee into typing it in. The employee was being Priya at the TV, approving a device that wasn’t hers.
So what closes this door?
- The device flow, restricted. From November 30, 2026, it works only for local external client apps with a localhost callback (chapter 9). A code for someone else’s app no longer works.
- Uninstalled apps, restricted. Since September 2025, only users with Approve Uninstalled Connected Apps, or Use Any API Client, can use an app that isn’t installed in your org (the shared security record).
- Pre-authorized apps only, with permitted users through a permission set (module 2), and API Access Control for the whole org (module 2).
- Know who holds Use Any API Client. It walks past both (S16).
- And people. IT support will never ask you to type a code into Salesforce over the phone. Say so, often.
Door 2: a partner’s stored tokens
Section titled “Door 2: a partner’s stored tokens”The second door wasn’t a person at all. A trusted integration held valid OAuth tokens for many companies’ Salesforce orgs. Google, which tracks the group as UNC6395, found that from August 8, 2025, to at least August 18, the attacker used “compromised OAuth tokens associated with the Salesloft Drift third-party application” and “systematically exported large volumes of data from numerous corporate Salesforce instances” (S15). On August 20, Salesloft and Salesforce revoked the tokens (S15).
Two details to notice. The attacker then searched the data for secrets people had pasted into records, cloud access keys and passwords (S15). And they deleted their query jobs, but “logs were not impacted” (S15): the trail was still there for anyone who looked.
What closes this door? Everything in module 3, plus module 2’s scopes:
- Few scopes, so a stolen token reaches little.
- An IP allowlist, so a token used from somewhere else gets nothing.
- Rotation and the idle limit, so old tokens die.
- DPoP, so a stolen token is useless without the app’s private key.
- A revoke runbook, ready before the partner calls: which app, who pulls the plug.
- No secrets in records. Ever. A field is not a vault.
Door 3: an identity provider account
Section titled “Door 3: an identity provider account”In January 2026, Salesforce widened its advisory: attackers were going after identity provider accounts too, with fake login pages and phone calls. “If an IdP account is compromised, attackers may attempt to access connected applications” (S13). That’s single sign-on’s strength, turned around: one sign-in reaches everything behind it (chapter 4).
What closes it is mostly at the identity provider: strong, phishing-resistant MFA there. Salesforce added its own requirement in Summer ‘26: phishing-resistant MFA for privileged accounts (the shared security record). And on the Salesforce side, high assurance for the apps that reach the most sensitive data (module 2).
There was a fourth door in these years, public Experience Cloud sites with guest users who could see too much. That one isn’t about apps; chapter 14 covers it.
What’s been retired, and why
Section titled “What’s been retired, and why”Salesforce’s other answer has been to close the doors that hand around a password, a live session, or a token in the open. Here’s the list, with dates.
- The username-password flow, for connected apps, retires February 20, 2027 (chapter 5). It handed her password to the app.
- The user-agent and hybrid user-agent flows retire February 20, 2027 (chapter 9). The token sat in the browser.
- SOAP API
login()is retired in API versions 31.0 to 64.0 “effective with the Summer ‘27 release”, “already unavailable in 65.0+” (S17). A username and password for a session. Salesforce: “we recommend migrating to external client apps and OAuth” (S17). - Session IDs in outbound messages: “you can no longer send session IDs in outbound messages starting February 23, 2026. Instead, use OAuth to authenticate” (S18).
- The device flow is restricted to local apps with a localhost callback from November 30, 2026 (chapter 9). Door 1’s connection code.
Each still works somewhere until its date. Find yours first: the Insights page (module 1), Login History, and the app list.
Beyond the exam: what AI changes. Agents and MCP servers are apps with tokens too, and every door here is open to them. Chapter 17 takes it further.
What’s next
Section titled “What’s next”Module 5: Checkpoint 2. Steve Trucking’s apps and tokens, and the end of Part 2.
What an architect decides here
Section titled “What an architect decides here”- Which doors your org still has open, door by door.
- Who holds Use Any API Client and Approve Uninstalled Connected Apps.
- The revoke runbook for every partner integration.
- A plan and a date for every retired mechanism you find.
- What people are told: no codes over the phone, no secrets in records.
Explore
Section titled “Explore”- Protect Your Salesforce Environment from Social Engineering Threats (opens in a new tab) (Salesforce, March 12, 2025; checked 2026-11-07)
- Security Advisory: Ongoing Response to Social Engineering Threats (opens in a new tab) (Salesforce Trust, October 2, 2025, updated January 30, 2026; checked 2026-11-07)
- The Cost of a Call: From Voice Phishing to Data Extortion (opens in a new tab) (Google Threat Intelligence Group, June 4, 2025; checked 2026-11-07)
- Widespread Data Theft Targets Salesforce Instances via Salesloft Drift (opens in a new tab) (Google Threat Intelligence Group, August 26, 2025; checked 2026-11-07)
