Join our Newsletter — 33% off our NHI Course
Home› Guides› SaaS Incident Response Guide: Scoping, Containment and Evidence…
Guide SaaS & OAuth Integrations

SaaS Incident Response Guide: Scoping, Containment and Evidence Across Business Apps

← All guides
By NHI Mgmt Group, edited by Lalit Choda Updated 14 November 2026 16 min read
On this page

Most SaaS incidents are not stolen integration tokens: they are a hijacked admin, a user account turned into an exfiltration tool, or a malicious app a user approved, and each needs a different first move. SaaS incidents also cut across tools: the attacker signs in through the identity provider, reads mail, downloads from file storage and exports the CRM, so containing one application while the others stay open achieves little. This guide covers how to classify a SaaS incident, scope it across business applications, contain it in the right order, preserve the evidence you need first, and decide when notification clocks start. It is for incident responders, SaaS and identity administrators and security leads. Token breaches at a vendor have their own guide, the SaaS integration token breach response, and deep evidence work is in SaaS Forensics; this page is the response layer that connects them.

Key takeaways

  • Classify before you act. Admin compromise, user account takeover, malicious app consent and data exfiltration need different containment, and the wrong first step (a password reset for a consent grant) leaves the attacker in place.
  • Scope from the identity outward. The identity provider and its token grants tell you which applications to check next; working app by app misses the ones nobody thought of.
  • Disabling a user is not the same as ending access. Sessions, refresh tokens, app passwords, OAuth grants and API keys each have their own revocation step, and several survive a password change.
  • Preserve, then contain, in minutes not days. Export the affected identities' audit events and suspend rather than delete accounts, because deletion can remove the records you need.
  • Persistence lives in configuration. New admins, added app credentials, mail forwarding rules, registered devices and MFA methods are how attackers come back; eradication means finding all of them.

What kind of SaaS incident is this?

Classify the incident in the first 30 minutes using the first confirmed signal. The class decides who leads, which accounts to touch first and which playbook to run alongside this guide.

Incident classTypical first signalWho leadsFirst containment moveCompanion playbook
Admin account compromiseNew admin role assignment, SSO or MFA policy change, audit logging turned off, bulk destructive actionIdentity team with incident leadDisable the admin, revoke sessions, remove any admin the attacker created, check for break-glass useSaaS Admin Account Protection
User account takeoverRisky sign-in, new MFA method, inbox forwarding rule, impossible travel alertSOCDisable or block sign-in, revoke sessions and refresh tokens, remove attacker MFA methodsAccount Takeover Response Playbook
Malicious app or consent grantNew OAuth consent with broad scopes, new connected app, app with a misleading nameSaaS or identity adminRemove the grant and block the app tenant-wide; a password reset does not stop itConsent Phishing and Illicit OAuth Grants Guide
Data exfiltrationMass download, bulk export or report run, external sharing spike, large API volumeSOC with data ownerStop the identity doing it (user or integration), then lock the sharing links it createdInsider Data Theft Response Playbook
Session theftActivity from a new address on an existing session with no fresh sign-inSOCRevoke sessions everywhere, then find the infected deviceSession Token Theft Response Playbook
Vendor or integration token breachVendor notification, API calls by a trusted integration from unusual addressesSaaS owner with vendor managementDisable the integration, revoke and rotateSaaS integration token breach response

Incidents often move between classes. A help desk call that resets a user's MFA becomes a user takeover, which becomes a malicious app consent, which becomes bulk exfiltration. In the ShinyHunters Salesforce data theft campaign, callers posing as IT support talked staff into authorising an attacker-controlled connected app, which then bulk-exported CRM tables through the API. Record the class as a working hypothesis and revisit it at each update.

The first hour: triage questions

  1. Which identity is confirmed bad? A person, an admin, a service account or an integration. Write down every identifier it has: UPN, email, IdP user ID, app user IDs, OAuth client IDs and token IDs.
  2. Is it still active? Look for events in the last hour. Active attacker activity raises the priority of containment over observation.
  3. Does it hold admin rights anywhere? In the IdP, in any SaaS tenant, or through delegated administration. Admin access changes the order of work (see below).
  4. Is it federated? If the application signs in through SSO, IdP containment cuts new sign-ins; local accounts, API keys and app passwords need separate action in each application.
  5. What can it reach? List the applications assigned to it in the IdP, its OAuth grants, and any integrations it owns.
  6. What is the evidence clock? Check the retention of each affected application's audit log now. The SaaS Audit Log Retention and Licensing Guide lists documented defaults.
  7. Is personal or regulated data involved? If it might be, bring in the privacy lead now, because notification clocks may already be running.

