A sophisticated supply chain attack has reportedly compromised data across hundreds of organizations, linking the breach to a critical integration between customer success platform Gainsight and CRM giant Salesforce.
The notorious hacking collective ShinyHunters is claiming responsibility for the intrusion, which allegedly affects over 200 companies. The attack vector did not rely on breaking into Salesforce directly but instead on exploiting the trusted connection established through third-party applications.
On November 20, 2025, Salesforce took emergency action to contain the threat. The company officially disabled the connection between Gainsight-published applications and the Salesforce ecosystem after detecting “unusual activity.”
According to a statement from Salesforce, their investigation suggests that the activity facilitated unauthorized access to customer data, specifically through the app’s external connection.
Exploiting Trusted OAuth Tokens
The mechanics of this campaign highlight a growing trend in modern cyber warfare: targeting the “keys” rather than the “locks.”
The Google Threat Intelligence Group (GTIG), including researchers from Mandiant, identified the threat actors as affiliates of ShinyHunters. These adversaries compromised third-party OAuth tokens.
In the SaaS environment, OAuth tokens function like digital permissions slips, allowing apps like Gainsight to talk to Salesforce without requiring a user to log in every time.
By stealing these tokens, the attackers could potentially bypass multi-factor authentication and standard login defenses, masquerading as the trusted application to exfiltrate sensitive corporate data. This method allows threat actors to move laterally within cloud environments while remaining undetected by traditional perimeter security.
While the scope of the data loss is potentially massive, Salesforce has been clear in its distinction regarding where the fault lies. The company emphasized that there is “no indication that this issue resulted from any vulnerability in the Salesforce platform.” Instead, the breach is strictly related to the external connection and the management of credentials for the Gainsight integration.
Currently, customers are unable to connect their Gainsight-published applications to Salesforce until further notice. Both Salesforce and Mandiant are actively notifying organizations that show signs of compromise.
This incident mirrors similar campaigns observed recently, such as attacks targeting Salesloft Drift, suggesting a concerted effort by threat groups to audit and exploit SaaS ecosystems where third-party permissions are often granted and forgotten.
Urgent Actions for SaaS Administrators
This incident serves as a critical wake-up call for organizations relying on interconnected SaaS platforms. Security teams are urged to immediately treat this as a signal to audit their entire cloud environment.
The primary recommendation is to review all connected apps within Salesforce instances and revoke OAuth tokens for any integration that is unused, suspicious, or related to the affected Gainsight applications.
Organizations using Gainsight integrations should monitor for official communications from both vendors, Salesforce and Gainsight.
However, proactive defense is required. If any anomalous activity is detected from an integration, administrators should rotate credentials immediately and assume a potential compromise.
As threat actors increasingly pivot toward identity-based attacks and token theft, the maintenance of third-party permissions has become just as vital as patching software vulnerabilities.
Here is the table of Indicators of Compromise (IoCs) associated with the ShinyHunters campaign targeting Salesforce and Gainsight integrations.
| IOC Type | Value | First Seen (UTC) | Last Seen (UTC) | Observed Activity |
|---|---|---|---|---|
| IP Address | 104.3.11[.]1 | 2025-11-08 13:11:29 | 2025-11-08 13:15:23 | AT&T IP; reconnaissance and unauthorized access. |
| IP Address | 198.54.135[.]148 | 2025-11-16 21:48:03 | 2025-11-16 21:48:03 | Mullvad VPN proxy IP; reconnaissance and unauthorized access. |
| IP Address | 198.54.135[.]197 | 2025-11-16 22:00:56 | 2025-11-16 22:06:57 | Mullvad VPN proxy IP; reconnaissance and unauthorized access. |
| IP Address | 198.54.135[.]205 | 2025-11-18 10:43:55 | 2025-11-18 12:09:35 | Mullvad VPN proxy IP; reconnaissance and unauthorized access. obsi |
| IP Address | 146.70.171[.]216 | 2025-11-18 20:21:48 | 2025-11-18 20:50:13 | Mullvad VPN proxy IP; reconnaissance and unauthorized access. |
| IP Address | 169.150.203[.]245 | 2025-11-18 20:54:02 | 2025-11-18 23:04:12 | Surfshark VPN proxy IP; reconnaissance and unauthorized access. |
| IP Address | 172.113.237[.]48 | 2025-11-18 21:23:29 | 2025-11-18 21:51:32 | NSocks VPN proxy IP; reconnaissance and unauthorized access. |
| IP Address | 45.149.173[.]227 | 2025-11-18 22:05:15 | 2025-11-18 22:05:18 | Surfshark VPN proxy IP; reconnaissance and unauthorized access. |
| IP Address | 135.134.96[.]76 | 2025-11-19 08:26:18 | 2025-11-19 10:30:37 | IProxyShop VPN proxy IP; reconnaissance and unauthorized access. |
| IP Address | 65.195.111[.]21 | 2025-11-19 10:57:37 | 2025-11-19 10:59:19 | IProxyShop VPN proxy IP; reconnaissance and unauthorized access. |
| IP Address | 65.195.105[.]81 | 2025-11-19 11:17:51 | 2025-11-19 11:48:07 | Nexx VPN proxy IP; reconnaissance and unauthorized access. |
| IP Address | 65.195.105[.]153 | 2025-11-19 12:23:17 | 2025-11-19 12:23:35 | ProxySeller VPN proxy IP; reconnaissance and unauthorized access. |
| IP Address | 45.66.35[.]35 | 2025-11-19 12:47:43 | 2025-11-19 12:47:45 | Tor VPN proxy IP; reconnaissance and unauthorized access. |
| IP Address | 146.70.174[.]69 | 2025-11-19 12:47:49 | 2025-11-19 12:47:49 | Proton VPN proxy IP; reconnaissance and unauthorized access. |
| IP Address | 82.163.174[.]83 | 2025-11-19 14:30:36 | 2025-11-19 22:26:46 | ProxySeller VPN proxy IP; reconnaissance and unauthorized access. |
| IP Address | 3.239.45[.]43 | 2025-10-23 00:17:22 | 2025-10-23 00:45:36 | AWS IP; reconnaissance against customers with compromised Gainsight access token. |
| User Agent | python-requests/2.28[.]1 | 2025-11-08 13:11:19 | 2025-11-08 13:15:01 | Not an expected user agent string used by Gainsight connected app; use in conjunction with other IOCs shared. |
| User Agent | python-requests/2.32[.]3 | 2025-11-16 21:48:03 | 2025-11-16 21:48:03 | Not an expected user agent string used by Gainsight connected app; use in conjunction with other IOCs shared. |
| User Agent | python/3.11 aiohttp/3.13[.]1 | 2025-10-23 00:00:00 | 2025-10-23 00:01:00 | Not an expected user agent string used by Gainsight connected app; use in conjunction with other IOCs shared. |
| User Agent | Salesforce-Multi-Org-Fetcher/1.0 | 2025-11-18 22:05:13 | 2025-11-19 22:24:01 | Leveraged by threat actor for unauthorized access; also observed in Salesloft Drift activity. |
Follow us on Google News, LinkedIn, and X for daily cybersecurity updates. Contact us to feature your stories.
