CVE-2020-3899
High · 8.8CVSS
8.8
EPSS
4.1%
Published
Apr 1, 2020
CISA due date
—
Cloudanix analysis
A problem in Apple software lets attackers run their own code on devices simply by getting someone to visit a malicious website.
- Exploitation
- Requires User Interaction
- Attacker needs
- User Interaction
- Complexity
- Low
- Impact
- Remote Code Execution
- Component
- Library
- Class
- Memory Corruption
- Remediation
- Upgrade
- Effort
- Medium
- Patch risk
- Low
What it actually does
Memory consumption flaw in WebKit allows remote attackers to trigger arbitrary code execution via crafted content due to improper memory handling.
Why it matters to the business
Attackers could gain control of user devices across the Apple ecosystem, resulting in data theft, unauthorized access, or further compromise of personal and enterprise systems that remain unpatched after years of availability.
How an attack unfolds
An attacker crafts malicious web content that triggers excessive memory consumption in WebKit, leading to memory corruption and subsequent arbitrary code execution when rendered in Safari, iCloud, iTunes, or other affected Apple products.
How to fix it
Upgrade affected products to the fixed releases: iOS 13.4 and iPadOS 13.4, tvOS 13.4, watchOS 6.2, Safari 13.1, iTunes for Windows 12.10.5, iCloud for Windows 10.9.3, or iCloud for Windows 7.18. Disable automatic rendering of web content from untrusted sources until updates are applied.
How to confirm the fix worked
Confirm installed versions of Safari, iOS, iPadOS, tvOS, watchOS, iTunes, and iCloud match or exceed the listed fixed releases; test rendering of known trigger content in isolated environments to verify no crash or unexpected memory growth occurs.
Typical attack path
- Craft and host malicious webpage exploiting WebKit memory handling
- Lure victim to visit the page via phishing or compromised site
- Trigger memory corruption leading to code execution in the browser or related process
- Establish persistence or exfiltrate data on the compromised device
How to detect it
Inspect system and application logs for WebKit crashes or excessive memory allocation events around the time of web browsing; correlate with browser history for suspicious external domains.
What your security team should do
- Prioritize patching all listed Apple products immediately given the remote code execution impact and long public exposure
- Block or sandbox WebKit-based browsing for high-risk users until updates are deployed
- Review endpoint logs for WebKit process anomalies and integrate version checks into asset management
The record
A memory consumption issue was addressed with improved memory handling. This issue is fixed in iOS 13.4 and iPadOS 13.4, tvOS 13.4, watchOS 6.2, Safari 13.1, iTunes for Windows 12.10.5, iCloud for Windows 10.9.3, iCloud for Windows 7.18. A remote attacker may be able to cause arbitrary code execution.
Affected packages
| Ecosystem | Package | Introduced | Fixed |
|---|---|---|---|
| AlmaLinux:8 | LibRaw-devel | 0 | 0.19.5-2.el8 |
| AlmaLinux:8 | PackageKit | 0 | 1.1.12-6.el8 |
| AlmaLinux:8 | PackageKit-command-not-found | 0 | 1.1.12-6.el8 |
| AlmaLinux:8 | PackageKit-cron | 0 | 1.1.12-6.el8 |
| AlmaLinux:8 | PackageKit-glib | 0 | 1.1.12-6.el8 |
| AlmaLinux:8 | PackageKit-glib-devel | 0 | 1.1.12-6.el8 |
| AlmaLinux:8 | PackageKit-gstreamer-plugin | 0 | 1.1.12-6.el8 |
| AlmaLinux:8 | PackageKit-gtk3-module | 0 | 1.1.12-6.el8 |
| AlmaLinux:8 | dleyna-renderer | 0 | 0.6.0-3.el8 |
| AlmaLinux:8 | frei0r-devel | 0 | 1.6.1-7.el8 |
| AlmaLinux:8 | frei0r-plugins | 0 | 1.6.1-7.el8 |
| AlmaLinux:8 | frei0r-plugins-opencv | 0 | 1.6.1-7.el8 |
| AlmaLinux:8 | gnome-remote-desktop | 0 | 0.1.8-3.el8 |
| AlmaLinux:8 | gtk-doc | 0 | 1.28-2.el8 |
| AlmaLinux:8 | gvfs | 0 | 1.36.2-10.el8 |
| AlmaLinux:8 | libsoup | 0 | 2.62.3-2.el8 |
| AlmaLinux:8 | libsoup-devel | 0 | 2.62.3-2.el8 |
| AlmaLinux:8 | mutter-devel | 0 | 3.32.2-48.el8 |
| AlmaLinux:8 | nautilus | 0 | 3.28.1-14.el8 |
| AlmaLinux:8 | nautilus-devel | 0 | 3.28.1-14.el8 |
| AlmaLinux:8 | pipewire | 0 | 0.3.6-1.el8 |
| AlmaLinux:8 | pipewire-devel | 0 | 0.3.6-1.el8 |
| AlmaLinux:8 | pipewire-doc | 0 | 0.3.6-1.el8 |
| AlmaLinux:8 | pipewire-libs | 0 | 0.3.6-1.el8 |
| AlmaLinux:8 | pipewire-utils | 0 | 0.3.6-1.el8 |
| AlmaLinux:8 | pipewire0.2-devel | 0 | 0.2.7-6.el8 |
| AlmaLinux:8 | pipewire0.2-libs | 0 | 0.2.7-6.el8 |
| AlmaLinux:8 | potrace | 0 | 1.15-3.el8 |
| AlmaLinux:8 | pygobject3-devel | 0 | 3.28.3-2.el8 |
| AlmaLinux:8 | python3-gobject | 0 | 3.28.3-2.el8 |
| AlmaLinux:8 | python3-gobject-base | 0 | 3.28.3-2.el8 |
| AlmaLinux:8 | tracker | 0 | 2.1.5-2.el8 |
| AlmaLinux:8 | tracker-devel | 0 | 2.1.5-2.el8 |
| AlmaLinux:8 | vte-profile | 0 | 0.52.4-2.el8 |
| AlmaLinux:8 | vte291 | 0 | 0.52.4-2.el8 |
| AlmaLinux:8 | vte291-devel | 0 | 0.52.4-2.el8 |
| AlmaLinux:8 | webrtc-audio-processing | 0 | 0.3-9.el8 |
| AlmaLinux:8 | xdg-desktop-portal-gtk | 0 | 1.6.0-1.el8 |
| Debian:10 | webkit2gtk | 0 | 2.28.2-2~deb10u1 |
| Debian:11 | webkit2gtk | 0 | 2.28.2-1 |
| Debian:11 | wpewebkit | 0 | 2.28.2-1 |
| Debian:12 | webkit2gtk | 0 | 2.28.2-1 |
| Debian:12 | wpewebkit | 0 | 2.28.2-1 |
| Debian:13 | webkit2gtk | 0 | 2.28.2-1 |
| Debian:13 | wpewebkit | 0 | 2.28.2-1 |
| Debian:14 | webkit2gtk | 0 | 2.28.2-1 |
| Debian:14 | wpewebkit | 0 | 2.28.2-1 |
| Mageia:7 | webkit2 | 0 | 2.28.2-1.mga7 |
| 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 5 | webkit2gtk3 | 0 | 2.28.2-2.53.2 |
| SUSE:HPE Helion OpenStack 8 | webkit2gtk3 | 0 | 2.28.2-2.53.2 |
| SUSE:Linux Enterprise High Performance Computing 15-ESPOS | webkit2gtk3 | 0 | 2.28.2-3.54.1 |
| SUSE:Linux Enterprise High Performance Computing 15-LTSS | webkit2gtk3 | 0 | 2.28.2-3.54.1 |
| SUSE:Linux Enterprise Module for Basesystem 15 SP1 | webkit2gtk3 | 0 | 2.28.2-3.54.1 |
| SUSE:Linux Enterprise Module for Desktop Applications 15 SP1 | webkit2gtk3 | 0 | 2.28.2-3.54.1 |
| SUSE:Linux Enterprise Server 12 SP2-BCL | webkit2gtk3 | 0 | 2.28.2-2.53.2 |
| SUSE:Linux Enterprise Server 12 SP2-LTSS | webkit2gtk3 | 0 | 2.28.2-2.53.2 |
| SUSE:Linux Enterprise Server 12 SP3-BCL | webkit2gtk3 | 0 | 2.28.2-2.53.2 |
| SUSE:Linux Enterprise Server 12 SP3-LTSS | webkit2gtk3 | 0 | 2.28.2-2.53.2 |
| SUSE:Linux Enterprise Server 12 SP4 | webkit2gtk3 | 0 | 2.28.2-2.53.2 |
| SUSE:Linux Enterprise Server 12 SP5 | webkit2gtk3 | 0 | 2.28.2-2.53.2 |
| SUSE:Linux Enterprise Server 15-LTSS | webkit2gtk3 | 0 | 2.28.2-3.54.1 |
| SUSE:Linux Enterprise Server for SAP Applications 12 SP2 | webkit2gtk3 | 0 | 2.28.2-2.53.2 |
| SUSE:Linux Enterprise Server for SAP Applications 12 SP3 | webkit2gtk3 | 0 | 2.28.2-2.53.2 |
| SUSE:Linux Enterprise Server for SAP Applications 12 SP4 | webkit2gtk3 | 0 | 2.28.2-2.53.2 |
| SUSE:Linux Enterprise Server for SAP Applications 12 SP5 | webkit2gtk3 | 0 | 2.28.2-2.53.2 |
| SUSE:Linux Enterprise Server for SAP Applications 15 | webkit2gtk3 | 0 | 2.28.2-3.54.1 |
| SUSE:Linux Enterprise Software Development Kit 12 SP4 | webkit2gtk3 | 0 | 2.28.2-2.53.2 |
| SUSE:Linux Enterprise Software Development Kit 12 SP5 | webkit2gtk3 | 0 | 2.28.2-2.53.2 |
| SUSE:Linux Enterprise Workstation Extension 12 SP4 | webkit2gtk3 | 0 | 2.28.2-2.53.2 |
| SUSE:OpenStack Cloud 7 | webkit2gtk3 | 0 | 2.28.2-2.53.2 |
| SUSE:OpenStack Cloud 8 | webkit2gtk3 | 0 | 2.28.2-2.53.2 |
| SUSE:OpenStack Cloud Crowbar 8 | webkit2gtk3 | 0 | 2.28.2-2.53.2 |
| 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.28.2-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.28.2-0ubuntu0.20.04.1 |
| Ubuntu:22.04:LTS | qtwebkit-opensource-src | 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:22.04:LTS | qtwebkit-opensource-src | 0 | No fix |
| Ubuntu:Pro:24.04:LTS | qtwebkit-opensource-src | 0 | No fix |
| openSUSE:Leap 15.1 | webkit2gtk3 | 0 | 2.28.2-lp151.2.18.1 |
| openSUSE:Tumbleweed | gtk3 | 0 | 2.32.4-1.1 |
Related vulnerabilities
- CVE-2021-30663 An integer overflow was addressed with improved input validation. Also affects LibRaw-devel
- CVE-2021-30665 A memory corruption issue was addressed with improved state management. Also affects LibRaw-devel
- CVE-2021-21775 A use-after-free vulnerability exists in the way certain events are processed for… Also affects LibRaw-devel
- CVE-2021-1870 A logic issue was addressed with improved restrictions. Also affects LibRaw-devel
- CVE-2021-1871 A logic issue was addressed with improved restrictions. Also affects LibRaw-devel
- CVE-2021-1788 A use after free issue was addressed with improved memory management. Also affects LibRaw-devel
- CVE-2021-1789 A type confusion issue was addressed with improved state handling. Also affects LibRaw-devel
- CVE-2020-13558 A code execution vulnerability exists in the AudioSourceProviderGStreamer functionality… Also affects LibRaw-devel