Patching Ivanti Fixed One Bug. The Chain Had Three.

Ivanti Connect Secure CVE-2026-111357 and CVE-2026-118527 finish a root exploit chain; here's how to check and patch your clients' Ivanti VPNs.

If your clients' Ivanti VPNs got the October 13 patch, the job looked done. It wasn't: on October 30, CISA added two more Ivanti Connect Secure flaws to its list of exploited bugs, and with the first one they take an attacker from an anonymous web request to root on the appliance.

Think of a burglar with three keys. Changing the front-door lock helped, but the back door and the safe still opened on the old key ring.

TL;DR

  • On October 30, 2026, CISA added CVE-2026-111357 and CVE-2026-118527 to its KEV catalog; with CVE-2026-104935 they form a chain giving attackers root on Ivanti Connect Secure.
  • CISA lists Ivanti Connect Secure 25.1.1.2 and prior, 25.1.2.2 and prior, and 22.8R2.5 and prior as affected, so VPNs patched earlier this month can still be exposed.
  • Cyber Press reports the fixed builds as 25.1.1.3, or 22.8R2.6 where migration isn't possible yet. A clean Integrity Checker scan proves nothing; check logs kept off the appliance.
  • According to Cyber Press, Volexity saw the attacker steal LDAP credentials, search Active Directory for LAPS and BitLocker secrets, and run password spraying.

What happened with the Ivanti Connect Secure zero-day chain?

Attackers chained three Ivanti Connect Secure bugs to go from an unauthenticated web request to root on the VPN appliance, and since October 30, 2026 all three are in CISA's Known Exploited Vulnerabilities (KEV) catalog.

According to The Hacker News, Volexity found the attack on one customer's appliance running 22.8R2.4, fully patched at the time, with exploitation starting on October 3, 2026. On October 13, Ivanti said it was aware of "limited exploitation in the wild" and told customers to "act immediately". That update closed the front door but left the root link open. Cyber Press reports that Ivanti updated its advisory on October 29 to name all three CVEs.

The three links, in the order an attacker uses them:

  • CVE-2026-104935, the front door. Rated 8.6 (CVSS). According to Cyber Press, the appliance checked the public login page, welcome.cgi, but ran whichever script the X-DSCGI-PATH header named.
  • CVE-2026-118527, the drop box. Predictable filenames let an authenticated attacker upload content to a known spot on disk, per CISA's KEV entry. Cyber Press reports a CVSS of 4.3; NVD had no record for it when we checked on October 31.
  • CVE-2026-111357, the master key. A flaw in the DSInvoked broker lets a local user become root. NVD lists it at 7.0 (CVSS) as a local bug; Cyber Press reports 8.8. It is local on paper only, because the first two links supply the foothold.

CISA gave federal agencies until November 2 to act on CVE-2026-111357, and Ivanti has given no victim count.

Why doesn't Ivanti's Integrity Checker catch it?

Ivanti's Integrity Checker Tool (ICT) may not detect this exploitation because the attacker's commands run in memory, CISA warns.

According to Cyber Press, Volexity found no web shell. The attacker reran the whole chain with each command it sent, restored the memory and configuration data it changed, and cleaned out debug and audit logs. A clean ICT scan only means the burglar wiped the fingerprints.

The evidence that survives sits where the attacker couldn't reach: the client's syslog server and domain controllers.

Am I affected? How to check your clients' Ivanti VPNs

