Security daily

Synthesized by Clarity (Claude) from 29 sources · May contain errors — spot one? [email protected] · Methodology →

Device-Code Phishing Kits Drain M365 Tokens With MFA Intact

Sources
29
Words
1,513
Read
8min

Topics AI Regulation AI Capital Data Infrastructure

◆ The signal

Two actors, Kali365 and EvilTokens, are working hundreds of tenants through Microsoft's own device-code sign-in page. No credentials were phished and MFA was not defeated; the flow issues tokens by design, which is why a passkey rollout does not close it. The path shuts only by blocking the device-code flow in Entra Conditional Access, and prior issuance is worth reviewing across the last 60 days.

◆ INTELLIGENCE MAP

Intelligence map

  1. 01

    Token Theft That Satisfies Your Controls

    act now

    Two off-the-shelf kits, Kali365 and EvilTokens, are abusing Microsoft's device-code sign-in flow across hundreds of M365 tenants. Victims authenticate on the genuine Microsoft page, so MFA is satisfied and the attacker leaves with valid access and refresh tokens. A phishing-resistant MFA rollout does not close this — disabling the flow in Entra Conditional Access does. The same pattern shows up in Zimbra, where attackers mint legacy app passcodes that skip MFA entirely.

    60 days
    token-issuance hunt window
    4
    sources
    • Named kits
    • Tenants affected
    • Fix effort
  2. 02

    Iran-Linked PLC Campaign Adds Two Vendors

    monitor

    CISA's July 22 advisory update expands the Iran-linked PLC campaign beyond Rockwell Automation to Schneider Electric and Siemens, and adds guidance on detecting malicious changes in reusable code modules. Thousands of PLCs are still discoverable on Shodan. In the same window, Houthi forces struck two Saudi tankers near Bab el-Mandeb and President Trump threatened 'major military punishment' on Iran — escalation that has historically preceded Iranian cyber retaliation against energy and finance.

    3
    PLC vendors now in scope
    2
    sources
    • Advisory update
    • Exposure
    • Oil price
    1. Original advisoryRockwell Automation PLCs only
    2. July 22 updateAdds Schneider Electric and Siemens
  3. 03

    Evasion by Staying Inside Legitimate Mechanisms

    monitor

    CrowdStrike's SANDWORM_MODE research documents an npm worm that mimics a release pipeline so closely that only 2 of 14 observed behaviors crossed the alerting bar. Separately, China-linked JadeProx executes its TriBack Loader through Windows callback functions rather than thread creation, the route most EDR engines profile. Neither has a patch. Coverage here comes from behavioral hunting and purple-team validation, not signature updates.

    2 of 14
    worm behaviors that alerted
    3
    sources
    • Correlation lag
    • Loader variants
    • New backdoor
    1. SANDWORM_MODE behaviors that triggered an alert14
  4. 04

    The CVE Queue Broke at Machine Speed

    background

    Oracle shipped 1,449 fixes and the Linux kernel team published 432 CVEs inside 48 hours — 1,881 in a single cycle, with AI-assisted bug hunting cited as a driver. CISA revoked BOD 22-01 and replaced it with BOD 26-04, which mandates risk-based prioritization over count. Your patch-everything SLA is now arithmetically impossible, so exposure and exploitability have to become the queue's sort order.

    1,881
    new CVEs in one cycle
    2
    sources
    • Oracle CPU fixes
    • Linux kernel CVEs
    • Directive change
  5. 05

    AI Tooling Is Now External Attack Surface

    monitor

    Censys counted 294,000+ internet-exposed IPs running 43 AI and LLM tools, up more than 60% in nine months, led by Langflow and LiteLLM. Anthropic's Claude Cowork carries CVE-2026-46331: the macOS host filesystem is shared read-write into the agent's Linux VM, putting SSH keys and cloud credentials in reach of guest-root. Zenity also showed one click silently wiring an attacker-controlled ChatGPT agent into Outlook, Teams, Slack and SharePoint. None of it is in most ASM scopes.

    294,000+
    exposed AI tool endpoints
    3
    sources
    • Tools tracked
    • Growth
    • Named CVE

◆ DEEP DIVES