Scoping across business applications

Scope is the set of identities, applications, data and configuration the attacker touched. Work outward from the first confirmed identity in rings, and stop widening only when a ring adds nothing new.

RingQuestionWhere to lookATT&CK technique
1. AccessHow did the attacker sign in, and with what?IdP sign-in logs, MFA registration events, help desk ticketsT1078.004 Cloud Accounts; T1621 Multi-Factor Authentication Request Generation
2. PersistenceWhat did they add so they can return?New MFA methods, registered devices, app credentials, admin role assignments, OAuth consentsT1098.001 Additional Cloud Credentials; T1098.003 Additional Cloud Roles; T1098.005 Device Registration
3. SpreadWhich other applications did the identity or its tokens reach?IdP application sign-ins, OAuth grants, API activity by the user's tokensT1550.001 Application Access Token; T1528 Steal Application Access Token
4. CollectionWhat did they read, download or export?File access and download events, report and export logs, mailbox accessT1530 Data from Cloud Storage; T1213 Data from Information Repositories; T1114.003 Email Forwarding Rule
5. Secrets in dataDid the data they took contain credentials?Search exported tickets, wikis, chat and CRM notes for keys and passwordsT1213.005 Messaging Applications
6. Other identitiesDid they phish or impersonate others from inside?Internal mail and chat sent by the identity, new sharing to external accountsT1567 Exfiltration Over Web Service
  • Pivot on infrastructure: take every source IP address and user agent seen on the compromised identity and search all application logs for them. This finds other accounts the attacker controls.
  • Pivot on the app: for a malicious app, find every user who consented to the same client ID, not just the one who reported it. Microsoft's guidance on illicit consent grants treats a grant with ConsentType AllPrincipals as access to everyone's content in the tenant.
  • Mark what you cannot see: applications whose logs expired or were never licensed are scope unknowns, not scope negatives. Record them as such.

Preserve before you contain

Containment generates its own log events and some actions destroy evidence, so take a fast snapshot first. If the attacker is actively deleting data or creating admins, contain immediately and preserve in parallel.

  1. Export the last 30 days (or the full retained window if feasible within minutes) of audit events for each confirmed identity, plus all admin audit events, as raw API output.
  2. Export current OAuth grants, app registrations, admin role assignments, mail rules and MFA methods for the affected identities. These are what eradication must undo.
  3. Place legal holds on affected mailboxes, drives and channels where the platform supports it.
  4. Hash each export and start a responder action log with UTC timestamps.

Suspend, freeze or disable accounts rather than delete them. Salesforce, for example, documents freezing a user as a way to block login while deactivation steps are completed. Full collection methods, hashing and chain of custody are in SaaS Forensics.

Containment by priority

Contain in this order. Each step closes a route that the steps after it depend on.

  1. Admin access first. Remove or disable any admin the attacker controls or created, in the IdP and in each SaaS tenant. An attacker with admin rights can undo every other containment step. The Stryker Intune wiper attack shows how a compromised admin account plus a newly created Global Administrator could issue destructive commands through a legitimate management service.
  2. Block new sign-ins at the IdP. Disable the account or block sign-in, then revoke sessions and refresh tokens.
  3. End existing sessions in each application. IdP revocation stops new tokens; application sessions already issued may continue until they expire.
  4. Revoke non-interactive credentials. App passwords, personal access tokens, API keys and OAuth grants issued to or by the identity.
  5. Remove attacker persistence. MFA methods, registered devices, mail forwarding and inbox rules, added app credentials.
  6. Stop data leaving. Remove external sharing links and guest access created during the incident; block the malicious app tenant-wide.
  7. Reset credentials last. Reset the password once persistence is gone, so the attacker cannot reset it back through an MFA method or recovery address they added.

The table shows documented containment controls for common platforms, listed alphabetically. Plan and edition availability varies; confirm in each vendor's documentation.

