On July 24, Health-ISAC issued an advisory warning healthcare and medical technology organizations about a measurable rise in successful attacks by the extortion group ShinyHunters. One line from that advisory is worth pinning to the wall:
“SSO is the control plane, and ShinyHunters’ leverage is created through data theft at cloud scale.”
The pattern the advisory describes is consistent enough to plan against. Voice phishing calls target employees or help desk staff and pressure them into resetting a password, resetting MFA, or enrolling a new device. The attacker then signs in as a real user, lands on the Okta, Entra ID, or Google SSO dashboard, and reads it as a directory of everything that person can reach: Salesforce, Microsoft 365, SharePoint, DocuSign, Slack, Atlassian, Dropbox, Google Drive. What follows is bulk read and export, then extortion.
Health-ISAC is careful about names. The advisory does not identify affected organizations, and it warns that not every claim the group makes has been verified. Its guidance is to defend against the attack pattern rather than the headline. BleepingComputer has reported incidents at healthcare and medtech companies including Medtronic, DentaQuest, iRhythm, and OneMedical, and McKesson disclosed a breach along similar lines in August.
SSO centralizes authentication. It does not secure SaaS.
Single sign-on is genuinely load-bearing, and I have argued for it as a security control rather than a convenience feature. Without it, your MFA policy is only as strong as the app that doesn’t route through it.
But SSO answers exactly one question: is this a real session? It has nothing to say about where they are logging in from, what machine they are sitting at, what that account should be able to reach at all, or whether pulling a hundred thousand patient records in an afternoon is normal for this account. Those are four separate controls, and many organizations have configured none of them.
Gate 1. The help desk: where Health-ISAC starts
Health-ISAC’s first recommendation is to break the chain between the inbound call and the account takeover, and it is the cheapest work on this page. The specific asks:
- Out-of-band verification for every password reset, MFA reset, and device re-enrollment request. Call the user back on a phone number you already had on file, not the one on the ticket. Even better: use video calling to help validate the user.
- A no same-call policy. No credential or factor changes during the inbound call that requested them. The request becomes a ticket, the ticket gets a verified callback, and only then does anything change.
- Manager approval and extra verification for privileged accounts and high-risk groups: executives, IT administrators, security staff, finance.
- Phishing-resistant MFA (FIDO2 or WebAuthn security keys) for those same groups first. Disable or tightly restrict SMS and voice factors, and gate the registration of a new factor behind a managed device or a conditional access policy.
- Treat the identity provider as Tier 0. Restrict admin portals to managed devices, block legacy authentication, and require compliant devices for sensitive cloud services.
Health-ISAC frames these as 30 to 60 day priorities.
These controls can also fail on someone. A help desk is a group of people being helpful under time pressure, and a live phish kit with a real-time control panel is built specifically to beat them on a bad afternoon.
So the useful question is not “how do we stop every phishing call.” It is: when an attacker holds a valid, fully authenticated session, what actually stops them?
The attacker does not only have to be right once
There is a line in every security awareness deck: the defender has to be right every time, the attacker only has to be right once. It is memorable, and for this class of attack it is wrong.
A SaaS data theft of this kind is not one lucky break. It is a sequence, and the attacker has to clear every stage of it. Talk a help desk into a reset. Land the session on a machine nobody vetted. Reach the platform from a network nobody restricted. Find an account that already holds standing rights to everything. Then move an enormous volume of data without tripping anything. Five stages, and five separate opportunities to end it.
These breaches do not succeed because an attacker got lucky once. They succeed because all five gates were standing open, which is a different problem with a much better answer. You do not have to be right every time. You have to be right at any one of five points.
One honest qualification, because a closed gate does not always end an attack. Somebody holding a valid SSO session has room to maneuver. Blocked by device trust, they can go back and try to talk the help desk into enrolling a device for them. Blocked by network policy, they can hunt for the one application nobody brought behind the policy, or route through a residential proxy in the right metro area. Blocked by standing access, they can file an elevation request, or go phish somebody who already holds the entitlement.
Every one of those pivots is a new event, though. A second call to the help desk. A device enrollment. An elevation request landing in an approval queue that a human reads. A failed login from an address you have never seen. A quiet attack turns into a loud one, and the dwell time that lets somebody move a terabyte unnoticed depends entirely on staying quiet.
That is the real argument for treating the gates and the alerting as one purchase rather than competing line items. Controls that only block are worth less than they look. Controls that block and generate a signal when somebody tries to work around them are what turn a silent export into a sequence of events with your name on the ticket.
Gate 2. Device trust: the attacker’s laptop is not your laptop
Once the help desk gate is behind you, the cheapest structural fix is refusing to accept authentication from unmanaged hardware. An attacker who social-engineers a password and an MFA push is still sitting at their own machine. That machine is not enrolled in your MDM, has no management certificate, and fails a device posture check every time.
In Okta, this is Device Assurance policies combined with Okta Verify and FastPass, bound into your authentication policies as a “registered and managed device” requirement. In Entra ID, it is a Conditional Access grant requiring a compliant or hybrid-joined device. Both are the same idea: possession of the credential is not sufficient, possession of the credential on a machine we manage is.
Two things make this worth prioritizing over almost anything else on the list:
- It fails closed against credential theft, MFA fatigue, help desk impersonation, and session hijacking all at once, because none of those attacks come with your laptop attached.
- It composes with phishing-resistant MFA rather than duplicating it. FIDO2 stops the credential from being relayed. Device trust stops the session from landing anywhere useful if it is.
Scope it to your crown-jewel applications first. You do not need to boil the ocean to protect the Salesforce org holding patient records.
That is as far as this post goes, because gates 1 and 2 are what decide whether an attacker gets a working session at all. The remaining three decide what that session is worth, and each has enough platform detail to need its own post:
- Standing Access Is the Blast Radius takes gate 4. The attacker in this chain never escalates privilege, because the account they compromised already held rights to everything. Just-in-time access, PIM, SCIM group provisioning, and what each vendor charges for it.
- Network Limits and the Logs You Have to Buy takes gates 3 and 5. Salesforce Login IP traps, private connectivity for Snowflake and Databricks, and the audit logging your license tier quietly leaves out.
What to do this quarter
If your organization runs sensitive data in SaaS, this is the short list:
- Harden the help desk to Health-ISAC’s spec: verified callback, no same-call resets, manager approval for privileged accounts. Every one of these attacks runs through a human being on a phone call, and this is the cheapest gate on the list.
- Inventory which SaaS platforms hold your regulated data. For most healthcare and healthcare-adjacent companies this is a shorter list than expected, and it tells you where to spend.
- Turn on device trust for those platforms. Managed device required, no exceptions beyond a documented, reviewed, and time-bound list.
- Find out who holds standing bulk-export rights in the platforms on that list, and start taking them away. That is gate 4.
- Work out what your license tier does not cover. Network restrictions and audit logging are decided at renewal rather than in a config screen. That is gates 3 and 5.
None of this makes an organization unbreachable. That is not the standard. The standard is whether an attacker working this chain hits a wall at one of five points, gets noticed on day one instead of month four, and leaves behind logs that let you scope the damage.
If you want help working out where you stand, our SaaS Security & Access Assessment covers device trust, conditional access, network restrictions, and the license-tier question across Microsoft 365, Google Workspace, Salesforce, and the rest of your stack. If your exposure runs through the vendors and platforms you depend on rather than your own tenant, pair it with a vendor risk assessment.
And if you think something is happening right now, call (608) 448-6075 or email with INCIDENT in the subject line.