CVE-2023-28205
High · 8.8 CISA KEVCVSS
8.8
EPSS
27.1%
Published
Apr 10, 2023
CISA due date
May 1, 2023
Cloudanix analysis
Older Apple devices and browsers could be taken over simply by opening a malicious webpage, so they should be updated immediately.
- Exploitation
- Requires User Interaction
- Attacker needs
- User Interaction
- Complexity
- Low
- Impact
- Remote Code Execution
- Component
- Application
- Class
- Use After Free
- Remediation
- Upgrade
- Effort
- Medium
- Patch risk
- Low
What it actually does
CVE-2023-28205 is a WebKit use-after-free vulnerability affecting Safari, iOS/iPadOS, and macOS. When a vulnerable WebKit engine processes maliciously crafted web content, memory that has already been freed can be reused in an unsafe way, allowing an attacker to corrupt process memory and potentially execute arbitrary code in the context of the browser or web content process. The vulnerability is remotely reachable over the network, requires no authentication, and only requires user interaction such as opening a malicious webpage, link, embedded browser view, or attacker-controlled web content. Because WebKit is used beyond Safari in many Apple web-rendering contexts, exposure can extend to applications that display web content through Apple platform web views. Full device compromise typically requires chaining this bug with a sandbox escape or privilege escalation, but the flaw can still enable theft or manipulation of browser-accessible data and serve as an initial execution primitive.
Why it matters to the business
Successful exploitation can allow attackers to compromise Apple endpoints through web browsing activity, potentially leading to data theft, session hijacking, malware deployment, surveillance, or further lateral movement when combined with additional vulnerabilities. The issue is listed in CISA KEV, Apple reported active exploitation, and the CISA remediation deadline was 2023-05-01, so unpatched devices should be treated as high-priority exposure even though the vulnerability is older. The practical business risk is highest for organizations with unmanaged Apple devices, delayed mobile/macOS patching, high-risk users, or workflows that routinely open external links and web content.
How an attack unfolds
An attacker prepares web content that triggers the WebKit use-after-free condition. The content is hosted on a malicious website, injected into a compromised legitimate site, delivered through an advertisement, or sent directly as a link through email, messaging, social media, or another lure. When a user on a vulnerable Apple platform opens the content in Safari or another WebKit-based rendering context, WebKit mishandles memory during page processing. The attacker uses heap grooming and memory corruption techniques to gain control of execution within the affected process. From there, the attacker may run code with the privileges and sandbox restrictions of the browser content process, steal browser-accessible data, execute follow-on payloads, or chain the exploit with a sandbox escape or kernel/local privilege escalation for broader device compromise. Active exploitation was reported by Apple, and the vulnerability is tracked in KEV, so exploitation should be considered operationally realistic rather than theoretical.
How to fix it
Upgrade affected Apple products to versions that include Apple’s corrected memory management for this issue. Minimum fixed versions are Safari 16.4.1, iOS 15.7.5, iPadOS 15.7.5, iOS 16.4.1, iPadOS 16.4.1, and macOS Ventura 13.3.1; later supported versions are also expected to contain the fix. Prioritize devices that browse untrusted web content, handle sensitive data, or belong to high-risk users. Where immediate patching is not possible, reduce exposure by limiting access to untrusted websites, disabling or restricting automatic link previews, using web filtering and DNS security controls, limiting use of unmanaged browsers or embedded web views, and isolating high-risk browsing activity. Because this vulnerability was actively exploited and is in KEV, mitigation should not be considered a substitute for patching.
How to confirm the fix worked
Confirm that all affected systems are running fixed or later versions: Safari 16.4.1 or later, iOS/iPadOS 15.7.5 or later for the 15.x branch, iOS/iPadOS 16.4.1 or later for the 16.x branch, and macOS Ventura 13.3.1 or later. On macOS, validate using Software Update status, MDM inventory, Safari application version, and OS build reporting. On iOS and iPadOS, validate through MDM device inventory, OS version compliance policies, and update installation status. Test representative managed devices to ensure updates are installed and no deferral profiles are blocking remediation. For exposure validation, identify Apple devices below the fixed versions and applications that use WebKit-based rendering. For compensating controls, verify that web filtering, DNS controls, and browser isolation policies are active for devices that cannot immediately be upgraded.
Typical attack path
- Identify users or devices likely running vulnerable versions of Safari, iOS, iPadOS, or macOS.
- Create or acquire malicious web content that reliably triggers the WebKit use-after-free condition.
- Deliver the content through a malicious link, compromised website, malvertising, phishing message, or embedded web view workflow.
- Wait for a user to open or preview the crafted web content on a vulnerable Apple device.
- Trigger memory corruption in WebKit and gain arbitrary code execution in the web content/browser process.
- Run payload logic within the available sandbox, access browser/session data where possible, or stage additional tooling.
- Optionally chain with another vulnerability to escape the sandbox or elevate privileges for persistent or broader compromise.
- Exfiltrate data, deploy surveillance tooling, establish persistence, or use the compromised device as a foothold.
How to detect it
Detection is difficult because exploitation occurs through memory corruption in WebKit and may leave few stable indicators. Focus on behavior and timeline correlation rather than a single signature. Collect macOS DiagnosticReports, iOS/iPadOS crash analytics where available through device management or sysdiagnose, EDR telemetry, browser history, DNS logs, web proxy logs, email/link-protection logs, and network telemetry. Look for Safari, MobileSafari, or com.apple.WebKit.WebContent crashes involving EXC_BAD_ACCESS or KERN_INVALID_ADDRESS shortly after visits to suspicious, newly registered, compromised, or uncategorized domains. Correlate crashes with immediate follow-on behavior such as unexpected process execution, unsigned or unusual binaries, launch agents or daemons, configuration profile changes, persistence creation, credential access, suspicious outbound connections, or security tool tampering. On iOS/iPadOS, look for abnormal app crashes, unexpected device profiles, unusual battery/network activity, and any available crash logs referencing WebKit. Because active exploitation was reported and the issue is KEV-listed, any vulnerable device with suspicious WebKit crash activity followed by anomalous endpoint or network behavior should be triaged as a potential compromise.
- com.apple.WebKit.WebContent
- MobileSafari
- Safari
- WebKit
- EXC_BAD_ACCESS
- KERN_INVALID_ADDRESS
- /Library/Logs/DiagnosticReports/
- ~/Library/Logs/DiagnosticReports/
- com.apple.WebKit.WebContent_
- Safari_
- MobileSafari_
- WebContent_
- JetsamEvent
- ips
- crash
What your security team should do
- Immediately identify and remediate any Apple devices running Safari, iOS, iPadOS, or macOS versions older than the fixed releases, prioritizing internet-facing users, executives, administrators, developers, and high-risk roles.
- Treat unpatched exposure as urgent because the vulnerability is in CISA KEV, had a remediation deadline of 2023-05-01, and was reported as actively exploited in the wild.
- Use MDM or endpoint management tooling to enforce minimum OS and Safari versions and remove update deferrals that prevent installation of fixed releases.
- Hunt for signs of prior exploitation on vulnerable Apple endpoints, especially unexpected WebKit/Safari crashes followed by suspicious child processes, new persistence artifacts, unusual network connections, or post-exploitation activity.
- Review web proxy, DNS, EDR, and email security logs for users who visited suspicious or newly registered domains shortly before Safari/WebKit crashes or endpoint alerts.
- Apply stricter controls for devices that cannot be upgraded, including web filtering, isolation of high-risk browsing, blocking unknown link-preview behavior where feasible, and limiting access to sensitive applications from noncompliant devices.
- Communicate to users that unexpected links, pop-ups, or websites can compromise older Apple devices even without downloading a file, and encourage prompt reporting of suspicious browser behavior.
- For incident response, prioritize timelines around browser activity, WebKit crash logs, suspicious outbound connections, and any evidence of follow-on payload execution or persistence.
The record
A use after free issue was addressed with improved memory management. This issue is fixed in Safari 16.4.1, iOS 15.7.5 and iPadOS 15.7.5, iOS 16.4.1 and iPadOS 16.4.1, macOS Ventura 13.3.1. 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 |
|---|---|---|---|
| AlmaLinux:8 | webkit2gtk3 | 0 | 2.36.7-1.el8_7.3 |
| AlmaLinux:8 | webkit2gtk3 | 0 | 2.38.5-1.el8_8.3 |
| AlmaLinux:8 | webkit2gtk3-devel | 0 | 2.36.7-1.el8_7.3 |
| AlmaLinux:8 | webkit2gtk3-devel | 0 | 2.38.5-1.el8_8.3 |
| AlmaLinux:8 | webkit2gtk3-jsc | 0 | 2.36.7-1.el8_7.3 |
| AlmaLinux:8 | webkit2gtk3-jsc | 0 | 2.38.5-1.el8_8.3 |
| AlmaLinux:8 | webkit2gtk3-jsc-devel | 0 | 2.36.7-1.el8_7.3 |
| AlmaLinux:8 | webkit2gtk3-jsc-devel | 0 | 2.38.5-1.el8_8.3 |
| AlmaLinux:9 | webkit2gtk3 | 0 | 2.36.7-1.el9_1.3 |
| AlmaLinux:9 | webkit2gtk3 | 0 | 2.38.5-1.el9_2.1 |
| AlmaLinux:9 | webkit2gtk3-devel | 0 | 2.36.7-1.el9_1.3 |
| AlmaLinux:9 | webkit2gtk3-devel | 0 | 2.38.5-1.el9_2.1 |
| AlmaLinux:9 | webkit2gtk3-jsc | 0 | 2.36.7-1.el9_1.3 |
| AlmaLinux:9 | webkit2gtk3-jsc | 0 | 2.38.5-1.el9_2.1 |
| AlmaLinux:9 | webkit2gtk3-jsc-devel | 0 | 2.36.7-1.el9_1.3 |
| AlmaLinux:9 | webkit2gtk3-jsc-devel | 0 | 2.38.5-1.el9_2.1 |
| Debian:10 | webkit2gtk | 0 | 2.38.6-0+deb10u1 |
| Debian:11 | webkit2gtk | 0 | 2.40.1-1~deb11u1 |
| Debian:11 | wpewebkit | 0 | 2.38.6-1~deb11u1 |
| Debian:12 | webkit2gtk | 0 | 2.40.1-1 |
| Debian:12 | wpewebkit | 0 | 2.38.6-1 |
| Debian:13 | webkit2gtk | 0 | 2.40.1-1 |
| Debian:13 | wpewebkit | 0 | 2.38.6-1 |
| Debian:14 | webkit2gtk | 0 | 2.40.1-1 |
| Debian:14 | wpewebkit | 0 | 2.38.6-1 |
| Mageia:8 | webkit2 | 0 | 2.38.6-1.mga8 |
| Red Hat:enterprise_linux:8::appstream | webkit2gtk3 | 0 | 0:2.36.7-1.el8_7.3 |
| Red Hat:enterprise_linux:8::appstream | webkit2gtk3-debuginfo | 0 | 0:2.36.7-1.el8_7.3 |
| Red Hat:enterprise_linux:8::appstream | webkit2gtk3-debugsource | 0 | 0:2.36.7-1.el8_7.3 |
| Red Hat:enterprise_linux:8::appstream | webkit2gtk3-devel | 0 | 0:2.36.7-1.el8_7.3 |
| Red Hat:enterprise_linux:8::appstream | webkit2gtk3-devel-debuginfo | 0 | 0:2.36.7-1.el8_7.3 |
| Red Hat:enterprise_linux:8::appstream | webkit2gtk3-jsc | 0 | 0:2.36.7-1.el8_7.3 |
| Red Hat:enterprise_linux:8::appstream | webkit2gtk3-jsc-debuginfo | 0 | 0:2.36.7-1.el8_7.3 |
| Red Hat:enterprise_linux:8::appstream | webkit2gtk3-jsc-devel | 0 | 0:2.36.7-1.el8_7.3 |
| Red Hat:enterprise_linux:8::appstream | webkit2gtk3-jsc-devel-debuginfo | 0 | 0:2.36.7-1.el8_7.3 |
| Red Hat:enterprise_linux:9::appstream | webkit2gtk3 | 0 | 0:2.36.7-1.el9_1.3 |
| Red Hat:enterprise_linux:9::appstream | webkit2gtk3-debuginfo | 0 | 0:2.36.7-1.el9_1.3 |
| Red Hat:enterprise_linux:9::appstream | webkit2gtk3-debugsource | 0 | 0:2.36.7-1.el9_1.3 |
| Red Hat:enterprise_linux:9::appstream | webkit2gtk3-devel | 0 | 0:2.36.7-1.el9_1.3 |
| Red Hat:enterprise_linux:9::appstream | webkit2gtk3-devel-debuginfo | 0 | 0:2.36.7-1.el9_1.3 |
| Red Hat:enterprise_linux:9::appstream | webkit2gtk3-jsc | 0 | 0:2.36.7-1.el9_1.3 |
| Red Hat:enterprise_linux:9::appstream | webkit2gtk3-jsc-debuginfo | 0 | 0:2.36.7-1.el9_1.3 |
| Red Hat:enterprise_linux:9::appstream | webkit2gtk3-jsc-devel | 0 | 0:2.36.7-1.el9_1.3 |
| Red Hat:enterprise_linux:9::appstream | webkit2gtk3-jsc-devel-debuginfo | 0 | 0:2.36.7-1.el9_1.3 |
| Rocky Linux:8 | webkit2gtk3 | 0 | 0:2.36.7-1.el8_7.3 |
| Rocky Linux:9 | webkit2gtk3 | 0 | 0:2.36.7-1.el9_1.3 |
| SUSE:Enterprise Storage 7 | webkit2gtk3 | 0 | 2.38.6-150200.72.1 |
| SUSE:Enterprise Storage 7.1 | webkit2gtk3 | 0 | 2.38.6-150200.72.1 |
| SUSE:Linux Enterprise High Performance Computing 15 SP1-LTSS | webkit2gtk3 | 0 | 2.38.6-150000.3.139.1 |
| SUSE:Linux Enterprise High Performance Computing 15 SP2-LTSS | webkit2gtk3 | 0 | 2.38.6-150200.72.1 |
| SUSE:Linux Enterprise High Performance Computing 15 SP3-ESPOS | webkit2gtk3 | 0 | 2.38.6-150200.72.1 |
| SUSE:Linux Enterprise High Performance Computing 15 SP3-LTSS | webkit2gtk3 | 0 | 2.38.6-150200.72.1 |
| SUSE:Linux Enterprise Module for Basesystem 15 SP4 | webkit2gtk3-soup2 | 0 | 2.38.6-150400.4.39.1 |
| SUSE:Linux Enterprise Module for Desktop Applications 15 SP4 | webkit2gtk3 | 0 | 2.38.6-150400.4.39.1 |
| SUSE:Linux Enterprise Module for Development Tools 15 SP4 | webkit2gtk4 | 0 | 2.38.6-150400.4.39.1 |
| SUSE:Linux Enterprise Real Time 15 SP3 | webkit2gtk3 | 0 | 2.38.6-150200.72.1 |
| SUSE:Linux Enterprise Server 12 SP2-BCL | webkit2gtk3 | 0 | 2.38.6-2.136.1 |
| SUSE:Linux Enterprise Server 12 SP4-ESPOS | webkit2gtk3 | 0 | 2.38.6-2.136.1 |
| SUSE:Linux Enterprise Server 12 SP4-LTSS | webkit2gtk3 | 0 | 2.38.6-2.136.1 |
| SUSE:Linux Enterprise Server 12 SP5 | webkit2gtk3 | 0 | 2.38.6-2.136.1 |
| SUSE:Linux Enterprise Server 15 SP1-LTSS | webkit2gtk3 | 0 | 2.38.6-150000.3.139.1 |
| SUSE:Linux Enterprise Server 15 SP2-LTSS | webkit2gtk3 | 0 | 2.38.6-150200.72.1 |
| SUSE:Linux Enterprise Server 15 SP3-LTSS | webkit2gtk3 | 0 | 2.38.6-150200.72.1 |
| SUSE:Linux Enterprise Server for SAP Applications 12 SP4 | webkit2gtk3 | 0 | 2.38.6-2.136.1 |
| SUSE:Linux Enterprise Server for SAP Applications 12 SP5 | webkit2gtk3 | 0 | 2.38.6-2.136.1 |
| SUSE:Linux Enterprise Server for SAP Applications 15 SP1 | webkit2gtk3 | 0 | 2.38.6-150000.3.139.1 |
| SUSE:Linux Enterprise Server for SAP Applications 15 SP2 | webkit2gtk3 | 0 | 2.38.6-150200.72.1 |
| SUSE:Linux Enterprise Server for SAP Applications 15 SP3 | webkit2gtk3 | 0 | 2.38.6-150200.72.1 |
| SUSE:Linux Enterprise Software Development Kit 12 SP5 | webkit2gtk3 | 0 | 2.38.6-2.136.1 |
| SUSE:Manager Proxy 4.2 | webkit2gtk3 | 0 | 2.38.6-150200.72.1 |
| SUSE:Manager Server 4.2 | webkit2gtk3 | 0 | 2.38.6-150200.72.1 |
| SUSE:OpenStack Cloud 9 | webkit2gtk3 | 0 | 2.38.6-2.136.1 |
| SUSE:OpenStack Cloud Crowbar 9 | webkit2gtk3 | 0 | 2.38.6-2.136.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 | No fix |
| 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.38.6-0ubuntu0.20.04.1 |
| Ubuntu:20.04:LTS | wpewebkit | 0 | No fix |
| Ubuntu:22.04:LTS | qtwebkit-opensource-src | 0 | No fix |
| Ubuntu:22.04:LTS | webkit2gtk | 0 | 2.38.6-0ubuntu0.22.04.1 |
| 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 | webkit2gtk | 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.4 | webkit2gtk3 | 0 | 2.38.6-150400.4.39.1 |
| openSUSE:Leap 15.4 | webkit2gtk3 | 0 | 2.38.6-150200.72.1 |
| openSUSE:Leap 15.4 | webkit2gtk3-soup2 | 0 | 2.38.6-150400.4.39.1 |
| openSUSE:Leap 15.4 | webkit2gtk4 | 0 | 2.38.6-150400.4.39.1 |
Related vulnerabilities
- CVE-2025-43536 A use-after-free issue was addressed with improved memory management. Also affects webkit2gtk3
- CVE-2025-43531 A race condition was addressed with improved state handling. Also affects webkit2gtk3
- CVE-2025-43529 A use-after-free issue was addressed with improved memory management. Also affects webkit2gtk3
- CVE-2023-43000 A use-after-free issue was addressed with improved memory management. Also affects webkit2gtk3
- CVE-2025-43480 The issue was addressed with improved checks. Also affects webkit2gtk3
- CVE-2025-43458 This issue was addressed through improved state management. Also affects webkit2gtk3
- CVE-2025-43443 This issue was addressed with improved checks. Also affects webkit2gtk3
- CVE-2025-43432 A use-after-free issue was addressed with improved memory management. Also affects webkit2gtk3