The Patch Queue Just Filled With Unauthenticated RCEs — Triage in This Order
Ivanti is already being exploited, GitLab holds your source and CI secrets, and Microsoft's record batch hides a live bug — yet the vendor tooling meant to reassure you can't confirm you're clean.
The vendor's own all-clear is the trap
Ivanti found the defect internally in June and held the fix for the normal release cycle because nobody was exploiting it yet. Attackers were in by October 1. Disclosure and the CISA KEV listing came by October 14, per CyberScoop, tracking Volexity's UTA0576. Waiting for observed exploitation meant waiting on a signal that only arrives after the damage, while "unauthenticated and internet-reachable" was knowable in June.
CISA warns Ivanti's Integrity Checker Tool may miss this activity because the exploit runs in memory and the actor tampered with on-box logs. A clean checker result attests to nothing. UTA0576 steals credentials, dumps Active Directory metadata, runs custom tooling and exfiltrates, so the blast radius is every directory and credential the box can reach. Trustworthy evidence lives off-box: domain-controller and IdP authentication logs, syslog forwarded before tampering, and egress the appliance cannot rewrite.
The same failure, across the stack
GitLab jumps the queue. The bug executes code without a foothold on servers holding repos, CI secrets and runner tokens, and the bundle includes AI-agent instruction injection. npm's Trusted Publishing has the same shape one layer down. It binds publish rights to a mutable GitHub repo name, not an immutable ID, so an attacker who claims an abandoned repo name can push to a legitimate package. Provenance attestations will faithfully name the attacker's repo.
Microsoft's release carries 1,102 Windows fixes by The Hacker News' count, including a Windows Shell bug it reports under active exploitation. Shipping it as one batch is the mistake. Cut the exploited bug onto an emergency ring. XBOW built a Chrome chain with a public model. That is one result and sets no baseline for patch triage, though it makes a release that size a plausible target to diff.
On an edge appliance with an in-memory exploit, the vendor's integrity check is a hint. Only off-box telemetry counts, and it has to reach back to Oct 1.
In the stack
The order follows prerequisites over severity scores. GitLab first: it needs no foothold and holds deploy credentials. Ivanti second: apply the fixed Connect Secure release, then hunt for compromise, because patching does not close an incident that already happened. Windows Shell goes on the emergency lane. Check npm Trusted Publishing bindings against repo names the org still controls. Keep browsers current as the Chrome backstop. The durable fix is one SLA rule: internal knowledge of an unauthenticated flaw on an internet-facing component triggers out-of-band remediation, whether or not exploitation has been observed. That rule would have closed Ivanti's June-to-October window.
What to do
Patch every self-managed GitLab instance today to the fixed release that GitLab's security advisory lists for your version line, not just the newest build on a stale branch. If it was internet-reachable while unpatched, rotate CI/CD variables and runner registration tokens.
Apply Ivanti's fixed Connect Secure release to every appliance today. Then run a compromise hunt this week from Oct 1 forward, using only off-box sources (DC/IdP auth logs, forwarded syslog, egress baselines) rather than the Integrity Checker.
This sprint, pull the Windows Shell update that Microsoft's Security Update Guide marks as exploited out of the 1,413-fix batch and onto an emergency ring. Roll the remainder through normal rings.
This week, list every package your org publishes via npm Trusted Publishing and confirm each trusted-publisher binding names a GitHub repo your org still owns. For your dependencies, flag any package whose bound repo has been renamed, deleted, or transferred, and pin it until reviewed.