PlatformDocumented containment controlWhat the documentation says it covers
GitHub (organisation with SAML SSO)People, member, SAML identity linked: revoke active SAML sessions and authorised credentialsRevoking a credential removes its SAML authorisation for the organisation; the token or key itself is not deleted, so revoke it at the user level too
Google WorkspaceUser, Security, Sign-in cookies, Reset; suspend the user; revoke third-party app accessResets browser and mobile sessions; suspending also resets sign-in cookies; signed-in desktop apps such as Google Drive for desktop are handled separately
Microsoft Entra IDClear Account enabled, then Revoke sessions (Revoke-MgUserSignInSession); disable registered devicesThe user cannot obtain new tokens; existing access tokens last one hour by default, and Continuous Access Evaluation can revoke tokens sooner for CAE-capable apps
OktaRevoke all user sessions (User Sessions API), with oauthTokens=trueEnds IdP sessions; oauthTokens=true also revokes OpenID Connect and OAuth refresh and access tokens; sessions inside downstream apps are ended in each app
SalesforceFreeze the user, then deactivate; remove the connected app's accessFreezing blocks login while deactivation steps are completed
Slack (Enterprise)admin.users.session.reset APIWipes all valid sessions on all devices for the user; options limit it to mobile or web only

Malicious apps need app containment, not user containment. Microsoft states that password resets and MFA do not stop an illicit consent attack, because the app holds its own access. Remove the delegated grant (Remove-MgOauth2PermissionGrant in Entra ID), remove app role assignments, then block the app so other users cannot consent to it. The same principle applies on every platform: revoke the grant and block the client ID. See the SaaS and OAuth App Governance Guide for the controls that prevent it recurring.

Eradication and recovery

  • Configuration diff: compare current SSO settings, MFA policies, conditional access rules, admin roles, audit settings and integrations against a known-good baseline. Restore from configuration backup where you have one; see SaaS Configuration Backup and Recovery.
  • Credentials in stolen data: rotate every secret found in exported tickets, wikis, chat or CRM records, and treat the systems those secrets reach as in scope.
  • Data integrity: where the attacker had write access, check for altered records, deleted content and changed payment or contact details before restoring business use.
  • Verify revocation: query each application's logs for any use of revoked sessions, tokens or keys after the revocation time. An incident is not closed while any old credential still works.
  • Return the account carefully: re-enable the user only after re-enrolment of MFA in person or through a verified channel, and watch the account closely for 30 days.
  • Close the entry route: phishing-resistant MFA for admins, consent restrictions, help desk verification, network restrictions on admin consoles.

Notification triggers

Three questions decide notification: was personal data involved, are you the controller or processor, and does a sector or contractual rule apply. Under GDPR Article 33(1) a controller must notify the supervisory authority without undue delay and, where feasible, within 72 hours of becoming aware of a personal data breach, unless it is unlikely to result in a risk to individuals. Article 33(2) requires a processor to notify the controller without undue delay. If your SaaS provider is the source, its contract sets how and when it tells you; the SaaS Provider Incident Notification Guide covers that side. Sector and national rules vary widely: use the Cyber Incident Reporting Requirements Map to check which apply, and record the moment of awareness, because that is when most clocks start.

Decision guidance

DecisionChoose option A whenChoose option B when
A: contain now / B: observe firstThe attacker is active, holds admin rights, or is moving dataActivity has stopped, scope is unclear and law enforcement or counsel has asked for observation (time-boxed, with sign-off)
A: suspend / B: delete the accountAlmost always: suspension keeps audit history and contentOnly an attacker-created account, after its activity and content are exported
A: block the app tenant-wide / B: remove one user's grantThe app is unknown, malicious or consented by several usersThe app is approved and only one user's token is in question
A: in-house response / B: bring in a retainerFewer than a handful of applications, logs streamed, team practisedMany applications, expired or unlicensed logs, regulated data, or admin compromise at the IdP

Small organisations often have one person who administers every SaaS tenant. Keep a printed list of each tenant's admin console, break-glass account and support contact, and pre-agree with an external responder how they will get read-only access. Large organisations should pre-build the containment actions above as SOAR or scripted runbooks with approval steps, so revocation across a dozen applications takes minutes. For general containment strategy, see the Incident Scoping and Containment Strategy Guide; for infrastructure clouds, the Cloud Incident Response Guide.

