CVE-2021-21775
High · 8.0CVSS
8.0
EPSS
1.3%
Published
Jul 7, 2021
CISA due date
—
Cloudanix analysis
A bug in the way some web browsers handle images can let attackers steal information or take over a computer if someone visits a harmful website.
- Exploitation
- Requires User Interaction
- Attacker needs
- User Interaction
- Complexity
- Moderate
- Impact
- Full Compromise
- Component
- Library
- Class
- Use After Free
- Remediation
- Upgrade
- Effort
- Medium
- Patch risk
- Low
What it actually does
Use-after-free in ImageLoader event processing allows a malicious web page to trigger memory corruption and information disclosure after the object is freed.
Why it matters to the business
Attackers can steal sensitive data or execute arbitrary code on user systems simply by getting a user to visit a malicious website, leading to potential data breaches and loss of control over affected devices.
How an attack unfolds
An attacker crafts a malicious webpage that triggers specific events on ImageLoader objects in WebKitGTK. When a victim visits the page, the use-after-free is triggered, enabling memory corruption that can be leveraged for information leaks or further exploitation to achieve code execution. Known threat actors such as Candiru have targeted similar WebKit memory corruption issues.
How to fix it
Upgrade WebKitGTK to a version that resolves the use-after-free in ImageLoader event handling. Apply all available security updates for webkitgtk on Fedora, Debian, and other affected distributions. Disable JavaScript or use browser sandboxing where updates cannot be applied immediately.
How to confirm the fix worked
Verify that the installed WebKitGTK version is newer than 2.30.4 and that no vulnerable ImageLoader event paths remain. Re-scan affected systems with updated vulnerability scanners and confirm absence of the vulnerable code patterns in the library binaries.
Typical attack path
- Attacker hosts a specially crafted malicious webpage exploiting the ImageLoader use-after-free
- Victim is tricked into visiting the webpage (e.g., via phishing or compromised site)
- Page loads and triggers events that cause the use-after-free and memory corruption
- Attacker uses the resulting primitive for information disclosure or to corrupt memory for code execution
How to detect it
Review web browser process crash logs and memory dumps for signs of corruption in ImageLoader handling. Correlate with web proxy logs showing visits to previously unknown or suspicious domains. Search system logs for unexpected WebKitGTK crashes shortly after web page loads.
What your security team should do
- Prioritize patching WebKitGTK on all systems within the next 30 days given the public exploit availability
- Block known malicious domains associated with Candiru and similar actors in web proxies and email filters
- Enable browser content sandboxing and restrict JavaScript execution on untrusted sites
- Monitor EPSS trend for any increase indicating rising exploit likelihood
The record
A use-after-free vulnerability exists in the way certain events are processed for ImageLoader objects of Webkit WebKitGTK 2.30.4. A specially crafted web page can lead to a potential information leak and further memory corruption. In order to trigger the vulnerability, a victim must be tricked into visiting a malicious webpage.
Affected packages
| Ecosystem | Package | Introduced | Fixed |
|---|---|---|---|
| AlmaLinux:8 | LibRaw | 0 | 0.19.5-3.el8 |
| AlmaLinux:8 | LibRaw-devel | 0 | 0.19.5-3.el8 |
| AlmaLinux:8 | accountsservice | 0 | 0.6.55-2.el8 |
| AlmaLinux:8 | accountsservice-devel | 0 | 0.6.55-2.el8 |
| AlmaLinux:8 | accountsservice-libs | 0 | 0.6.55-2.el8 |
| AlmaLinux:8 | gdm | 0 | 1:40.0-15.el8 |
| AlmaLinux:8 | gnome-autoar | 0 | 0.2.3-2.el8 |
| AlmaLinux:8 | gnome-calculator | 0 | 3.28.2-2.el8 |
| AlmaLinux:8 | gnome-classic-session | 0 | 3.32.1-20.el8 |
| AlmaLinux:8 | gnome-control-center | 0 | 3.28.2-28.el8 |
| AlmaLinux:8 | gnome-control-center-filesystem | 0 | 3.28.2-28.el8 |
| AlmaLinux:8 | gnome-online-accounts | 0 | 3.28.2-3.el8 |
| AlmaLinux:8 | gnome-online-accounts-devel | 0 | 3.28.2-3.el8 |
| AlmaLinux:8 | gnome-session | 0 | 3.28.1-13.el8 |
| AlmaLinux:8 | gnome-session-kiosk-session | 0 | 3.28.1-13.el8 |
| AlmaLinux:8 | gnome-session-wayland-session | 0 | 3.28.1-13.el8 |
| AlmaLinux:8 | gnome-session-xsession | 0 | 3.28.1-13.el8 |
| AlmaLinux:8 | gnome-settings-daemon | 0 | 3.32.0-16.el8.alma |
| AlmaLinux:8 | gnome-shell | 0 | 3.32.2-40.el8 |
| AlmaLinux:8 | gnome-shell-extension-apps-menu | 0 | 3.32.1-20.el8 |
| AlmaLinux:8 | gnome-shell-extension-auto-move-windows | 0 | 3.32.1-20.el8 |
| AlmaLinux:8 | gnome-shell-extension-common | 0 | 3.32.1-20.el8 |
| AlmaLinux:8 | gnome-shell-extension-dash-to-dock | 0 | 3.32.1-20.el8 |
| AlmaLinux:8 | gnome-shell-extension-desktop-icons | 0 | 3.32.1-20.el8 |
| AlmaLinux:8 | gnome-shell-extension-disable-screenshield | 0 | 3.32.1-20.el8 |
| AlmaLinux:8 | gnome-shell-extension-drive-menu | 0 | 3.32.1-20.el8 |
| AlmaLinux:8 | gnome-shell-extension-gesture-inhibitor | 0 | 3.32.1-20.el8 |
| AlmaLinux:8 | gnome-shell-extension-horizontal-workspaces | 0 | 3.32.1-20.el8 |
| AlmaLinux:8 | gnome-shell-extension-launch-new-instance | 0 | 3.32.1-20.el8 |
| AlmaLinux:8 | gnome-shell-extension-native-window-placement | 0 | 3.32.1-20.el8 |
| AlmaLinux:8 | gnome-shell-extension-no-hot-corner | 0 | 3.32.1-20.el8 |
| AlmaLinux:8 | gnome-shell-extension-panel-favorites | 0 | 3.32.1-20.el8 |
| AlmaLinux:8 | gnome-shell-extension-places-menu | 0 | 3.32.1-20.el8 |
| AlmaLinux:8 | gnome-shell-extension-screenshot-window-sizer | 0 | 3.32.1-20.el8 |
| AlmaLinux:8 | gnome-shell-extension-systemMonitor | 0 | 3.32.1-20.el8 |
| AlmaLinux:8 | gnome-shell-extension-top-icons | 0 | 3.32.1-20.el8 |
| AlmaLinux:8 | gnome-shell-extension-updates-dialog | 0 | 3.32.1-20.el8 |
| AlmaLinux:8 | gnome-shell-extension-user-theme | 0 | 3.32.1-20.el8 |
| AlmaLinux:8 | gnome-shell-extension-window-grouper | 0 | 3.32.1-20.el8 |
| AlmaLinux:8 | gnome-shell-extension-window-list | 0 | 3.32.1-20.el8 |
| AlmaLinux:8 | gnome-shell-extension-windowsNavigator | 0 | 3.32.1-20.el8 |
| AlmaLinux:8 | gnome-shell-extension-workspace-indicator | 0 | 3.32.1-20.el8 |
| AlmaLinux:8 | gnome-software | 0 | 3.36.1-10.el8 |
| AlmaLinux:8 | gnome-software-devel | 0 | 3.36.1-10.el8 |
| AlmaLinux:8 | gsettings-desktop-schemas | 0 | 3.32.0-6.el8 |
| AlmaLinux:8 | gsettings-desktop-schemas-devel | 0 | 3.32.0-6.el8 |
| AlmaLinux:8 | gtk-update-icon-cache | 0 | 3.22.30-8.el8 |
| AlmaLinux:8 | gtk3 | 0 | 3.22.30-8.el8 |
| AlmaLinux:8 | gtk3-devel | 0 | 3.22.30-8.el8 |
| AlmaLinux:8 | gtk3-immodule-xim | 0 | 3.22.30-8.el8 |
| AlmaLinux:8 | mutter | 0 | 3.32.2-60.el8 |
| AlmaLinux:8 | mutter-devel | 0 | 3.32.2-60.el8 |
| AlmaLinux:8 | vino | 0 | 3.22.0-11.el8 |
| AlmaLinux:8 | webkit2gtk3 | 0 | 2.32.3-2.el8 |
| AlmaLinux:8 | webkit2gtk3-devel | 0 | 2.32.3-2.el8 |
| AlmaLinux:8 | webkit2gtk3-jsc | 0 | 2.32.3-2.el8 |
| AlmaLinux:8 | webkit2gtk3-jsc-devel | 0 | 2.32.3-2.el8 |
| Debian:10 | webkit2gtk | 0 | 2.32.3-1~deb10u1 |
| Debian:11 | webkit2gtk | 0 | 2.32.3-1 |
| Debian:11 | wpewebkit | 0 | 2.32.3-1 |
| Debian:12 | webkit2gtk | 0 | 2.32.3-1 |
| Debian:12 | wpewebkit | 0 | 2.32.3-1 |
| Debian:13 | webkit2gtk | 0 | 2.32.3-1 |
| Debian:13 | wpewebkit | 0 | 2.32.3-1 |
| Debian:14 | webkit2gtk | 0 | 2.32.3-1 |
| Debian:14 | wpewebkit | 0 | 2.32.3-1 |
| Mageia:8 | webkit2 | 0 | 2.32.3-1.mga8 |
| Red Hat:enterprise_linux:8::appstream | LibRaw | 0 | 0:0.19.5-3.el8 |
| Red Hat:enterprise_linux:8::appstream | LibRaw-debuginfo | 0 | 0:0.19.5-3.el8 |
| Red Hat:enterprise_linux:8::appstream | LibRaw-debugsource | 0 | 0:0.19.5-3.el8 |
| Red Hat:enterprise_linux:8::appstream | LibRaw-devel | 0 | 0:0.19.5-3.el8 |
| Red Hat:enterprise_linux:8::appstream | LibRaw-samples-debuginfo | 0 | 0:0.19.5-3.el8 |
| Red Hat:enterprise_linux:8::appstream | gnome-autoar | 0 | 0:0.2.3-2.el8 |
| Red Hat:enterprise_linux:8::appstream | gnome-autoar-debuginfo | 0 | 0:0.2.3-2.el8 |
| Red Hat:enterprise_linux:8::appstream | gnome-autoar-debugsource | 0 | 0:0.2.3-2.el8 |
| Red Hat:enterprise_linux:8::appstream | webkit2gtk3 | 0 | 0:2.32.3-2.el8 |
| Red Hat:enterprise_linux:8::appstream | webkit2gtk3-debuginfo | 0 | 0:2.32.3-2.el8 |
| Red Hat:enterprise_linux:8::appstream | webkit2gtk3-debugsource | 0 | 0:2.32.3-2.el8 |
| Red Hat:enterprise_linux:8::appstream | webkit2gtk3-devel | 0 | 0:2.32.3-2.el8 |
| Red Hat:enterprise_linux:8::appstream | webkit2gtk3-devel-debuginfo | 0 | 0:2.32.3-2.el8 |
| Red Hat:enterprise_linux:8::appstream | webkit2gtk3-jsc | 0 | 0:2.32.3-2.el8 |
| Red Hat:enterprise_linux:8::appstream | webkit2gtk3-jsc-debuginfo | 0 | 0:2.32.3-2.el8 |
| Red Hat:enterprise_linux:8::appstream | webkit2gtk3-jsc-devel | 0 | 0:2.32.3-2.el8 |
| Red Hat:enterprise_linux:8::appstream | webkit2gtk3-jsc-devel-debuginfo | 0 | 0:2.32.3-2.el8 |
| Red Hat:enterprise_linux:8::crb | LibRaw | 0 | 0:0.19.5-3.el8 |
| Red Hat:enterprise_linux:8::crb | LibRaw-debuginfo | 0 | 0:0.19.5-3.el8 |
| Red Hat:enterprise_linux:8::crb | LibRaw-debugsource | 0 | 0:0.19.5-3.el8 |
| Red Hat:enterprise_linux:8::crb | LibRaw-devel | 0 | 0:0.19.5-3.el8 |
| Red Hat:enterprise_linux:8::crb | LibRaw-samples-debuginfo | 0 | 0:0.19.5-3.el8 |
| Rocky Linux:8 | LibRaw | 0 | 0:0.19.5-3.el8 |
| Rocky Linux:8 | accountsservice | 0 | 0:0.6.55-2.el8 |
| Rocky Linux:8 | gdm | 0 | 1:40.0-15.el8 |
| Rocky Linux:8 | gnome-autoar | 0 | 0:0.2.3-2.el8 |
| Rocky Linux:8 | gnome-calculator | 0 | 0:3.28.2-2.el8 |
| Rocky Linux:8 | gnome-control-center | 0 | 0:3.28.2-28.el8 |
| Rocky Linux:8 | gnome-online-accounts | 0 | 0:3.28.2-3.el8 |
| Rocky Linux:8 | gnome-session | 0 | 0:3.28.1-13.el8 |
| Rocky Linux:8 | gnome-settings-daemon | 0 | 0:3.32.0-16.el8 |
| Rocky Linux:8 | gnome-shell | 0 | 0:3.32.2-40.el8 |
| Rocky Linux:8 | gnome-shell-extensions | 0 | 0:3.32.1-20.el8 |
| Rocky Linux:8 | gnome-software | 0 | 0:3.36.1-10.el8 |
| Rocky Linux:8 | gsettings-desktop-schemas | 0 | 0:3.32.0-6.el8 |
| Rocky Linux:8 | gtk3 | 0 | 0:3.22.30-8.el8 |
| Rocky Linux:8 | mutter | 0 | 0:3.32.2-60.el8 |
| Rocky Linux:8 | vino | 0 | 0:3.22.0-11.el8 |
| Rocky Linux:8 | webkit2gtk3 | 0 | 0:2.32.3-2.el8 |
| SUSE:Enterprise Storage 6 | libsoup | 0 | 2.62.2-17.8.1 |
| SUSE:Enterprise Storage 6 | webkit2gtk3 | 0 | 2.32.3-3.77.3 |
| SUSE:HPE Helion OpenStack 8 | webkit2gtk3 | 0 | 2.32.3-2.66.1 |
| SUSE:Linux Enterprise High Performance Computing 15 SP1-ESPOS | libsoup | 0 | 2.62.2-17.8.1 |
| SUSE:Linux Enterprise High Performance Computing 15 SP1-ESPOS | webkit2gtk3 | 0 | 2.32.3-3.77.3 |
| SUSE:Linux Enterprise High Performance Computing 15 SP1-LTSS | libsoup | 0 | 2.62.2-17.8.1 |
| SUSE:Linux Enterprise High Performance Computing 15 SP1-LTSS | webkit2gtk3 | 0 | 2.32.3-3.77.3 |
| SUSE:Linux Enterprise High Performance Computing 15-ESPOS | libsoup | 0 | 2.62.2-17.8.1 |
| SUSE:Linux Enterprise High Performance Computing 15-ESPOS | webkit2gtk3 | 0 | 2.32.3-3.77.3 |
| SUSE:Linux Enterprise High Performance Computing 15-LTSS | libsoup | 0 | 2.62.2-17.8.1 |
| SUSE:Linux Enterprise High Performance Computing 15-LTSS | webkit2gtk3 | 0 | 2.32.3-3.77.3 |
| SUSE:Linux Enterprise Module for Basesystem 15 SP2 | webkit2gtk3 | 0 | 2.32.3-9.1 |
| SUSE:Linux Enterprise Module for Basesystem 15 SP3 | webkit2gtk3 | 0 | 2.32.3-9.1 |
| SUSE:Linux Enterprise Module for Desktop Applications 15 SP2 | webkit2gtk3 | 0 | 2.32.3-9.1 |
| SUSE:Linux Enterprise Module for Desktop Applications 15 SP3 | webkit2gtk3 | 0 | 2.32.3-9.1 |
| SUSE:Linux Enterprise Server 12 SP2-BCL | webkit2gtk3 | 0 | 2.32.3-2.66.1 |
| SUSE:Linux Enterprise Server 12 SP3-BCL | webkit2gtk3 | 0 | 2.32.3-2.66.1 |
| SUSE:Linux Enterprise Server 12 SP3-LTSS | webkit2gtk3 | 0 | 2.32.3-2.66.1 |
| SUSE:Linux Enterprise Server 12 SP4-LTSS | webkit2gtk3 | 0 | 2.32.3-2.66.1 |
| SUSE:Linux Enterprise Server 12 SP5 | webkit2gtk3 | 0 | 2.32.3-2.66.1 |
| SUSE:Linux Enterprise Server 15 SP1-BCL | libsoup | 0 | 2.62.2-17.8.1 |
| SUSE:Linux Enterprise Server 15 SP1-BCL | webkit2gtk3 | 0 | 2.32.3-3.77.3 |
| SUSE:Linux Enterprise Server 15 SP1-LTSS | libsoup | 0 | 2.62.2-17.8.1 |
| SUSE:Linux Enterprise Server 15 SP1-LTSS | webkit2gtk3 | 0 | 2.32.3-3.77.3 |
| SUSE:Linux Enterprise Server 15-LTSS | libsoup | 0 | 2.62.2-17.8.1 |
| SUSE:Linux Enterprise Server 15-LTSS | webkit2gtk3 | 0 | 2.32.3-3.77.3 |
| SUSE:Linux Enterprise Server for SAP Applications 12 SP3 | webkit2gtk3 | 0 | 2.32.3-2.66.1 |
| SUSE:Linux Enterprise Server for SAP Applications 12 SP4 | webkit2gtk3 | 0 | 2.32.3-2.66.1 |
| SUSE:Linux Enterprise Server for SAP Applications 12 SP5 | webkit2gtk3 | 0 | 2.32.3-2.66.1 |
| SUSE:Linux Enterprise Server for SAP Applications 15 | libsoup | 0 | 2.62.2-17.8.1 |
| SUSE:Linux Enterprise Server for SAP Applications 15 | webkit2gtk3 | 0 | 2.32.3-3.77.3 |
| SUSE:Linux Enterprise Server for SAP Applications 15 SP1 | libsoup | 0 | 2.62.2-17.8.1 |
| SUSE:Linux Enterprise Server for SAP Applications 15 SP1 | webkit2gtk3 | 0 | 2.32.3-3.77.3 |
| SUSE:Linux Enterprise Software Development Kit 12 SP5 | webkit2gtk3 | 0 | 2.32.3-2.66.1 |
| SUSE:Manager Proxy 4.0 | libsoup | 0 | 2.62.2-17.8.1 |
| SUSE:Manager Proxy 4.0 | webkit2gtk3 | 0 | 2.32.3-3.77.3 |
| SUSE:Manager Retail Branch Server 4.0 | libsoup | 0 | 2.62.2-17.8.1 |
| SUSE:Manager Retail Branch Server 4.0 | webkit2gtk3 | 0 | 2.32.3-3.77.3 |
| SUSE:Manager Server 4.0 | libsoup | 0 | 2.62.2-17.8.1 |
| SUSE:Manager Server 4.0 | webkit2gtk3 | 0 | 2.32.3-3.77.3 |
| SUSE:OpenStack Cloud 8 | webkit2gtk3 | 0 | 2.32.3-2.66.1 |
| SUSE:OpenStack Cloud 9 | webkit2gtk3 | 0 | 2.32.3-2.66.1 |
| SUSE:OpenStack Cloud Crowbar 8 | webkit2gtk3 | 0 | 2.32.3-2.66.1 |
| SUSE:OpenStack Cloud Crowbar 9 | webkit2gtk3 | 0 | 2.32.3-2.66.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.32.3-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.32.3-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 | 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.2 | webkit2gtk3 | 0 | 2.32.3-lp152.2.16.1 |
| openSUSE:Leap 15.3 | webkit2gtk3 | 0 | 2.32.3-9.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
- CVE-2021-30665 A memory corruption issue was addressed with improved state management. Also affects LibRaw
- CVE-2021-1870 A logic issue was addressed with improved restrictions. Also affects LibRaw
- CVE-2021-1871 A logic issue was addressed with improved restrictions. Also affects LibRaw
- CVE-2021-1788 A use after free issue was addressed with improved memory management. Also affects LibRaw
- CVE-2021-1789 A type confusion issue was addressed with improved state handling. Also affects LibRaw
- CVE-2020-13558 A code execution vulnerability exists in the AudioSourceProviderGStreamer functionality… Also affects LibRaw
- CVE-2020-27918 A use after free issue was addressed with improved memory management. Also affects LibRaw