CVE-2021-30666
High · 8.8 CISA KEVCVSS
8.8
EPSS
3.0%
Published
Sep 8, 2021
CISA due date
Nov 17, 2021
Cloudanix analysis
An iPhone that has not been updated could be taken over after the user opens a malicious web page or link.
- Exploitation
- Requires User Interaction
- Attacker needs
- User Interaction
- Complexity
- Low
- Impact
- Remote Code Execution
- Component
- Application
- Class
- Memory Corruption
- Remediation
- Upgrade
- Effort
- Medium
- Patch risk
- Low
What it actually does
This is a WebKit memory-corruption vulnerability in Apple iPhone OS/iOS where maliciously crafted web content can trigger a buffer overflow during browser content processing. Successful exploitation can allow arbitrary code execution in the context of the web content process; attackers commonly chain this class of bug with sandbox escape or privilege-escalation vulnerabilities to gain broader device control, access sensitive data, or deploy spyware. The vulnerability is remotely reachable over the network but requires user interaction, such as opening a malicious link, visiting a compromised site, or rendering attacker-controlled content inside an embedded web view.
Why it matters to the business
An unpatched affected iPhone can be compromised simply through malicious web content viewed by a user, creating risk of data theft, surveillance, account compromise, and operational disruption for executives, administrators, journalists, legal teams, and other high-value mobile users. Apple reported active exploitation, CISA added the issue to the Known Exploited Vulnerabilities catalog with a remediation deadline of 2021-11-17, and public reporting associates exploitation of related Apple WebKit issues with commercial spyware activity such as Candiru/SOURGUM/DevilsTongue, making rapid remediation important even though the current EPSS score is relatively low and stable.
How an attack unfolds
An attacker prepares web content that exercises the vulnerable WebKit code path and causes a buffer overflow. The attacker then delivers the content through a link in SMS, email, messaging apps, a compromised website, advertising content, or any application that renders web content using Apple WebKit. When the target opens or previews the content, WebKit processes the malicious page and memory corruption occurs. If exploitation is reliable, attacker-controlled code runs inside the browser or web content process. In a limited attack this may steal data available to the browser context; in more serious campaigns it is chained with additional vulnerabilities to escape the WebKit sandbox, elevate privileges, install surveillance tooling, persist where possible, and communicate with command-and-control infrastructure. Because this issue was reported as actively exploited, organizations should assume targeted exploitation was feasible before patches were broadly applied.
How to fix it
Update affected Apple iPhone OS/iOS devices to iOS 12.5.3 or later supported Apple security releases that include the improved memory handling fix. Prioritize internet-facing and high-risk mobile users, including executives, administrators, developers, legal, finance, government-facing staff, and users likely to be targeted by spyware operators. Devices that cannot be updated to a fixed, supported version should be retired, isolated from sensitive workflows, or placed under compensating controls such as reduced access to corporate resources. Use MDM to enforce minimum OS versions, block enrollment or access from noncompliant devices, and require rapid installation of Apple security updates. Where immediate patching is not possible, reduce exposure by limiting use of unknown links, restricting unmanaged browsers or apps with embedded web views where feasible, using protective DNS/web filtering, and increasing monitoring of mobile device compliance and suspicious network activity.
How to confirm the fix worked
Confirm through MDM, device inventory, or Apple device management telemetry that all affected iPhone OS/iOS devices report iOS 12.5.3 or a later supported version containing the fix. Validate that compliance policies reject or quarantine devices below the required OS level. Spot-check high-risk users and legacy devices that may not receive automatic updates. Review Apple security update records for the installed build and verify the device is no longer on an affected release. For exposure assessment, search asset inventories for legacy iPhone models and older iOS 12.x installations, then confirm they have installed iOS 12.5.3 or have been removed from sensitive access.
Typical attack path
- Identify users or devices likely to run an affected iOS/iPhone OS version.
- Host or inject maliciously crafted web content that triggers the WebKit buffer overflow.
- Deliver the content through phishing, SMS, messaging apps, malicious redirects, compromised websites, or embedded web views.
- Wait for the user to open or render the attacker-controlled content.
- Exploit memory corruption to execute code in the WebKit web content process.
- Optionally chain a sandbox escape or privilege-escalation exploit to gain broader device access.
- Collect browser-accessible data or deploy spyware/implant capabilities.
- Establish outbound communications, exfiltrate data, and attempt to minimize visible crashes or user-facing symptoms.
How to detect it
Reliable confirmation of exploitation can be difficult because iOS provides limited endpoint telemetry and advanced spyware operators often minimize artifacts. Focus on evidence around the period before patching: Apple diagnostic and crash logs, MDM security telemetry, mobile threat defense alerts, DNS/proxy/firewall logs, secure web gateway logs, and EDR/NDR records for paired or managed devices. Look for repeated or unusual crashes in Safari, MobileSafari, or WebKit web content processes, especially EXC_BAD_ACCESS or KERN_INVALID_ADDRESS crashes involving WebKit, WebCore, or JavaScriptCore shortly after visiting unknown URLs. Correlate those events with suspicious SMS/email links, redirects, newly observed domains, short links, unexpected outbound connections, device battery/thermal anomalies, sudden configuration changes, or reports of browser instability. For high-risk users, consider mobile forensic acquisition using trusted tooling and review for signs of spyware tradecraft, suspicious profiles, abnormal persistence mechanisms, unexpected VPN/proxy settings, and connections to infrastructure associated with targeted surveillance campaigns such as Candiru/SOURGUM/DevilsTongue if available from threat intelligence feeds. Absence of these artifacts does not prove non-exploitation.
- MobileSafari
- com.apple.WebKit.WebContent
- com.apple.WebKit.Networking
- EXC_BAD_ACCESS
- KERN_INVALID_ADDRESS
- JavaScriptCore
- WebCore
- WebKit
- JetsamEvent
- Safari crash
- WebKit crash
- iOS 12.5.2
- iOS 12.5.1
- iOS 12.5
- iOS 12.4
- Candiru
- SOURGUM
- DevilsTongue
What your security team should do
- Treat this as a high-priority exploited mobile browser vulnerability because it is in CISA KEV and Apple reported active exploitation.
- Use MDM to enforce iOS 12.5.3 or later supported fixed releases and block corporate access from devices that cannot meet the minimum version.
- Prioritize remediation for high-value and high-risk users who are more likely to be targeted by spyware or phishing campaigns.
- Hunt for signs of pre-patch exploitation, especially WebKit/Safari crashes followed by unusual outbound network activity or abnormal mobile device behavior.
- Collect and preserve mobile crash logs and relevant network telemetry for devices that were exposed before patching, recognizing that iOS forensic visibility may be limited.
- Retire or segregate unsupported legacy devices that cannot receive the fixed Apple release.
- Educate users to report unexpected browser crashes, suspicious links, and unusual device behavior, but do not rely on user awareness as the primary control.
- Monitor threat intelligence for Candiru/SOURGUM/DevilsTongue infrastructure or campaign indicators that may overlap with mobile WebKit exploitation.
The record
A buffer overflow issue was addressed with improved memory handling. This issue is fixed in iOS 12.5.3. Processing maliciously crafted web content may lead to arbitrary code execution. Apple is aware of a report that this issue may have been actively exploited..
Affected packages
| Ecosystem | Package | Introduced | Fixed |
|---|---|---|---|
| Debian:10 | webkit2gtk | 0 | 2.26.1-3~deb10u1 |
| Debian:11 | webkit2gtk | 0 | 2.26.1-2 |
| Debian:11 | wpewebkit | 0 | 2.26.3-1 |
| Debian:12 | webkit2gtk | 0 | 2.26.1-2 |
| Debian:12 | wpewebkit | 0 | 2.26.3-1 |
| Debian:13 | webkit2gtk | 0 | 2.26.1-2 |
| Debian:13 | wpewebkit | 0 | 2.26.3-1 |
| Debian:14 | webkit2gtk | 0 | 2.26.1-2 |
| Debian:14 | wpewebkit | 0 | 2.26.3-1 |
| Red Hat:enterprise_linux:7::client | webkitgtk4 | 0 | 0:2.28.2-2.el7 |
| Red Hat:enterprise_linux:7::client | webkitgtk4-debuginfo | 0 | 0:2.28.2-2.el7 |
| Red Hat:enterprise_linux:7::client | webkitgtk4-devel | 0 | 0:2.28.2-2.el7 |
| Red Hat:enterprise_linux:7::client | webkitgtk4-doc | 0 | 0:2.28.2-2.el7 |
| Red Hat:enterprise_linux:7::client | webkitgtk4-jsc | 0 | 0:2.28.2-2.el7 |
| Red Hat:enterprise_linux:7::client | webkitgtk4-jsc-devel | 0 | 0:2.28.2-2.el7 |
| Red Hat:enterprise_linux:7::computenode | webkitgtk4 | 0 | 0:2.28.2-2.el7 |
| Red Hat:enterprise_linux:7::computenode | webkitgtk4-debuginfo | 0 | 0:2.28.2-2.el7 |
| Red Hat:enterprise_linux:7::computenode | webkitgtk4-devel | 0 | 0:2.28.2-2.el7 |
| Red Hat:enterprise_linux:7::computenode | webkitgtk4-doc | 0 | 0:2.28.2-2.el7 |
| Red Hat:enterprise_linux:7::computenode | webkitgtk4-jsc | 0 | 0:2.28.2-2.el7 |
| Red Hat:enterprise_linux:7::computenode | webkitgtk4-jsc-devel | 0 | 0:2.28.2-2.el7 |
| Red Hat:enterprise_linux:7::server | webkitgtk4 | 0 | 0:2.28.2-2.el7 |
| Red Hat:enterprise_linux:7::server | webkitgtk4-debuginfo | 0 | 0:2.28.2-2.el7 |
| Red Hat:enterprise_linux:7::server | webkitgtk4-devel | 0 | 0:2.28.2-2.el7 |
| Red Hat:enterprise_linux:7::server | webkitgtk4-doc | 0 | 0:2.28.2-2.el7 |
| Red Hat:enterprise_linux:7::server | webkitgtk4-jsc | 0 | 0:2.28.2-2.el7 |
| Red Hat:enterprise_linux:7::server | webkitgtk4-jsc-devel | 0 | 0:2.28.2-2.el7 |
| Red Hat:enterprise_linux:7::workstation | webkitgtk4 | 0 | 0:2.28.2-2.el7 |
| Red Hat:enterprise_linux:7::workstation | webkitgtk4-debuginfo | 0 | 0:2.28.2-2.el7 |
| Red Hat:enterprise_linux:7::workstation | webkitgtk4-devel | 0 | 0:2.28.2-2.el7 |
| Red Hat:enterprise_linux:7::workstation | webkitgtk4-doc | 0 | 0:2.28.2-2.el7 |
| Red Hat:enterprise_linux:7::workstation | webkitgtk4-jsc | 0 | 0:2.28.2-2.el7 |
| Red Hat:enterprise_linux:7::workstation | webkitgtk4-jsc-devel | 0 | 0:2.28.2-2.el7 |
| Red Hat:enterprise_linux:8::appstream | LibRaw | 0 | 0:0.19.5-2.el8 |
| Red Hat:enterprise_linux:8::appstream | LibRaw-debuginfo | 0 | 0:0.19.5-2.el8 |
| Red Hat:enterprise_linux:8::appstream | LibRaw-debugsource | 0 | 0:0.19.5-2.el8 |
| Red Hat:enterprise_linux:8::appstream | LibRaw-devel | 0 | 0:0.19.5-2.el8 |
| Red Hat:enterprise_linux:8::appstream | LibRaw-samples-debuginfo | 0 | 0:0.19.5-2.el8 |
| Red Hat:enterprise_linux:8::appstream | gnome-settings-daemon | 0 | 0:3.32.0-11.el8 |
| Red Hat:enterprise_linux:8::appstream | gnome-settings-daemon-debuginfo | 0 | 0:3.32.0-11.el8 |
| Red Hat:enterprise_linux:8::appstream | gnome-settings-daemon-debugsource | 0 | 0:3.32.0-11.el8 |
| Red Hat:enterprise_linux:8::appstream | webkit2gtk3 | 0 | 0:2.28.4-1.el8 |
| Red Hat:enterprise_linux:8::appstream | webkit2gtk3-debuginfo | 0 | 0:2.28.4-1.el8 |
| Red Hat:enterprise_linux:8::appstream | webkit2gtk3-debugsource | 0 | 0:2.28.4-1.el8 |
| Red Hat:enterprise_linux:8::appstream | webkit2gtk3-devel | 0 | 0:2.28.4-1.el8 |
| Red Hat:enterprise_linux:8::appstream | webkit2gtk3-devel-debuginfo | 0 | 0:2.28.4-1.el8 |
| Red Hat:enterprise_linux:8::appstream | webkit2gtk3-jsc | 0 | 0:2.28.4-1.el8 |
| Red Hat:enterprise_linux:8::appstream | webkit2gtk3-jsc-debuginfo | 0 | 0:2.28.4-1.el8 |
| Red Hat:enterprise_linux:8::appstream | webkit2gtk3-jsc-devel | 0 | 0:2.28.4-1.el8 |
| Red Hat:enterprise_linux:8::appstream | webkit2gtk3-jsc-devel-debuginfo | 0 | 0:2.28.4-1.el8 |
| Red Hat:enterprise_linux:8::crb | LibRaw | 0 | 0:0.19.5-2.el8 |
| Red Hat:enterprise_linux:8::crb | LibRaw-debuginfo | 0 | 0:0.19.5-2.el8 |
| Red Hat:enterprise_linux:8::crb | LibRaw-debugsource | 0 | 0:0.19.5-2.el8 |
| Red Hat:enterprise_linux:8::crb | LibRaw-devel | 0 | 0:0.19.5-2.el8 |
| Red Hat:enterprise_linux:8::crb | LibRaw-samples-debuginfo | 0 | 0:0.19.5-2.el8 |
| Rocky Linux:8 | LibRaw | 0 | 0:0.19.5-2.el8 |
| Rocky Linux:8 | PackageKit | 0 | 0:1.1.12-6.el8 |
| Rocky Linux:8 | dleyna-renderer | 0 | 0:0.6.0-3.el8 |
| Rocky Linux:8 | frei0r-plugins | 0 | 0:1.6.1-7.el8 |
| Rocky Linux:8 | gnome-remote-desktop | 0 | 0:0.1.8-3.el8 |
| Rocky Linux:8 | gnome-session | 0 | 0:3.28.1-10.el8 |
| Rocky Linux:8 | gsettings-desktop-schemas | 0 | 0:3.32.0-5.el8 |
| Rocky Linux:8 | gtk3 | 0 | 0:3.22.30-6.el8 |
| Rocky Linux:8 | libsoup | 0 | 0:2.62.3-2.el8 |
| Rocky Linux:8 | pipewire | 0 | 0:0.3.6-1.el8 |
| Rocky Linux:8 | pipewire0.2 | 0 | 0:0.2.7-6.el8 |
| Rocky Linux:8 | potrace | 0 | 0:1.15-3.el8 |
| Rocky Linux:8 | pygobject3 | 0 | 0:3.28.3-2.el8 |
| Rocky Linux:8 | tracker | 0 | 0:2.1.5-2.el8 |
| Rocky Linux:8 | vte291 | 0 | 0:0.52.4-2.el8 |
| Rocky Linux:8 | webrtc-audio-processing | 0 | 0:0.3-9.el8 |
| Rocky Linux:8 | xdg-desktop-portal-gtk | 0 | 0:1.6.0-1.el8 |
| SUSE:Enterprise Storage 6 | webkit2gtk3 | 0 | 2.34.3-3.92.1 |
| SUSE:Enterprise Storage 7 | webkit2gtk3 | 0 | 2.34.3-23.3 |
| SUSE:HPE Helion OpenStack 8 | webkit2gtk3 | 0 | 2.34.3-2.82.1 |
| SUSE:Linux Enterprise High Performance Computing 15 SP1-ESPOS | webkit2gtk3 | 0 | 2.34.3-3.92.1 |
| SUSE:Linux Enterprise High Performance Computing 15 SP1-LTSS | webkit2gtk3 | 0 | 2.34.3-3.92.1 |
| SUSE:Linux Enterprise High Performance Computing 15 SP2-ESPOS | webkit2gtk3 | 0 | 2.34.3-23.3 |
| SUSE:Linux Enterprise High Performance Computing 15 SP2-LTSS | webkit2gtk3 | 0 | 2.34.3-23.3 |
| SUSE:Linux Enterprise High Performance Computing 15-ESPOS | webkit2gtk3 | 0 | 2.34.3-3.92.1 |
| SUSE:Linux Enterprise High Performance Computing 15-LTSS | webkit2gtk3 | 0 | 2.34.3-3.92.1 |
| SUSE:Linux Enterprise Module for Basesystem 15 SP3 | webkit2gtk3 | 0 | 2.34.3-23.3 |
| SUSE:Linux Enterprise Module for Desktop Applications 15 SP3 | webkit2gtk3 | 0 | 2.34.3-23.3 |
| SUSE:Linux Enterprise Real Time 15 SP2 | webkit2gtk3 | 0 | 2.34.3-23.3 |
| SUSE:Linux Enterprise Server 12 SP2-BCL | webkit2gtk3 | 0 | 2.34.3-2.82.1 |
| SUSE:Linux Enterprise Server 12 SP3-BCL | webkit2gtk3 | 0 | 2.34.3-2.82.1 |
| SUSE:Linux Enterprise Server 12 SP3-LTSS | webkit2gtk3 | 0 | 2.34.3-2.82.1 |
| SUSE:Linux Enterprise Server 12 SP4-LTSS | webkit2gtk3 | 0 | 2.34.3-2.82.1 |
| SUSE:Linux Enterprise Server 12 SP5 | webkit2gtk3 | 0 | 2.34.3-2.82.1 |
| SUSE:Linux Enterprise Server 15 SP1-BCL | webkit2gtk3 | 0 | 2.34.3-3.92.1 |
| SUSE:Linux Enterprise Server 15 SP1-LTSS | webkit2gtk3 | 0 | 2.34.3-3.92.1 |
| SUSE:Linux Enterprise Server 15 SP2-BCL | webkit2gtk3 | 0 | 2.34.3-23.3 |
| SUSE:Linux Enterprise Server 15 SP2-LTSS | webkit2gtk3 | 0 | 2.34.3-23.3 |
| SUSE:Linux Enterprise Server 15-LTSS | webkit2gtk3 | 0 | 2.34.3-3.92.1 |
| SUSE:Linux Enterprise Server for SAP Applications 12 SP3 | webkit2gtk3 | 0 | 2.34.3-2.82.1 |
| SUSE:Linux Enterprise Server for SAP Applications 12 SP4 | webkit2gtk3 | 0 | 2.34.3-2.82.1 |
| SUSE:Linux Enterprise Server for SAP Applications 12 SP5 | webkit2gtk3 | 0 | 2.34.3-2.82.1 |
| SUSE:Linux Enterprise Server for SAP Applications 15 | webkit2gtk3 | 0 | 2.34.3-3.92.1 |
| SUSE:Linux Enterprise Server for SAP Applications 15 SP1 | webkit2gtk3 | 0 | 2.34.3-3.92.1 |
| SUSE:Linux Enterprise Server for SAP Applications 15 SP2 | webkit2gtk3 | 0 | 2.34.3-23.3 |
| SUSE:Linux Enterprise Software Development Kit 12 SP5 | webkit2gtk3 | 0 | 2.34.3-2.82.1 |
| SUSE:Manager Proxy 4.1 | webkit2gtk3 | 0 | 2.34.3-23.3 |
| SUSE:Manager Retail Branch Server 4.1 | webkit2gtk3 | 0 | 2.34.3-23.3 |
| SUSE:Manager Server 4.1 | webkit2gtk3 | 0 | 2.34.3-23.3 |
| SUSE:OpenStack Cloud 8 | webkit2gtk3 | 0 | 2.34.3-2.82.1 |
| SUSE:OpenStack Cloud 9 | webkit2gtk3 | 0 | 2.34.3-2.82.1 |
| SUSE:OpenStack Cloud Crowbar 8 | webkit2gtk3 | 0 | 2.34.3-2.82.1 |
| SUSE:OpenStack Cloud Crowbar 9 | webkit2gtk3 | 0 | 2.34.3-2.82.1 |
| Ubuntu:16.04:LTS | qtwebkit-opensource-src | 0 | No fix |
| Ubuntu:16.04:LTS | qtwebkit-source | 0 | No fix |
| Ubuntu:16.04:LTS | webkit2gtk | 0 | No fix |
| Ubuntu:16.04:LTS | webkitgtk | 0 | No fix |
| Ubuntu:18.04:LTS | qtwebkit-opensource-src | 0 | No fix |
| Ubuntu:18.04:LTS | qtwebkit-source | 0 | No fix |
| Ubuntu:18.04:LTS | webkit2gtk | 0 | 2.26.1-0ubuntu0.18.04.1 |
| Ubuntu:18.04:LTS | webkitgtk | 0 | No fix |
| Ubuntu:20.04:LTS | qtwebkit-opensource-src | 0 | No fix |
| Ubuntu:20.04:LTS | webkit2gtk | 0 | 2.26.1-3 |
| Ubuntu:20.04:LTS | wpewebkit | 0 | No fix |
| Ubuntu:22.04:LTS | qtwebkit-opensource-src | 0 | No fix |
| Ubuntu:22.04:LTS | wpewebkit | 0 | No fix |
| Ubuntu:24.04:LTS | qtwebkit-opensource-src | 0 | No fix |
| Ubuntu:Pro:16.04:LTS | qtwebkit-opensource-src | 0 | No fix |
| Ubuntu:Pro:16.04:LTS | qtwebkit-source | 0 | No fix |
| Ubuntu:Pro:16.04:LTS | webkit2gtk | 0 | No fix |
| Ubuntu:Pro:16.04:LTS | webkitgtk | 0 | No fix |
| Ubuntu:Pro:18.04:LTS | qtwebkit-opensource-src | 0 | No fix |
| Ubuntu:Pro:18.04:LTS | qtwebkit-source | 0 | No fix |
| Ubuntu:Pro:18.04:LTS | webkitgtk | 0 | No fix |
| Ubuntu:Pro:20.04:LTS | qtwebkit-opensource-src | 0 | No fix |
| Ubuntu:Pro:20.04:LTS | wpewebkit | 0 | No fix |
| Ubuntu:Pro:22.04:LTS | qtwebkit-opensource-src | 0 | No fix |
| Ubuntu:Pro:22.04:LTS | wpewebkit | 0 | No fix |
| Ubuntu:Pro:24.04:LTS | qtwebkit-opensource-src | 0 | No fix |
| openSUSE:Leap 15.3 | webkit2gtk3 | 0 | 2.34.3-23.3 |
| openSUSE:Tumbleweed | gtk3 | 0 | 2.32.4-1.1 |
Related vulnerabilities
- CVE-2024-27834 The issue was addressed with improved checks. Also affects webkit2gtk
- CVE-2024-23280 An injection issue was addressed with improved validation. Also affects webkit2gtk
- CVE-2024-23284 A logic issue was addressed with improved state management. Also affects webkit2gtk
- CVE-2024-23263 A logic issue was addressed with improved validation. Also affects webkit2gtk
- CVE-2024-23254 The issue was addressed with improved UI handling. Also affects webkit2gtk
- CVE-2024-23213 The issue was addressed with improved memory handling. Also affects webkit2gtk
- CVE-2024-23222 A type confusion issue was addressed with improved checks. Also affects webkit2gtk
- CVE-2024-23206 An access issue was addressed with improved access restrictions. Also affects webkit2gtk