Where identity fits

Integration users, service accounts and API tokens are frequently the identity at the centre of a SaaS incident, and the hardest to contain because they have no MFA, no interactive sign-in and often no clear owner. Before an incident, every integration identity should have an owner, a documented scope and a tested way to disable it without breaking the business process it supports. Responders' own collector accounts and automation tokens are privileged non-human identities too. See the SaaS API Token Security Guide.

Detection and measurement

  • Time to contain: from declaration to the moment the last attacker session, token and grant is revoked across all applications in scope.
  • Revocation verification rate: percentage of revoked credentials checked in logs for later use. Target 100 percent before closure.
  • Containment coverage: percentage of tier-one SaaS applications with a documented, tested containment runbook (disable, revoke sessions, revoke tokens).
  • Scope unknowns: number of applications in scope where logs were missing or expired. Track it down over time.
  • Re-compromise rate: incidents where the same identity or app returns within 90 days, a sign that persistence was missed.

The detection content that should trigger this guide is covered in the SaaS Threat Detection Guide.

Framework mapping

ActivityNIST CSF 2.0NIST SP 800-53 Rev. 5
Running the plan with SaaS providers and other third partiesRS.MA-01IR-8 Incident Response Plan
Scoping and root cause analysisRS.AN-03IR-4 Incident Handling
ContainmentRS.MI-01IR-4 Incident Handling; AC-2 Account Management
EradicationRS.MI-02IR-4 Incident Handling
RecoveryRC.RP-01IR-4 Incident Handling
Reporting and notificationRS.CO (Incident Response Reporting and Communication)IR-6 Incident Reporting

NIST SP 800-61 Rev. 3 (April 2025) recasts incident response as a CSF 2.0 Community Profile and supersedes Rev. 2, so these CSF outcomes are the current reference structure.

Common failure patterns

  • Resetting the password and calling it contained: sessions, OAuth grants, app passwords and API keys keep working. Revoke each one and verify.
  • Treating a consent grant as an account problem: the malicious app keeps its access after the user's password changes. Remove the grant and block the app.
  • Containing the reported app only: the attacker used the same identity in mail, files and CRM. Scope from the IdP outward.
  • Missing the attacker's admin: responders disable the compromised admin but not the new admin it created, which restores access the next day.
  • Ignoring weak sign-in on SaaS-local accounts: accounts outside SSO with no MFA are invisible to IdP containment. In the Snowflake breach, infostealer credentials worked against customer accounts that lacked MFA and network restrictions.
  • Deleting accounts too early: deletion can remove history needed to scope the incident and to support notification decisions.

Practitioner checklist

  • Classify the incident and name the companion playbook within 30 minutes.
  • Record every identifier for the compromised identity across IdP and applications.
  • Export audit events, grants, roles, rules and MFA methods before containment, unless the attacker is active.
  • Remove attacker-controlled and attacker-created admins first.
  • Disable or block sign-in, revoke IdP sessions and refresh tokens, then end sessions in each application.
  • Revoke app passwords, personal tokens, API keys and OAuth grants; block malicious apps tenant-wide.
  • Pivot on IP addresses, user agents and client IDs to find other affected identities.
  • Rotate secrets found in stolen data and diff configuration against a known-good baseline.
  • Verify in logs that no revoked credential was used after revocation before closing.
  • Record the time of awareness and run the notification decision with the privacy lead.

Standards and references

Related NHI Mgmt Group resources: SaaS Forensics · SaaS integration token breach response · Account Takeover Response Playbook · SaaS Threat Detection Guide · SaaS and OAuth App Governance Guide

Free weekly newsletter

Subscribe to the NHI & AI Identity Journal

The latest on NHI and Agentic AI security – articles, research, breaches, news and events every week.

Bonus 33% off our NHI Course when you subscribe.

NHIMG Editorial Note
Researched and written by the NHI Mgmt Group editorial team using AI tools, under the editorial direction of Lalit Choda. Facts are drawn from the sources listed on this page and checked by our automated quality process. Last updated 14 November 2026. Spotted an error? Use our contact page.
NHI Mgmt Group, the independent authority on Non-Human Identity, IAM and Agentic AI security. nhimg.org