Deep dives

  1. 01

    The Sign-In Flow You Never Disabled Is Handing Out Refresh Tokens

    act now evidence: medium

    Why the mechanism matters more than the kit

    The OAuth device authorization grant exists for devices that cannot render a login form: smart TVs, kiosks, CLI tools on headless boxes. The device asks Microsoft for a code, the human types that code into the real login.microsoftonline.com page on a phone or laptop, and Microsoft hands the requesting device an access token and a refresh token. Nothing in that sequence breaks when the requesting device belongs to an attacker. The lure only has to persuade a target to enter a code they were told came from IT.

    That is why the two kits now circulating, Kali365 and EvilTokens, are scaling across hundreds of M365 tenants with AI-written lures and automated token capture. There is no credential to steal and no proxy to fingerprint, and the user genuinely completes MFA. The attacker walks away with a refresh token, which survives a password reset and keeps minting access tokens until it is explicitly revoked.


    Where the guidance diverges

    This is the week's most important disagreement in defensive advice. One line of reporting, anchored on the Kratos/SneakyLog AiTM ecosystem, pushes FIDO2 and passkeys against adversary-in-the-middle phishing. Against a proxy that replays credentials, it works. Device-code abuse is not a proxy attack. The user authenticates directly with Microsoft using whatever strong factor was deployed, and the token is issued to the attacker's device anyway. Phishing-resistant MFA raises the bar on one vector while leaving this one wide open.

    The Zimbra campaign reported in parallel is the same class from a different vendor. After exploiting the mail server, the actor mints a Zimbra application passcode of the kind legacy IMAP and ActiveSync clients use, and that passcode bypasses MFA entirely. Patching the server does not revoke it. Two unrelated products, one shared failure: a legitimate secondary credential path the identity controls were never asked to evaluate.


    The move

    Blocking the device-code flow is a single Conditional Access policy and, for most tenants, an afternoon of work. The hard part is enumerating the handful of genuine kiosk and shared-display scenarios that need an exception before flipping it. The residual risk is any token already issued, which is why the hunt matters as much as the block. Hunt for anomalous token issuance, new device registrations, and stealthy inbox forwarding rules across the last 60 days. Those are the signals that separate a clean tenant from a quiet one.

    A refresh token stolen through a flow you approved by design will outlive your password reset, your MFA re-enrollment, and your incident report.

    Treat this as the template, not the incident. Every identity platform in production has at least one legacy or convenience authentication path — app passwords, legacy protocol passcodes, service-account secrets, device-code grants — enabled by default and never revisited. That inventory is now a standing deliverable, not a project.

    Action items

    • Block the OAuth device-code flow in Entra Conditional Access, with named exceptions only for enumerated kiosk and shared-display scenarios
    • Hunt 60 days of M365 sign-in logs for anomalous token issuance, new device registrations, and hidden inbox forwarding rules, and revoke refresh tokens on any hit
    • Enumerate every legacy secondary-credential path across identity and mail platforms this quarter — app passwords, legacy IMAP/ActiveSync passcodes, device-code grants — and disable or revoke by default

    Sources:TLDR InfoSec · SANS NewsBites · Cyberpresso

  2. 02

    Iran's PLC Campaign Just Tripled Its Vendor Scope

    monitor evidence: medium
    CISA updated its advisory on July 22. The campaign is Iran-linked and targets PLCs. It started with Rockwell Automation. The update adds Schneider Electric and Siemens to the affected list. The new guidance covers detecting malicious changes in reusable code modules. That is the part worth reading. Compromise the module once and it propagates wherever the module is reused. Thousands of PLCs are still exposed on Shodan. That number has not moved with the advisory.

    Action items

    • Run an external scan of your own and your integrators' netblocks to confirm zero internet-exposed PLCs or HMIs across Rockwell, Schneider Electric, and Siemens estates
    • Deploy project-file and reusable-module integrity monitoring on engineering workstations this quarter, alerting on controller downloads outside change windows
    • Tune detections for Iranian-APT staples now — password spraying against VPN and Entra ID, and edge-device exploitation — and validate OT segmentation with a tabletop

    Sources:SANS NewsBites · Morning Brew

  3. 03

    Three Actors, One Trick: Execution Inside Legitimate Mechanisms

    monitor evidence: high

    The detection math, stated plainly

    CrowdStrike's SANDWORM_MODE research is the clearest artifact of the pattern. The npm worm it describes uses living-off-the-land techniques. The propagation logic is functionally identical to a release pipeline: reconnaissance resembles dev health checks, propagation mimics git and registry operations, destruction overlaps with cleanup scripts. Of 14 observed behaviors, only 2 met the alerting bar. The events that would correlate into a chain arrive 48 to 96 hours apart. That is beyond the retention window many teams keep on build hosts, so the correlation silently never happens.

    The recommended hunt is specific and cheap: process-tree ancestry, looking for a node.js parent process acting on narrowly scoped paths and commands. The query is writable today against existing data, assuming retention on CI/CD and registry systems runs past 96 hours first.


    Same idea, different layer of the stack

    China-linked JadeProx reaches the same evasion from the endpoint side. Its TriBack Loader pairs a legitimately signed program with a malicious DLL and an encrypted payload, then executes via Windows callback functions rather than thread creation, which is the route most EDR engines actually profile. Two of four variants drop AdaptixC2 beacons. A Claude-Pro-themed lure delivers a previously undocumented backdoor named Beagle. Targeting spans government, healthcare, and education across South-East Asia and Latin America. Investigators found the cluster only because the operators left an Alibaba Cloud staging server exposed. The discovery margin was that thin.

    The third data point has no fix. Ukraine's CERT tied a campaign to a legitimate Notepad++ 8.8.3 distribution weaponized through a malicious plugin that extracts a password-protected RAR and loads a C2 client. The developers dispute that any vulnerability exists; plugin loading is documented, expected behavior. Both positions are correct, and that is the problem: no patch will ever close this, so behavioral detection is the entire control.

    CampaignLegitimate mechanism abusedWhy your tooling misses itDetection you can build
    SANDWORM_MODE (npm worm)CI/CD and registry operations2 of 14 behaviors alert; 48-96h correlation lagProcess-tree ancestry: node.js parent, narrow paths
    JadeProx TriBack LoaderSigned binary + DLL sideload; Windows callbacksEDR profiles thread creation, not callback executionPurple-team the technique; block NameSilo C2 domains
    Notepad++ plugin abuseDocumented plugin loadingVendor disputes it is a vulnerability; AV cleanEditor process spawning RAR extraction + outbound C2

    The move

    The question is not whether the EDR is good. It is which of these three execution paths it actually alerts on. Callback-function execution and signed-binary DLL sideloading are both straightforward purple-team tests. Where they fire, coverage exists. Where they do not, the detection gets written now rather than during an incident. Pair that with the DNS and proxy blocklist work on sylverixstrategy[.]com and license[.]claude-pro[.]com, both NameSilo-registered, and a 90-day retro-hunt behind it.

    If an attacker's technique is indistinguishable from your build pipeline, your only remaining advantage is knowing exactly what your build pipeline normally does.

    Action items

    • Purple-team Windows callback-function execution and signed-binary DLL sideloading against your EDR this quarter, and author detections for every path that fails to alert
    • Extend telemetry retention on CI/CD, build, and registry hosts beyond 96 hours now, then run the node.js process-ancestry hunt for SANDWORM_MODE activity
    • Add sylverixstrategy[.]com and license[.]claude-pro[.]com to DNS, proxy, and email blocklists and run a 90-day retro-hunt against historical logs

    Sources:Cyberpresso · SANS NewsBites · TLDR InfoSec

  4. 04

    CISA Just Retired Patch-Everything — Your SLA Should Follow

    background evidence: medium

    The volume is now a machine-speed phenomenon

    Oracle's quarterly cycle carried 1,449 fixes. The Linux kernel team published 432 CVEs in 48 hours. That is 1,881 in a single window, and the reporting points at AI-assisted bug hunting as a driver on both sides. Akamai's Jan Schaumann put the consequence bluntly: triaging individual kernel changes at this rate is infeasible, and CVEs were always a flawed prioritization mechanism even before the volume arrived.

    The regulatory answer landed in the same period. CISA revoked BOD 22-01, the KEV-driven, deadline-per-CVE model, and replaced it with BOD 26-04, which mandates risk-based prioritization: exploitability, asset exposure, and business impact instead of count and severity score. For federal agencies that is a compliance change. For everyone else it is regulatory cover to rebuild a vulnerability program that auditors held to the old model.


    Two numbers that prove volume is not the problem

    The strongest argument for exposure-weighted triage comes from this cycle's exploitation data, not its patch counts. More than 167,000 Palo Alto GlobalProtect instances remain reachable and unpatched against CVE-2026-0257. A fix shipped in May. CISA set a three-day KEV mandate. Qilin ransomware affiliates are chaining it now. That is not a triage failure. It is a remediation-execution failure on a vulnerability already at the top of every list.

    Running the other direction: the Zimbra flaw used in the year-long espionage campaign against NATO-adjacent defense, energy, law enforcement, and finance organizations scored just CVSS 6.1. A severity-sorted queue buries it. A zero-click exploit that harvests 90 days of mail, passwords, and 2FA tokens belongs at the top of one. CVSS measures technical severity, not business consequence, and this cycle produced clean evidence in both directions.

    Speed is the third input. watchTowr honeypots recorded SharePoint exploitation within hours of a public proof-of-concept. Any SLA measured in weeks is measuring the wrong thing for internet-facing assets.


    The move

    The programs adapting to this sort the queue on three inputs they can actually source: known exploitation and exploit-prediction signals, internet reachability from an outside-in scan, and business criticality from asset owners. They set SLAs in hours for exploited-and-exposed assets, weeks for internal, best-effort for the long tail, and they publish the tail explicitly so leadership understands the permanently non-empty queue is the designed state.

    They also staff it deliberately. The emerging 'VulnOps' framing is worth borrowing for the headcount conversation: this is a continuous engineering function with pipelines and automation, not a monthly report someone produces alongside other duties.

    A vulnerability queue is never empty. That is the new baseline, and any SLA that pretends otherwise is fiction.

    Action items

    • Re-scope vulnerability prioritization to exploitability plus internet exposure plus business impact this quarter, and retire count- and CVSS-based SLAs in writing
    • Reconcile your patch-compliance reporting against an outside-in exposure scan this quarter to find the assets reported as patched but still reachable

    Sources:SANS NewsBites · Matt Johansen

