Password spraying
Instead of guessing many passwords against one account and triggering a lockout, the attacker guesses a few common passwords against many accounts, staying under the threshold for each one.
How it works
Standard brute forcing tries many passwords against one account and quickly hits an account lockout policy. Password spraying inverts the approach: the attacker picks a small list of common or seasonal passwords ("Summer2026!", "Password1", a company name plus a year) and tries each one against a large list of usernames. Each individual account sees only one or two attempts per round, well under any reasonable lockout threshold, and the attacker waits between rounds so the per-account counter resets. Given a large enough population, a small percentage of users will have chosen one of the sprayed passwords, and that is enough for at least one hit.
The username list is the easy part. Corporate email formats are predictable, employee names come from LinkedIn and breach data, and many cloud identity providers will confirm whether an account exists through differences in their login or discovery responses, so the attacker can validate the list before spraying it. Open-source tooling automates the rest: rotating source IPs across cloud providers or residential proxies, pacing attempts, and recording which accounts accepted the password.
The attempts go wherever a password is accepted without a second factor or a device check. In Microsoft Entra ID and Microsoft 365 that historically meant legacy protocols (IMAP, POP, SMTP AUTH, Exchange ActiveSync and older Office clients) that cannot perform modern MFA, plus any account excluded from conditional access. VPN portals, Citrix gateways, ADFS extranet endpoints and SaaS apps with local passwords are the other common targets. Attackers aim first at legacy or forgotten accounts: old test tenants, functional mailboxes, service accounts, and accounts predating a password policy change, because these are the accounts most likely to sit outside MFA enforcement and outside routine review.
A successful guess is then used directly, or the attacker moves on to MFA fatigue if a push factor stands in the way.
Why it works
Password policies and lockout thresholds are built around single-account brute force, and spraying stays outside the pattern those defenses were designed to catch. The control assumption that fails is that the lockout counter is the defense. It is per-account by design, and an attack distributed across thousands of accounts never fills any single counter. Smart lockout features that track familiar and unfamiliar locations separately help, but a slow spray from many IPs still stays under them.
The attack also exploits a population-level certainty rather than a single-target guess. With enough usernames, a handful of people will always have picked a weak or predictable password, regardless of how strong the organization's complexity rules look on paper. Complexity rules even encourage the pattern: "Season + Year + !" satisfies most of them.
The deeper failure is coverage. Spraying only matters where a correct password is sufficient on its own, so its success rate is a direct measurement of how many login paths and accounts are outside MFA. The technique is cheap, requires no exploit, and scales to any directory an attacker can enumerate, which is part of why it recurs against organizations that consider themselves otherwise well defended.
How to detect it
- Entra sign-in logs. In the
SigninLogstable, count distinctUserPrincipalNamevalues perIPAddressorAutonomousSystemNumberwithResultType50126 (invalid username or password) in a short window. A rise in 50053 (account locked, or sign-in from a known malicious IP) across many users is a second signal. CheckClientAppUsedfor legacy protocols, which are where many sprays land. - Entra ID Protection. The
passwordSprayrisk detection is raised only when an attacker successfully validates a user's password, so treat every instance as a confirmed compromise of that password rather than an attempt. - Okta. In the Okta System Log,
security.threat.detectedevents mark requests from IPs that Okta ThreatInsight classifies as malicious, including brute force and password spray. Also watchuser.account.lockvolume across many users, andsecurity.breached_credential.detectedfor logins using a password known from a breach. - AWS. CloudTrail
ConsoleLoginevents withresponseElements.ConsoleLoginset toFailureanderrorMessage"Failed authentication", grouped bysourceIPAddressacross distinct user names. A laterSuccesswithadditionalEventData.MFAUsedset toNois the event to page on. - Google Workspace. The Login audit records
login_failureandlogin_successevents per user with the source IP. Group failures by IP across users, and reviewsuspicious_loginevents Google raises on its own. - Dormant accounts that suddenly succeed. Successful logins on accounts that have not authenticated in months, particularly legacy, test, or service accounts.
Be honest about the limits: shared VPN egress points, campus networks, and enterprise proxies produce many logins from one IP as ordinary behavior, and modern sprays rotate across hundreds of cloud IPs so no single source looks heavy. Per-IP thresholds alone miss distributed sprays. The distinguishing signal is broad targeting with a low per-account attempt count, measured across the whole tenant, and it is far more useful to alert on the one success than on the thousand failures.
How to stop it
- Enforce MFA on every login path with no exceptions, and hunt for the accounts excluded from policy, since spraying's favorite targets are the accounts MFA forgot. Block legacy authentication protocols that cannot do MFA.
- Move to phishing-resistant MFA, starting with privileged and administrative accounts, so a sprayed password alone is never sufficient and cannot be pushed through with an approval prompt. The MFA matrix shows which SaaS apps let admins require it.
- Remove interactive sign-in from functional and service accounts, or put them behind MFA and a network restriction. Rotate any default or provisioned password that was never changed.
- Ban common and previously breached passwords at creation and reset time. NIST SP 800-63B requires verifiers to reject passwords on a blocklist of commonly used, expected, or compromised values, rather than relying on composition rules.
- Decommission unused and legacy tenants and accounts. An account nobody remembers is exactly the account without current controls. See orphaned account abuse.
- Tune lockout and threat-intelligence blocking (Entra smart lockout, and Okta ThreatInsight set to enforce rather than only log) so that obviously malicious sources are refused before they reach the password check.
Seen in the wild
- Midnight Blizzard password spray into Microsoft corporate email (disclosed January 2024): a spray against a legacy, non-production test tenant account with no MFA, followed by abuse of a legacy OAuth application with elevated access. See the teardown.
- Password spraying across Chilean Microsoft 365 tenants lands on default-password service accounts (2026): Proofpoint tracked a TeamFiltration spray of more than 5,700 accounts from 1,487 AWS IP addresses that compromised seven, all functional or service accounts with no MFA. Six fell within seven minutes. Our news coverage has the detail.
- Nobelium password spray campaign and Microsoft support agent compromise (2021): Microsoft reported spraying and brute force against customers in 36 countries, with three compromised entities known.
- Nobelium abuse of reseller delegated administrative privileges (2021): password spraying was one of the methods in 22,868 attack attempts against 609 customers.
In the Identity Breach Report 2026, 15 of the 16 incidents with MFA absent began with a password that simply worked, two of them sprayed; the sixteenth was a self-registered account at DigiCert. The report's eighth control, MFA on every login path with no exceptions, is the one that addresses them.
Sources
- MITRE ATT&CK T1110.003: Brute Force: Password Spraying
- CISA alert TA18-086A: Brute Force Attacks Conducted by Cyber Actors
- Microsoft: password spray investigation playbook
- Microsoft Entra: smart lockout
- Microsoft Entra: authentication and authorization error codes
- Microsoft Entra ID Protection: risk detection types
- Okta: System Log event types
- AWS CloudTrail: AWS Management Console sign-in events
- Google Workspace Admin SDK: Login audit activity events
- NIST SP 800-63B: Authentication and Authenticator Management
- OWASP Authentication Cheat Sheet
Related identity CVEs and breaches
In the Identity Breach Database
Real incidents in our sourced breach database where this technique was used.
- Password spraying across Chilean Microsoft 365 tenants lands on default-password service accounts 2026 · Password spraying
- Midnight Blizzard password spray into Microsoft corporate email 2024 · Password spraying
- Nobelium abuse of reseller delegated administrative privileges 2021 · Third-party access
- Nobelium password spray campaign and Microsoft support agent compromise 2021 · Password spraying
Related on Start with Identity
- Blog39% of identity CVEs are on CISA KEV, and edge appliances hold 62% of the exploited ones
SWI's Identity Vulnerability Report 2026 checked 137 identity CVEs against CISA's Known Exploited Vulnerabilities catalog and NVD. 53 are exploited, most of the
- PodcastAuth0
The late Vittorio Bertocci's interviews with the authors of OAuth, OpenID Connect, FIDO, and SAML. Ended in 2022, and still the best audio archive on identity s
- CVECisco SAML 2.0 mixes authorization domains
Cisco's SAML 2.0 implementation did not keep authorization domains apart. A token or assertion meant for one domain could authorize in another. May 2024. The pr
- BlogExploited NetScaler SAML zero-day forces a second upgrade after the September patch
CVE-2026-88779 crashes NetScaler ADC and Gateway appliances configured as a SAML service provider or identity provider. Exploited before the fix, on CISA KEV si
- CVEFortiCloud SSO SAML bypass on FortiOS, FortiProxy, FortiSwitchManager
A crafted SAML message bypasses FortiCloud SSO (CWE-347). Arctic Wolf saw malicious logins three days after disclosure. CISA added it to KEV on 16 December 2025
- BlogFortinet's January SSO bypass hit boxes already patched for December's SAML bug
CVE-2026-24858 is the follow-on FortiCloud SSO SAML bypass. Devices patched for CVE-2025-59718 and 59719 were still exploitable. Actively exploited. CISA guidan