CVE-2021-30761
High · 8.8 CISA KEVCVSS
8.8
EPSS
10.5%
Published
Sep 8, 2021
CISA due date
Nov 17, 2021
Cloudanix analysis
An outdated iPhone could be taken over simply by opening malicious web content, so affected devices must be updated or removed from use.
- 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
CVE-2021-30761 is a WebKit memory corruption vulnerability affecting Apple iPhone OS/iOS. When a vulnerable device processes maliciously crafted web content, memory state can be corrupted in a way that allows attacker-controlled code to execute. Exploitation requires user interaction, such as visiting a malicious page or opening content that renders through WebKit, but does not require authentication or prior device access. Successful exploitation can compromise confidentiality, integrity, and availability, and may be combined with sandbox escape or privilege escalation vulnerabilities to achieve broader device control.
Why it matters to the business
A successful exploit can allow attackers to compromise iPhones through malicious web content, enabling surveillance, data theft, account compromise, or follow-on malware deployment. Because this vulnerability is in CISA KEV, has documented active exploitation, and had a CISA remediation deadline of 2021-11-17, unpatched legacy devices should be treated as high-risk even though the vulnerability is old. Organizations that still allow affected iOS versions may face operational disruption, exposure of sensitive communications, and elevated risk from commercial spyware or targeted intrusion campaigns.
How an attack unfolds
An attacker prepares web content that triggers the WebKit memory corruption condition. The attacker then delivers that content through a link, redirect, compromised website, embedded browser view, message, email, or another application that causes WebKit to render the payload. When the vulnerable device processes the content, the memory corruption is triggered and attacker code can execute in the context of the WebKit web content process. In real-world campaigns, including activity associated with commercial spyware vendors such as Candiru/SOURGUM/DevilsTongue, this type of browser exploit is commonly chained with additional vulnerabilities to escape the browser sandbox, elevate privileges, collect device data, and establish monitoring or command-and-control capability. Exploitation may leave few obvious user-visible signs beyond browser crashes, unusual battery or network behavior, or mobile threat defense alerts.
How to fix it
Update affected devices to iOS 12.5.4 or later. For devices that cannot be upgraded to a fixed iOS release, remove them from enterprise use or restrict them from accessing sensitive services. Apply Apple security updates across all supported iOS/iPadOS/macOS devices because WebKit vulnerabilities can affect multiple Apple products and all browsers on iOS rely on WebKit. As interim risk reduction, limit exposure to untrusted web content, block known malicious domains and redirects, use mobile threat defense where available, and enforce MDM compliance rules that prevent outdated iOS versions from accessing organizational resources.
How to confirm the fix worked
Confirm through MDM, device inventory, or local device settings that all affected iPhones are running iOS 12.5.4 or later. Validate that compliance policies quarantine or block devices below the fixed version. Review vulnerability management and mobile device management reports for any remaining devices on iOS versions earlier than 12.5.4. Where network controls are used, test that outdated devices cannot access sensitive applications. For forensic validation, review device crash diagnostics and mobile threat defense telemetry for WebKit or Safari crashes and suspicious web redirects before the upgrade date.
Typical attack path
- Identify targets using vulnerable iOS/iPhone OS versions prior to the fixed release.
- Create or obtain malicious web content that triggers the WebKit memory corruption flaw.
- Deliver the content through a malicious link, redirect, compromised site, message, email, or in-app web view.
- Wait for the user or application to render the malicious content through WebKit.
- Achieve arbitrary code execution in the WebKit web content process.
- Optionally chain with sandbox escape or privilege escalation exploits to gain broader device access.
- Collect data, deploy spyware capabilities, establish command-and-control, or perform additional post-exploitation activity.
How to detect it
To assess prior exploitation, correlate mobile device inventory with web, DNS, proxy, MDM, and mobile threat defense telemetry for the period before devices were upgraded. Focus on devices running iOS versions earlier than 12.5.4 that show Safari, WebKit, or in-app browser crashes shortly after visiting unusual domains, redirects, shortened links, or newly observed infrastructure. Review iOS crash diagnostics for repeated crashes of WebKit-related processes, especially around suspicious browsing events. Inspect MDM and device security telemetry for unexpected configuration profiles, certificates, VPN settings, managed app changes, jailbreak indicators, abnormal battery drain, unusual outbound connections, or mobile threat defense spyware alerts. Where available, compare network destinations against threat intelligence for Candiru/SOURGUM/DevilsTongue and commercial spyware infrastructure. Absence of logs is not proof of non-exploitation because mobile browser exploitation and spyware delivery often leave limited artifacts.
- iOS version earlier than 12.5.4
- MobileSafari
- com.apple.WebKit.WebContent
- WebKit
- WebContent
- /private/var/mobile/Library/Logs/CrashReporter/
- JetsamEvent
- LowMemory
- unexpected configuration profile
- unknown configuration profile
- untrusted root certificate
- unknown VPN configuration
- Candiru
- SOURGUM
- DevilsTongue
What your security team should do
- Prioritize immediate identification and removal or upgrade of any iPhones running iOS versions earlier than 12.5.4.
- Treat vulnerable legacy devices as high-risk because this issue is KEV-listed and known to have been exploited in the wild.
- Enforce MDM compliance policies that block outdated iOS versions from email, messaging, identity, VPN, and sensitive business applications.
- Review historical telemetry for WebKit, Safari, and in-app browser crashes followed by unusual network activity or device behavior.
- Use mobile threat defense, DNS, proxy, and EDR-like mobile telemetry to investigate suspicious redirects, spyware indicators, and unknown configuration profiles.
- Retire unsupported devices that cannot receive the fixed release.
- Educate users that links in messages, emails, and web pages can be used to compromise mobile devices, especially when devices are not updated.
The record
A memory corruption issue was addressed with improved state management. This issue is fixed in iOS 12.5.4. 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 |
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