◆ QUICK HITS

Quick hits

  • React 19, Next.js, and React Router all shipped security fixes in the same week

  • GitHub makes a three-day cooldown the default before Dependabot proposes version bumps

  • CertiK logs $124.1M in physical attacks on crypto holders, with France accounting for 33 of 52 cases

  • Everest extorted Stadler Rail for $12.3M through a supplier data-exchange platform

  • Google adds selfie-video account recovery as unified video generation models reach early access

  • Cursor Router now sends proprietary source code to Grok 4.5 and unnamed outside providers

  • DTEX maps DPRK IT-worker payments from luckyguys[.]site to OFAC-sanctioned Ryongbong

  • AI Kill Switch Act would fine frontier labs up to $20M a day for missing shutdown capability

◆ Bottom line

The take.

Stop hardening the front door and inventory the side entrances your vendors built: every legitimate credential path and trusted execution channel you never disabled, owned by name.

— Promit, reading as Security ·

Frequently asked

Why won't a passkey or FIDO2 rollout stop device-code token theft?
Because it isn't a proxy attack — the user authenticates directly with Microsoft using their strong factor, and Microsoft then issues the token to the attacker's requesting device anyway. Phishing-resistant MFA defeats adversary-in-the-middle credential replay, but leaves the device-code path completely open.
How do I close the device-code flow without breaking legitimate devices?
Block the OAuth device-code flow with a single Entra Conditional Access policy, adding named exceptions only for enumerated kiosk, headless CLI, and shared-display scenarios. The block itself is roughly an afternoon of work; the real effort is inventorying those genuine input-constrained cases before you flip it.
If a refresh token was already stolen, does a password reset revoke it?
No — a stolen refresh token survives both password resets and MFA re-enrollment, and keeps minting access tokens until it is explicitly revoked. Any confirmed compromise therefore requires an active token revocation, not just a credential reset.
What signals reveal a tenant that was compromised before the block went in?
Hunt sign-in logs for anomalous token issuance, newly registered devices, and stealthy inbox forwarding rules. Because the attack phishes no credentials and triggers no failed-login events, these downstream artifacts are the clearest evidence separating a clean tenant from a quietly breached one.
What other legitimate auth paths deserve the same audit as device-code?
Audit every legacy secondary-credential path that skips modern identity controls: app passwords, legacy IMAP/ActiveSync passcodes, service-account secrets, and device-code grants. A parallel Zimbra campaign this cycle minted an application passcode that bypassed MFA entirely, confirming the pattern spans vendors and is usually enabled by default.

◆ Same day, different angle

Read this day as…

◆ Recent in security

Keep reading.

Spot an error? [email protected]