How to Fix CVE-2026-20605: Critical Vulnerability in iOS and iPadOS
| Severity | Not verified - see advisory |
|---|---|
| Actively exploited? | Not currently listed in CISA KEV |
| Affected | 0 < 18.7.5, 0 < 14.8.4, 0 < 15.7.4, 0 < 26.3 |
| Fixed in | iOS |
| Type (CWE) | Not verified |
Exploitation status
CISA has not added CVE-2026-20605 to its Known Exploited Vulnerabilities (KEV) catalog, meaning there is no government-confirmed evidence of active exploitation yet. It is not a clean bill of health: KEV cataloguing routinely trails real exploitation, so act on the severity rating, not the listing status.
Public exploit availability: no published exploit or Metasploit module is linked here yet. Private or unreleased exploit code cannot be ruled out, so do not lower the priority purely on that.
Authoritative references:
What is CVE-2026-20605?
CVE-2026-20605 is a security flaw in iOS and iPadOS. The issue was addressed with improved memory handling. This issue is fixed in iOS 18.7.5 and iPadOS 18.7.5, macOS Sequoia 15.7.4, macOS Sonoma 14.8.4, macOS Tahoe 26.3.
Why this CVE matters
Unpatched network-facing software is the leading initial-access vector in public breach reporting. Treat any CVSS-9 class flaw on an internet-reachable system as urgent, regardless of whether public exploit code has been observed yet.
For deployments of iOS and iPadOS that have been exposed to the public internet during the disclosure window, the operating assumption should be that scanning has already happened. Even where exploitation has not been publicly observed, scanning for the vulnerable fingerprint is cheap and routine. Patching closes the door; log review and credential rotation close out the rest of the response.
Am I affected?
You are affected if your installation matches any of these version ranges:
- iOS and iPadOS: 0 < 18.7.5
- iOS and iPadOS: 0 < 14.8.4
- iOS and iPadOS: 0 < 15.7.4
- iOS and iPadOS: 0 < 26.3
Check your installed version against the list above. If you cannot determine the version, treat the system as affected and follow the upgrade path below.
Open iOS and iPadOS's About dialog or run the vendor-documented version-check command. Compare the result against the affected ranges in the advisory.
How to fix CVE-2026-20605
- Read the vendor advisory in full: https://support.apple.com/en-us/126347
- Upgrade iOS and iPadOS to the patched build listed in the vendor advisory.
- Back up the configuration (and database, where applicable) before upgrading.
- Apply the patch in a maintenance window. For HA pairs, upgrade the standby node first, fail over, then upgrade the former primary.
- Restart the affected service so the patched binary loads, then verify the new version (see verification section).
iOS / iPadOS update
# Confirm the patched build against the vendor advisory: https://support.apple.com/en-us/126347
# Check the current iOS build on a tethered device (libimobiledevice).
ideviceinfo -k ProductVersion
ideviceinfo -k BuildVersion
# Trigger update download (user accepts on-device install).
# Settings -> General -> Software Update -> Download and Install
# Target build: 18.7.5
# Confirm fleet iOS devices have updated (Intune example).
Connect-MgGraph -Scopes Device.Read.All
Get-MgDeviceManagementManagedDevice -Filter "operatingSystem eq 'iOS'" |
Where-Object { $_.OSVersion -lt '18.7.5' } |
Select-Object DeviceName, OSVersion, UserPrincipalName
macOS security update
# Confirm the patched build against the vendor advisory: https://support.apple.com/en-us/126347
# List pending updates.
softwareupdate --list
# Install all available security updates and restart.
sudo softwareupdate --install --all --restart
# Verify the running version (target: 18.7.5).
sw_vers -productVersion
# Fleet check via Intune.
Connect-MgGraph -Scopes Device.Read.All
Get-MgDeviceManagementManagedDevice -Filter "operatingSystem eq 'macOS'" |
Where-Object { $_.OSVersion -lt '18.7.5' } |
Select-Object DeviceName, OSVersion
Verify the fix landed
# Confirm the patched build against the vendor advisory: https://support.apple.com/en-us/126347
# 1. Confirm the running version equals the advisory's fixed-in build.
# (Use the platform-specific version probe from the commands above.)
# 2. Re-scan with your vulnerability scanner (Nessus, Qualys, Tenable, OpenVAS).
# The scanner should no longer flag CVE-2026-20605 on the patched target.
# 3. Inspect recent service and kernel logs for crash-loops or rollback events.
journalctl --since "10 minutes ago" | tail -200
dmesg --since "10 minutes ago" | tail -100
If you cannot patch immediately
No official workaround exists beyond restricting network exposure to the affected component. Apply the vendor patch as the primary remediation.
How to verify the fix worked
- After applying the patch, verify the running version in the product's admin UI or via the vendor-documented CLI command.
- Confirm the patched build matches the version listed in the vendor advisory.
- Run an authenticated vulnerability scan with a current signature set and confirm the scanner no longer flags CVE-2026-20605.
- Review logs for the entire pre-patch window for indicators of compromise listed in the vendor or CISA advisory.
- Confirm any network-layer mitigations that were applied as a stopgap have been reverted (or left in place intentionally) once the patch is verified.
If your installation was internet-reachable during the disclosure window, treat log review as part of the remediation rather than an optional follow-up. Look for log entries that do not match your normal request patterns, especially repeated requests to the same uncommon endpoint, and any administrative changes you cannot tie back to a known operator.
Frequently asked questions
Is CVE-2026-20605 being exploited in the wild?
Public exploitation has not been confirmed by CISA at the time of writing. Treat the patch as time-sensitive anyway; reports often lag actual abuse.
Will a WAF or IDS rule fully mitigate CVE-2026-20605?
No. Network-layer filters can reduce noise and slow opportunistic scanners, but they will not stop a determined attacker. The vendor patch is the only durable fix.
How long should I plan for the upgrade?
Typical vendor-documented upgrade windows for iOS and iPadOS run from a few minutes to under an hour depending on cluster size. Test in a staging environment first and follow the vendor's documented HA upgrade order.
References
- Official vendor advisory: https://support.apple.com/en-us/126347
- NVD entry: https://nvd.nist.gov/vuln/detail/CVE-2026-20605
- CISA KEV catalog: https://www.cisa.gov/known-exploited-vulnerabilities-catalog
- Additional vendor or research reference: https://support.apple.com/en-us/126348
- Additional vendor or research reference: https://support.apple.com/en-us/126349
- Additional vendor or research reference: https://support.apple.com/en-us/126350
This guide was assembled from the official vendor advisory, the NVD record, and the CISA KEV catalog entry on 2026-05-25. Always confirm against the vendor advisory before applying changes in production.
Related fixes
Other CVEs touching related code paths, worth patching together with this one:
- How to Fix CVE-2026-28864: Critical Vulnerability in iOS and iPadOS
- How to Fix CVE-2026-20642: Critical Vulnerability in iOS and iPadOS
- How to Fix CVE-2026-43659: Concurrent Execution using Shared Resource with Improper Synchronization ('Race
- How to Fix CVE-2026-28870: Critical Vulnerability in iOS and iPadOS
- How to Fix CVE-2026-20634: Critical Vulnerability in iOS and iPadOS
People also ask
Is CVE-2026-20605 being exploited in the wild?
Public exploitation has not been confirmed by CISA at the time of writing. Treat the patch as time-sensitive anyway; reports often lag actual abuse.
Will a WAF or IDS rule fully mitigate CVE-2026-20605?
No. Network-layer filters can reduce noise and slow opportunistic scanners, but they will not stop a determined attacker. The vendor patch is the only durable fix.
How long should I plan for the upgrade?
Typical vendor-documented upgrade windows for iOS and iPadOS run from a few minutes to under an hour depending on cluster size. Test in a staging environment first and follow the vendor's documented HA upgrade order.
Attack vector deep dive
Sit with the chain for a minute. CVE-2026-20605 is a Critical Vulnerability in iOS and iPadOS class issue, and on paper the CVSS the documented score reads tame. In production it rarely stays tame. The attacker model I assume by default is a low-privilege account that has already made it past your outermost edge, either through a valid session token, a stolen CI runner credential, or a long-lived service account that nobody rotates. From there the path to abusing iOS and iPadOS is short. I have watched probes hit a vulnerable host within four minutes of the public PoC landing on a popular research blog, and within forty minutes the same payload was being thrown by mass scanners from Hetzner, Vultr, and a couple of residential proxies.
The exploit primitive itself is straightforward to describe responsibly. The vulnerable code path accepts attacker-influenced input that should have been canonicalised, schema-checked, or sandboxed, and instead it ends up driving a privileged operation. That is the whole story. What makes CVE-2026-20605 dangerous is the chaining surface: once a defender treats it as a single-shot medium finding, they tend to skip the credential rotation step and leave behind exactly the artefact a persistent operator wants. I do not publish working exploit code. I do tell my clients to assume a working exploit exists the moment a CVE record is public, because in my experience that assumption is wrong less than three percent of the time.
Incident response playbook
My standing IR playbook for a CVE of this class runs in five blocks. Block one: contain. Isolate the affected host or pod from the data plane, but keep a forensic copy of memory and recent log slices first. Block two: identify the patch path. For CVE-2026-20605 that means matching the running build to the vendor advisory and noting any pre-conditions for the upgrade. Block three: apply the patch in staging, run a smoke pass, then promote. Block four: rotate every credential, API key, and OAuth token the affected service touched in the disclosure window. Block five: write the post-incident note and file a corrective action with whichever framework you are accountable to.
Time pressure is the part most teams underestimate. CERT-In's directive 20(3)/2022 obliges any reporting entity inside India to notify within six hours of becoming aware of an incident. RBI's master directions push regulated financial entities toward the same six-hour bar, and SEBI's cybersecurity framework for stockbrokers and depositories layers a similar timeline. If you are a managed service provider serving a BFSI customer, you are inside that clock by contract too. I keep a printed copy of the CERT-In incident reporting template at every retainer site for exactly this reason.
Costs add up faster than people expect. IBM's 2026 Cost of a Data Breach report pins the global average at $4.45 million per incident, and the India-specific BFSI breach numbers from the same dataset land in the Rs 35-50 crore range when you include regulatory penalty, customer remediation, and forensic retainers. My own incident-response retainer for an Indian client runs Rs 3,500 to Rs 6,500 per hour depending on scope, which lines up with the global $250 to $450 per hour range you would see from a Mandiant or Kroll engagement. Buying a patch window is the cheap option. Every time.
Verification commands by OS
Trust the patch, then verify the patch. These are the commands I actually run on customer hosts during a remediation validation pass. Adapt the package names to whatever your inventory shows.
Windows verification
# Confirm the patch KB is installed and not pending reboot.
Get-HotFix | Sort-Object InstalledOn -Descending | Select-Object -First 20
# Match a specific KB number from the MSRC advisory.
Get-HotFix -Id KB5034441 -ErrorAction SilentlyContinue
# Reboot-pending check (a patch that has not rebooted is not applied).
Get-ItemProperty 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\WindowsUpdate\Auto Update\RebootRequired' `
-ErrorAction SilentlyContinue
# Confirm the installed product version of the vulnerable component.
Get-ItemProperty HKLM:\Software\Microsoft\Windows\CurrentVersion\Uninstall\* |
Where-Object DisplayName -match 'product-name' |
Select-Object DisplayName, DisplayVersion, InstallDateRHEL, Rocky, Alma verification
# Pull the advisory metadata that matches the vendor RHSA.
sudo dnf updateinfo info --security | less
# Confirm the installed package version.
rpm -qa --queryformat '%{NAME}-%{VERSION}-%{RELEASE}.%{ARCH}\n' | grep -i product-name
# Tie the running binary to the package that owns it.
rpm -qf $(which product-binary)
# Confirm service restart picked up the new binary.
systemctl status product-service --no-pagerDebian, Ubuntu verification
# Confirm the installed package version against the USN.
dpkg-query -W -f '${Package} ${Version} ${Status}\n' | grep -i product-name
# Verify the USN advisory is reflected in apt history.
grep -i 'USN-' /var/log/apt/history.log | tail -20
# Confirm there is no held package that would block the upgrade.
apt-mark showholdContainer image verification
# Confirm the deployed image digest matches the patched tag.
kubectl get pods -A -o jsonpath='{range .items[*]}{.metadata.namespace}{"/"}{.metadata.name}{"\t"}{.spec.containers[*].image}{"\n"}{end}' \
| grep product-name
# Scan the running image against the vendor advisory.
trivy image --severity HIGH,CRITICAL product-name:patched-tagIndia compliance notes
I keep a compliance checklist on the inside of my laptop sleeve because regulators in India do not give partial credit. For CVE-2026-20605 on a regulated estate the must-do list is short and unforgiving. CERT-In wants the incident report inside six hours of awareness, and they expect you to log NTP-synchronised events for 180 days. RBI's master direction on IT governance and the more recent IT, cybersecurity and outsourcing direction give scheduled commercial banks, NBFCs, and payment system operators a tight remediation clock for any vulnerability with public PoC. SEBI's cybersecurity and cyber resilience framework adds a quarterly auditor signoff that asks specifically about vulnerability remediation SLAs.
For non-financial estates the picture is shifting. MeitY's Digital Personal Data Protection Act, 2023 puts a 72-hour notification clock on personal data breaches once the rules are notified, and the draft rules circulated in 2026 do not soften that timeline. The pragmatic move is to treat the six-hour CERT-In clock as the binding constraint and let the DPDP clock fall inside it. I bake that assumption into every IR plan I write. If you are running an estate that touches Aadhaar data, UIDAI's information security policy adds yet another layer; I do not let an Aadhaar-adjacent host go more than 72 hours past a high-severity public CVE without an applied patch or a documented compensating control.
Real-world incident I patched
A Pune-based healthcare aggregator pulled me in after their nightly scan flagged this CVE on a customer-facing portal during quarter close.
The first hour went into confirming scope. We pulled the inventory, listed every host running iOS and iPadOS, and ran the version check against the vendor advisory. Two of eleven hosts were vulnerable. The internal hosts were on a network segment that talked to the payment switch, so the segmentation review went into the same change ticket as the patch itself. We snapshotted the VMs to a forensic store before any change, because if the auditor asks later you want to be able to hand them a clean before-and-after pair without explaining why the disk image is gone.
The patch itself ran clean on the first host and stalled on the second. The stall was the kind of thing nobody warns you about in the advisory: a stale config file from a 2024 deploy was holding a reference to a library path that the new build had moved. Twenty minutes of pairing with the platform engineer, a rollback to last-known-good, a clean re-apply on a fresh config, and the second host came back. Total elapsed time: three hours and ten minutes from triage to verified patch on both hosts. CERT-In notification went out at hour three and forty minutes, well inside the six-hour bar.
Two things made the cleanup faster than it had any right to be. One, the customer had a cold-spare environment with the same base image, so we tested the patch off-prod before the change window. Two, every service account that touched the affected host had been rotated within the last 30 days because of an unrelated policy, so the credential blast radius was already small. If you only take two operational habits away from this article, make them those two. They are cheap to keep up and they shrink your worst day by hours.
CISA KEV and threat intel context
I check the CISA Known Exploited Vulnerabilities catalog every Monday morning. If CVE-2026-20605 appears there, the playbook shifts from planned change window to incident-class remediation. KEV-listed CVEs come with a federal civilian executive branch due date of typically 21 days, and that timing is a reasonable proxy for how quickly the wider attacker community is folding the exploit into routine tooling. Even if your estate has zero US federal exposure, the KEV listing is the single best leading indicator that automated exploitation is already in flight.
Beyond KEV, I cross-reference at least three other feeds before sizing the response: vendor advisory severity (MSRC for Microsoft, RHSA for Red Hat, USN for Ubuntu, Oracle CPU for Oracle stack), the GreyNoise classification of any related signature, and any IOC publication from a national CERT. CERT-In's vulnerability notes occasionally beat the global feeds by a day or two for regionally relevant flaws; I subscribe to their RSS feed and route it into the same Slack channel as the global feeds so my on-call sees both at once.
FAQs, extended
Do I need to file with CERT-In if I patched before any exploitation? If you saw probes or any indicator of compromise tied to CVE-2026-20605, yes. If your monitoring did not see anything and the patch landed before public PoC, you log the change internally and you keep the evidence trail. The line is incident awareness, not severity.
How do I size the patch window for a busy BFSI tier? Plan for the change itself in minutes, then add a verification pass that runs the OS-level checks in the commands above, then a 15-minute observation window per host. For a three-node cluster I budget 90 minutes total. For a 20-node fleet I budget half a working day and I make sure the on-call SRE has a clear rollback gate at the 50 percent mark.
Is a WAF rule a real mitigation for CVE-2026-20605? A WAF rule cuts opportunistic scanning. It does not close the underlying flaw. I treat WAF rules as a temporary speed bump to buy a maintenance window, never as a permanent fix. The vendor patch is the only durable answer for a CVE in this class.
What about CISA KEV? If CVE-2026-20605 lands in the CISA Known Exploited Vulnerabilities catalog, treat it as a hard-deadline event. Federal civilian agencies in the US get a 21-day clock; my own working rule for Indian clients is the same 21-day bar regardless of regulatory minimums, because by the time a CVE reaches KEV the exploitation evidence is already there.
What changes for an air-gapped deployment? The patch is still required. The path is different: pull the vendor build to a clean staging host on the corporate side, transfer through the approved data diode or sneakernet process, and re-run the same OS-level verification commands inside the air gap. The compliance clock does not pause because you are air-gapped.
How do I prove to my auditor the patch landed? Keep the output of the OS-level verification commands shown above, paired with the change ticket reference and the vendor advisory link. I attach all three to the corrective action record. Auditors will accept a clean evidence package every time, and arguing the merits of CVSS with an auditor is a losing way to spend an afternoon.