A client is exposed if its Ivanti Connect Secure runs 25.1.1.2 or earlier, 25.1.2.2 or earlier, or 22.8R2.5 or earlier, per CISA.

  1. Preserve evidence. Before you upgrade or reset anything, back up the appliance configuration (CISA's first recovery step) and copy the logs the appliance forwarded to the client's syslog server. Replace /var/log/ics with the directory that server writes the appliance's logs to. Pass: the .sha256 file lists every copied file.
D=/srv/evidence/ics-$(date +%F); sudo mkdir -p "$D"
sudo cp -a /var/log/ics "$D"/
sudo find "$D" -type f -exec sha256sum {} + | sudo tee "$D.sha256"
  1. Read the version. In the admin console, open System > Status; that dashboard shows the running version (Ivanti's admin guide, written for its sister product Policy Secure, which shares the console). Pass: the version falls in none of CISA's affected ranges.
  2. Search the off-box logs. The first command searches every log on the syslog server for the IP The Hacker News lists from Volexity. The second counts login-page requests in each file, if the appliance logs request paths; a sudden spike is the pattern Volexity flagged.
sudo grep -rn '108\.165\.147\.64' /var/log
sudo grep -rc 'url_default/welcome.cgi' /var/log/ics

The real giveaway, an X-DSCGI-PATH header that doesn't match the URL, only shows up in a WAF, reverse proxy or decrypted packet capture in front of the appliance. An empty result does not prove the appliance is clean, and the attacker may use other IPs.

  1. Check the domain controllers for spraying from the VPN. Run this on an admin workstation with the ActiveDirectory module, with $ics set to the appliance's internal IP. It asks all domain controllers for failed logons (events 4625 and 4771) that mention that IP. Pass: no rows. It only sees what each Security log still holds.
$ics = '10.0.0.5'   # the appliance's internal IP
Get-ADDomainController -Filter * | ForEach-Object { Get-WinEvent -ComputerName $_.HostName -FilterHashtable @{LogName='Security';Id=4625,4771} -ErrorAction SilentlyContinue | Where-Object { $_.Message -match [regex]::Escape($ics) } } | Group-Object Id | Select-Object Count,Name

How do I fix the Ivanti Connect Secure chain?

Upgrade to a fixed build, and treat any appliance with a hit from the checks above as compromised, not just outdated.

  1. Preserve evidence. Finish check 1 before touching the appliance; an upgrade or reset wipes what the attacker left behind.
  2. Upgrade. Move to 25.1.1.3, or 22.8R2.6 if the client can't migrate yet, as Cyber Press reports Ivanti's October 29 update. Pass: System > Status shows the new build. Plan the 25.x move now: CISA notes that 22.8 reaches end of life on January 31, 2027.
  3. Rebuild any appliance with a hit. Follow CISA's recovery steps: back up the configuration, factory reset and upgrade (or rebuild virtual and cloud instances), restore the configuration, reset all account passwords, revoke and reissue stored certificates, and reset stored API keys and license server credentials. Pass: check 2 shows the fixed build, and check 3 run a day later shows no new hits.
  4. Reset the service account the VPN uses to query AD. Replace svc-ics with the account named in the appliance's authentication server settings, then enter the new password there. The commands follow Microsoft's Set-ADAccountPassword reference. Pass: PasswordLastSet shows today's date and a test VPN login succeeds.
Set-ADAccountPassword -Identity svc-ics -Reset -NewPassword (Read-Host -AsSecureString -Prompt 'New password')
Get-ADUser svc-ics -Properties PasswordLastSet | Select-Object PasswordLastSet
  1. Expire the LAPS passwords the attacker went looking for. For Windows LAPS, Set-LapsADPasswordExpirationTime expires the stored password at once; a device sets its new one at its next LAPS policy cycle. Pass: LAPS-managed computers return PasswordReset in the Status column. Legacy LAPS is not covered by this command.
Get-ADComputer -Filter * | ForEach-Object { Set-LapsADPasswordExpirationTime -Identity $_.DistinguishedName }

Where KinoSec fits

This chain shows how fast a clean bill of health goes stale: a VPN patched on October 13 had two more exploited links named by October 30.

KinoSec runs an autonomous pentest of your clients' external networks on demand. It maps the internet-facing surface, finds appliances like Ivanti Connect Secure, flags builds inside a known-exploited range, and writes up each finding with remediation in a report you hand your client. Its Active Directory pentest follows the path this attacker was on, from one stolen service account toward domain-wide secrets.

It doesn't replace forensics. If an appliance was already hit, the checks above and an incident responder come first.

Frequently Asked Questions

Is the Ivanti Connect Secure chain being exploited?

Yes. CISA added CVE-2026-104935 to its KEV catalog on October 13, 2026, and CVE-2026-111357 and CVE-2026-118527 on October 30, 2026. According to The Hacker News, Volexity saw exploitation start on October 3, 2026 against an appliance running 22.8R2.4.

Which Ivanti Connect Secure versions fix CVE-2026-111357?

Cyber Press reports the fixed builds as 25.1.1.3, or 22.8R2.6 where migration isn't possible yet. CISA lists 25.1.1.2 and prior, 25.1.2.2 and prior, and 22.8R2.5 and prior as affected, and notes that 22.8 reaches end of life on January 31, 2027.

How do I check if my clients' Ivanti VPNs were hit?

First, open System > Status in the admin console and compare the version with CISA's affected ranges. Next, on the syslog server, run sudo grep -rn '108\.165\.147\.64' /var/log to find the IP The Hacker News lists from Volexity. Then run sudo grep -rc 'url_default/welcome.cgi' /var/log/ics and look for a sudden spike in login-page requests.

Does a clean Integrity Checker scan mean the appliance is safe?

No. CISA warns that Ivanti's Integrity Checker Tool may not detect this exploitation because the attacker's commands run in memory. According to Cyber Press, Volexity found no web shell, and the attacker cleaned out debug and audit logs.

Can an autonomous pentest find exposed Ivanti VPNs?

Yes. KinoSec's autonomous external network pentest finds internet-facing appliances like Ivanti Connect Secure and flags builds inside a known-exploited range, with remediation in the report. It doesn't replace forensics on an appliance that was already compromised.