Build1 distinct publisher3 min readUpdated
A spraying campaign against Entra ID used OAuth's password grant for Azure CLI to get tokens with no MFA prompt. The lesson is about policy coverage, not about second factors.
The Engineer · Build desk

Compiled by The EngineerSomething wrong?How this is made
A password-spraying campaign tracked as LSHIY ran more than 81 million authentication attempts over two weeks against Microsoft Entra ID tenants and came away with 78 compromised accounts, according to a Huntress writeup dated 19 August 2026 and summarised on dev.to [1][3]. The attempts went straight to the tenant /token endpoint using OAuth's resource owner password credentials grant against the Azure CLI client, which returns a user-delegated token without an interactive MFA prompt [4].
That is the whole story, and it is worth being precise about it. The organisations that lost accounts had MFA enabled [2]. What they did not have was MFA that applied everywhere: Huntress lists the preconditions as valid reused passwords, ROPC or ROPC-using apps permitted, and Conditional Access that does not cover all users, all cloud apps, and all client types [11]. Exclusions for particular users, apps or client types, or a policy still sitting in report-only mode, are enough [10]. A second factor you have deployed but not enforced on a legacy grant flow is a second factor the attacker never meets.
The arithmetic explains why this went unnoticed. Averaged over fourteen days, 81 million attempts is roughly 5.8 million a day [19], and 78 successes works out to about one per 1.04 million tries [18]. The operator sprayed one password across many accounts slowly enough to stay under lockout thresholds [16], so what an administrator sees is a handful of successes buried in an enormous pile of failures [17]. Source-based filtering was deliberately degraded: the campaign used bring-your-own-IP and a large IPv6 space to rotate origins [5], with attempts observed from 2a0a:d683::/32, 2605:6400::/32 and 2605:6404::/32 [6] and from infrastructure including LSHIY LLC, FranTech, 3xK Tech and Tor [7].
There is nothing to find on the endpoint. Authentication happens entirely in the cloud, no code runs on the victim device, and because the traffic never crosses the victim's network, internal proxies are unlikely to show the attempts at all [8]. The user gets no MFA prompt, so a successful login is not something they are likely to report [9]. Huntress says identity provider logs are the primary evidence here rather than perimeter logs, and that aggregation by IPv6 prefix is necessary to see the shape of it [14].
The remediation list is short and unglamorous: disable ROPC and block authentication flows that cannot satisfy MFA, cut the Azure CLI user population to the minimum and move it to passwordless, and detect on credential validity and successful authentication rather than on source IPs [13]. Investigators are told to identify the successful users and issued tokens before counting failures, establish why Conditional Access did not apply, check whether the same credentials work in other tenants or apps, compare against Azure CLI history on legitimate devices, then revoke tokens, reset passwords, kill sessions and audit mail, OneDrive and Azure operations [15].
What to watch is the second half of the campaign that has not happened yet. No post-authentication activity was observed, which Huntress reads as credential validation or resale, unconfirmed [12]. Spraying of this type normally precedes mailbox compromise, lateral movement and data theft [20]; if those 78 sessions are inventory rather than an endpoint, the buyers arrive later. Exchange audit logs for unusual searches, forwarding rules and sends are the place that shows up first [21].
Follow any of these and your For You feed starts watching them — no settings page required.
Ranked by verification strength, evidence, and original report placement.
Attacks succeed if MFA policies have exclusions for certain users, apps or client types, or if the policies are in report-only mode.
Stated preconditions: users have valid, reused passwords; ROPC or apps that use ROPC are allowed; Conditional Access does not cover all users, all cloud apps and all client types; and success detection relies only on total trial volume.
Huntress reported a large-scale password-spraying campaign tracked as LSHIY that abuses OAuth's ROPC grant against Microsoft Azure CLI and Entra ID; publish date 2026-08-19, severity High, summarised on dev.to with BleepingComputer as a related source.
Attackers tried a small number of reused passwords against many accounts and obtained tokens from the old ROPC flow, which does not use MFA; this compromised organisations even where MFA was enabled, because the policy had coverage gaps.
Over two weeks, the campaign generated over 81 million attempts and 78 compromised accounts.
The attacker sent usernames and passwords directly to the tenant's /token endpoint using ROPC for Azure CLI; a correct combination returns a user-delegated token without interactive MFA.
Evidence-backed comparisons of source perspectives and observed adoption signals. Read the methodology
Which Builder, Operator, and Investor concerns the observed source mix emphasized—not a truth score.
Evidence, demonstrated adoption, hype gap, incentives, and confidence are assessed independently, each on its own current evidence. How these are measured.
Specific but single-sourced vendor telemetry
The technical chain is described concretely and internally consistently — named grant, named client, /token endpoint behaviour, IPv6 prefixes, upstream ASNs, attempt and success counts, and a victim breakdown. But the cluster contains exactly one item, a community restatement of Huntress research, with BleepingComputer named only as a related source and no independent reporting supplied. Raw logs, tenant identities and Microsoft comment are absent, and the supplied text is truncated mid-sentence, so verification depth is limited even though specificity is high.
Technique confirmed in the wild at volume, narrow confirmed impact
This is an observed live campaign, not a proof of concept: token issuance was confirmed, 23 organisations were affected, and source-rotation infrastructure was in active use. Adoption is nonetheless bounded — one vendor's visibility, 78 successful accounts, and no follow-on activity anywhere in the telemetry, so the confirmed operational footprint is far smaller than the attempt volume suggests.
Sound mechanism, headline volume outruns confirmed impact
The core technical point — that ROPC is an authentication path MFA policy may never evaluate — is well supported and materially useful. The framing leans on the 81 million figure, while the confirmed outcome is 78 accounts (roughly one per 1.04 million attempts) with no post-authentication activity observed, and the source itself concedes the credential-validation-or-resale motive is unconfirmed. That is a modest overstatement of consequence relative to demonstrated harm, not a fabricated risk.
Vendor research restated by an unaffiliated aggregator
The originating publisher is Huntress, a security vendor whose commercial interest lies in demonstrating detection value for identity attacks that endpoint-only tooling misses, and the write-up's conclusions point toward exactly that capability. The severity label and remediation checklist follow vendor-research conventions. The dev.to restatement is by an unaffiliated author with no disclosed commercial stake, which dampens but does not remove the incentive, and no funding, pricing or product-placement disclosures are present in the cluster to assess further.
Moderate: coherent mechanism, thin corroboration
Confidence in the mechanism and the defensive advice is reasonably high because the described flow matches how the password grant works and the guidance is actionable regardless of campaign specifics. Confidence in the numbers, attribution and scope is lower: one publisher, one vendor's telemetry, no independent confirmation in the cluster, and a truncated source body that omits the original conclusion.
build
Clop's Windchill implant borrows the app's own keystore, so app logs are the only witness1 distinct publisher
build
Unauthenticated root on macOS Screen Sharing: CVE-2026-65400 is already dropping miners1 distinct publisher
build
Three permission problems wearing one service principal: why published agents return 4031 distinct publisher
security
"Work PC" beats DESKTOP-XXXXXXXX: Entra device-join detection needs a new anchor1 distinct publisher
Distinct publishers with included, body-backed reporting in this cluster.
dev.to
1 article · August 19, 2026