CVE-2021-23981
High · 8.1CVSS
8.1
EPSS
1.1%
Published
Mar 31, 2021
CISA due date
—
Cloudanix analysis
A graphics handling bug in browsers could let attackers steal private information or crash programs when users visit harmful websites.
- Exploitation
- Requires User Interaction
- Attacker needs
- User Interaction
- Complexity
- Low
- Impact
- Data Exposure
- Component
- Application
- Class
- Memory Corruption
- Remediation
- Upgrade
- Effort
- Medium
- Patch risk
- Low
What it actually does
A texture upload of a Pixel Buffer Object could have confused the WebGL code to skip binding the buffer used to unpack it, resulting in memory corruption and a potentially exploitable information leak or crash.
Why it matters to the business
Attackers could extract sensitive data from browser memory or cause application instability across affected user bases, increasing support costs and exposure to data loss in environments relying on web rendering components.
How an attack unfolds
An attacker hosts a malicious page that triggers WebGL texture operations using a Pixel Buffer Object; the skipped buffer binding leads to memory corruption that an adversary can chain into information disclosure or denial of service.
How to fix it
Upgrade affected installations to the versions that contain the fix commit 6e56aee25439b7a3211a6704a9d60453ad623ae4; apply browser updates that resolve the WebGL binding issue.
How to confirm the fix worked
Confirm the updated commit or version is deployed and test WebGL texture upload paths with known-triggering payloads to verify the buffer binding occurs correctly.
Typical attack path
- Deliver malicious content via web page or email attachment
- Trigger WebGL texture upload with crafted Pixel Buffer Object
- Exploit skipped buffer binding to corrupt memory
- Leverage corruption for data leak or crash
How to detect it
Inspect browser crash logs and memory dumps for WebGL-related corruption patterns; correlate with access to untrusted web content.
What your security team should do
- Prioritize patching all instances to the fixed commit or equivalent browser release
- Monitor EPSS and exploit maturity signals for any increase in activity
- Review web application dependencies for downstream exposure
The record
A texture upload of a Pixel Buffer Object could have confused the WebGL code to skip binding the buffer used to unpack it, resulting in memory corruption and a potentially exploitable information leak or crash. This vulnerability affects Firefox ESR < 78.9, Firefox < 87, and Thunderbird < 78.9.
Affected packages
| Ecosystem | Package | Introduced | Fixed |
|---|---|---|---|
| Debian:10 | firefox-esr | 0 | 78.9.0esr-1~deb10u1 |
| Debian:10 | thunderbird | 0 | 1:78.9.0-1~deb10u1 |
| Debian:11 | firefox-esr | 0 | 78.9.0esr-1 |
| Debian:11 | thunderbird | 0 | 1:78.9.0-1 |
| Debian:12 | firefox-esr | 0 | 78.9.0esr-1 |
| Debian:12 | thunderbird | 0 | 1:78.9.0-1 |
| Debian:13 | firefox-esr | 0 | 78.9.0esr-1 |
| Debian:13 | thunderbird | 0 | 1:78.9.0-1 |
| Debian:9 | firefox-esr | 0 | 78.9.0esr-1~deb9u1 |
| Debian:9 | thunderbird | 0 | 1:78.9.0-1~deb9u1 |
| Mageia:7 | firefox | 0 | 78.9.0-1.mga7 |
| Mageia:7 | firefox-l10n | 0 | 78.9.0-1.mga7 |
| Mageia:7 | nspr | 0 | 4.30-1.mga7 |
| Mageia:7 | nss | 0 | 3.63.0-1.mga7 |
| Mageia:7 | thunderbird | 0 | 78.9.0-1.mga7 |
| Mageia:7 | thunderbird-l10n | 0 | 78.9.0-1.mga7 |
| Mageia:8 | firefox | 0 | 78.9.0-1.mga8 |
| Mageia:8 | firefox-l10n | 0 | 78.9.0-1.mga8 |
| Mageia:8 | nspr | 0 | 4.30-1.mga8 |
| Mageia:8 | nss | 0 | 3.63.0-1.mga8 |
| Mageia:8 | thunderbird | 0 | 78.9.0-1.mga8 |
| Mageia:8 | thunderbird-l10n | 0 | 78.9.0-1.mga8 |
| Red Hat:enterprise_linux:7::client | firefox | 0 | 0:78.9.0-1.el7_9 |
| Red Hat:enterprise_linux:7::client | firefox-debuginfo | 0 | 0:78.9.0-1.el7_9 |
| Red Hat:enterprise_linux:7::client | thunderbird | 0 | 0:78.9.0-3.el7_9 |
| Red Hat:enterprise_linux:7::client | thunderbird-debuginfo | 0 | 0:78.9.0-3.el7_9 |
| Red Hat:enterprise_linux:7::server | firefox | 0 | 0:78.9.0-1.el7_9 |
| Red Hat:enterprise_linux:7::server | firefox-debuginfo | 0 | 0:78.9.0-1.el7_9 |
| Red Hat:enterprise_linux:7::server | thunderbird | 0 | 0:78.9.0-3.el7_9 |
| Red Hat:enterprise_linux:7::server | thunderbird-debuginfo | 0 | 0:78.9.0-3.el7_9 |
| Red Hat:enterprise_linux:7::workstation | firefox | 0 | 0:78.9.0-1.el7_9 |
| Red Hat:enterprise_linux:7::workstation | firefox-debuginfo | 0 | 0:78.9.0-1.el7_9 |
| Red Hat:enterprise_linux:7::workstation | thunderbird | 0 | 0:78.9.0-3.el7_9 |
| Red Hat:enterprise_linux:7::workstation | thunderbird-debuginfo | 0 | 0:78.9.0-3.el7_9 |
| Red Hat:enterprise_linux:8::appstream | firefox | 0 | 0:78.9.0-1.el8_3 |
| Red Hat:enterprise_linux:8::appstream | firefox-debuginfo | 0 | 0:78.9.0-1.el8_3 |
| Red Hat:enterprise_linux:8::appstream | firefox-debugsource | 0 | 0:78.9.0-1.el8_3 |
| Red Hat:enterprise_linux:8::appstream | thunderbird | 0 | 0:78.9.0-3.el8_3 |
| Red Hat:enterprise_linux:8::appstream | thunderbird-debuginfo | 0 | 0:78.9.0-3.el8_3 |
| Red Hat:enterprise_linux:8::appstream | thunderbird-debugsource | 0 | 0:78.9.0-3.el8_3 |
| Red Hat:rhel_eus:8.1::appstream | firefox | 0 | 0:78.9.0-1.el8_1 |
| Red Hat:rhel_eus:8.1::appstream | firefox-debuginfo | 0 | 0:78.9.0-1.el8_1 |
| Red Hat:rhel_eus:8.1::appstream | firefox-debugsource | 0 | 0:78.9.0-1.el8_1 |
| Red Hat:rhel_eus:8.1::appstream | thunderbird | 0 | 0:78.9.0-3.el8_1 |
| Red Hat:rhel_eus:8.1::appstream | thunderbird-debuginfo | 0 | 0:78.9.0-3.el8_1 |
| Red Hat:rhel_eus:8.1::appstream | thunderbird-debugsource | 0 | 0:78.9.0-3.el8_1 |
| Red Hat:rhel_eus:8.2::appstream | firefox | 0 | 0:78.9.0-1.el8_2 |
| Red Hat:rhel_eus:8.2::appstream | firefox-debuginfo | 0 | 0:78.9.0-1.el8_2 |
| Red Hat:rhel_eus:8.2::appstream | firefox-debugsource | 0 | 0:78.9.0-1.el8_2 |
| Red Hat:rhel_eus:8.2::appstream | thunderbird | 0 | 0:78.9.0-3.el8_2 |
| Red Hat:rhel_eus:8.2::appstream | thunderbird-debuginfo | 0 | 0:78.9.0-3.el8_2 |
| Red Hat:rhel_eus:8.2::appstream | thunderbird-debugsource | 0 | 0:78.9.0-3.el8_2 |
| SUSE:Enterprise Storage 6 | MozillaFirefox | 0 | 78.9.0-3.136.1 |
| SUSE:Enterprise Storage 6 | MozillaFirefox-branding-SLE | 0 | 78-4.16.1 |
| SUSE:Enterprise Storage 6 | mozilla-nspr | 0 | 4.25.1-3.17.1 |
| SUSE:HPE Helion OpenStack 8 | MozillaFirefox | 0 | 78.9.0-112.54.1 |
| SUSE:Linux Enterprise High Performance Computing 15 SP1-ESPOS | MozillaFirefox | 0 | 78.9.0-3.136.1 |
| SUSE:Linux Enterprise High Performance Computing 15 SP1-ESPOS | MozillaFirefox-branding-SLE | 0 | 78-4.16.1 |
| SUSE:Linux Enterprise High Performance Computing 15 SP1-ESPOS | mozilla-nspr | 0 | 4.25.1-3.17.1 |
| SUSE:Linux Enterprise High Performance Computing 15 SP1-LTSS | MozillaFirefox | 0 | 78.9.0-3.136.1 |
| SUSE:Linux Enterprise High Performance Computing 15 SP1-LTSS | MozillaFirefox-branding-SLE | 0 | 78-4.16.1 |
| SUSE:Linux Enterprise High Performance Computing 15 SP1-LTSS | mozilla-nspr | 0 | 4.25.1-3.17.1 |
| SUSE:Linux Enterprise High Performance Computing 15-ESPOS | MozillaFirefox | 0 | 78.9.0-3.136.1 |
| SUSE:Linux Enterprise High Performance Computing 15-ESPOS | MozillaFirefox-branding-SLE | 0 | 78-4.16.1 |
| SUSE:Linux Enterprise High Performance Computing 15-ESPOS | mozilla-nspr | 0 | 4.25.1-3.17.1 |
| SUSE:Linux Enterprise High Performance Computing 15-LTSS | MozillaFirefox | 0 | 78.9.0-3.136.1 |
| SUSE:Linux Enterprise High Performance Computing 15-LTSS | MozillaFirefox-branding-SLE | 0 | 78-4.16.1 |
| SUSE:Linux Enterprise High Performance Computing 15-LTSS | mozilla-nspr | 0 | 4.25.1-3.17.1 |
| SUSE:Linux Enterprise Micro 5.0 | mozilla-nspr | 0 | 4.25.1-3.17.1 |
| SUSE:Linux Enterprise Module for Basesystem 15 SP2 | mozilla-nspr | 0 | 4.25.1-3.17.1 |
| SUSE:Linux Enterprise Module for Desktop Applications 15 SP2 | MozillaFirefox | 0 | 78.9.0-8.35.1 |
| SUSE:Linux Enterprise Server 11 SP4-LTSS | MozillaFirefox | 0 | 78.9.0-78.123.1 |
| SUSE:Linux Enterprise Server 12 SP2-BCL | MozillaFirefox | 0 | 78.9.0-112.54.1 |
| SUSE:Linux Enterprise Server 12 SP2-LTSS | MozillaFirefox | 0 | 78.9.0-112.54.1 |
| SUSE:Linux Enterprise Server 12 SP3-BCL | MozillaFirefox | 0 | 78.9.0-112.54.1 |
| SUSE:Linux Enterprise Server 12 SP3-LTSS | MozillaFirefox | 0 | 78.9.0-112.54.1 |
| SUSE:Linux Enterprise Server 12 SP4-LTSS | MozillaFirefox | 0 | 78.9.0-112.54.1 |
| SUSE:Linux Enterprise Server 12 SP5 | MozillaFirefox | 0 | 78.9.0-112.54.1 |
| SUSE:Linux Enterprise Server 15 SP1-BCL | MozillaFirefox | 0 | 78.9.0-3.136.1 |
| SUSE:Linux Enterprise Server 15 SP1-BCL | MozillaFirefox-branding-SLE | 0 | 78-4.16.1 |
| SUSE:Linux Enterprise Server 15 SP1-BCL | mozilla-nspr | 0 | 4.25.1-3.17.1 |
| SUSE:Linux Enterprise Server 15 SP1-LTSS | MozillaFirefox | 0 | 78.9.0-3.136.1 |
| SUSE:Linux Enterprise Server 15 SP1-LTSS | MozillaFirefox-branding-SLE | 0 | 78-4.16.1 |
| SUSE:Linux Enterprise Server 15 SP1-LTSS | mozilla-nspr | 0 | 4.25.1-3.17.1 |
| SUSE:Linux Enterprise Server 15-LTSS | MozillaFirefox | 0 | 78.9.0-3.136.1 |
| SUSE:Linux Enterprise Server 15-LTSS | MozillaFirefox-branding-SLE | 0 | 78-4.16.1 |
| SUSE:Linux Enterprise Server 15-LTSS | mozilla-nspr | 0 | 4.25.1-3.17.1 |
| SUSE:Linux Enterprise Server for SAP Applications 12 SP2 | MozillaFirefox | 0 | 78.9.0-112.54.1 |
| SUSE:Linux Enterprise Server for SAP Applications 12 SP3 | MozillaFirefox | 0 | 78.9.0-112.54.1 |
| SUSE:Linux Enterprise Server for SAP Applications 12 SP4 | MozillaFirefox | 0 | 78.9.0-112.54.1 |
| SUSE:Linux Enterprise Server for SAP Applications 12 SP5 | MozillaFirefox | 0 | 78.9.0-112.54.1 |
| SUSE:Linux Enterprise Server for SAP Applications 15 | MozillaFirefox | 0 | 78.9.0-3.136.1 |
| SUSE:Linux Enterprise Server for SAP Applications 15 | MozillaFirefox-branding-SLE | 0 | 78-4.16.1 |
| SUSE:Linux Enterprise Server for SAP Applications 15 | mozilla-nspr | 0 | 4.25.1-3.17.1 |
| SUSE:Linux Enterprise Server for SAP Applications 15 SP1 | MozillaFirefox | 0 | 78.9.0-3.136.1 |
| SUSE:Linux Enterprise Server for SAP Applications 15 SP1 | MozillaFirefox-branding-SLE | 0 | 78-4.16.1 |
| SUSE:Linux Enterprise Server for SAP Applications 15 SP1 | mozilla-nspr | 0 | 4.25.1-3.17.1 |
| SUSE:Linux Enterprise Software Development Kit 12 SP5 | MozillaFirefox | 0 | 78.9.0-112.54.1 |
| SUSE:Linux Enterprise Workstation Extension 15 SP2 | MozillaThunderbird | 0 | 78.9.1-8.20.1 |
| SUSE:Manager Proxy 4.0 | MozillaFirefox | 0 | 78.9.0-3.136.1 |
| SUSE:Manager Proxy 4.0 | MozillaFirefox-branding-SLE | 0 | 78-4.16.1 |
| SUSE:Manager Proxy 4.0 | mozilla-nspr | 0 | 4.25.1-3.17.1 |
| SUSE:Manager Retail Branch Server 4.0 | MozillaFirefox | 0 | 78.9.0-3.136.1 |
| SUSE:Manager Retail Branch Server 4.0 | MozillaFirefox-branding-SLE | 0 | 78-4.16.1 |
| SUSE:Manager Retail Branch Server 4.0 | mozilla-nspr | 0 | 4.25.1-3.17.1 |
| SUSE:Manager Server 4.0 | MozillaFirefox | 0 | 78.9.0-3.136.1 |
| SUSE:Manager Server 4.0 | MozillaFirefox-branding-SLE | 0 | 78-4.16.1 |
| SUSE:Manager Server 4.0 | mozilla-nspr | 0 | 4.25.1-3.17.1 |
| SUSE:OpenStack Cloud 7 | MozillaFirefox | 0 | 78.9.0-112.54.1 |
| SUSE:OpenStack Cloud 8 | MozillaFirefox | 0 | 78.9.0-112.54.1 |
| SUSE:OpenStack Cloud 9 | MozillaFirefox | 0 | 78.9.0-112.54.1 |
| SUSE:OpenStack Cloud Crowbar 8 | MozillaFirefox | 0 | 78.9.0-112.54.1 |
| SUSE:OpenStack Cloud Crowbar 9 | MozillaFirefox | 0 | 78.9.0-112.54.1 |
| Ubuntu:16.04:LTS | firefox | 0 | 87.0+build3-0ubuntu0.16.04.2 |
| Ubuntu:18.04:LTS | firefox | 0 | 87.0+build3-0ubuntu0.18.04.2 |
| Ubuntu:18.04:LTS | mozjs38 | 0 | No fix |
| Ubuntu:18.04:LTS | mozjs52 | 0 | No fix |
| Ubuntu:18.04:LTS | thunderbird | 0 | 1:78.11.0+build1-0ubuntu0.18.04.2 |
| Ubuntu:20.04:LTS | firefox | 0 | 87.0+build3-0ubuntu0.20.04.2 |
| Ubuntu:20.04:LTS | mozjs52 | 0 | No fix |
| Ubuntu:20.04:LTS | mozjs68 | 0 | No fix |
| Ubuntu:20.04:LTS | thunderbird | 0 | 1:78.11.0+build1-0ubuntu0.20.04.2 |
| Ubuntu:22.04:LTS | mozjs78 | 0 | No fix |
| Ubuntu:Pro:18.04:LTS | mozjs38 | 0 | No fix |
| Ubuntu:Pro:18.04:LTS | mozjs52 | 0 | No fix |
| Ubuntu:Pro:20.04:LTS | mozjs52 | 0 | No fix |
| Ubuntu:Pro:20.04:LTS | mozjs68 | 0 | No fix |
| Ubuntu:Pro:22.04:LTS | mozjs78 | 0 | No fix |
| openSUSE:Leap 15.2 | MozillaFirefox | 0 | 78.9.0-lp152.2.52.1 |
| openSUSE:Leap 15.2 | MozillaThunderbird | 0 | 78.9.1-lp152.2.38.1 |
| openSUSE:Tumbleweed | MozillaFirefox | 0 | 92.0-1.2 |
| openSUSE:Tumbleweed | MozillaThunderbird | 0 | 91.1.1-1.1 |
| openSUSE:Tumbleweed | firefox-esr | 0 | 128.5.1-1.1 |
Related vulnerabilities
- CVE-2024-5696 By manipulating the text in an `input` tag, an attacker could have caused corrupt memory… Also affects firefox-esr
- CVE-2024-5700 Memory safety bugs present in Firefox 126, Firefox ESR 115.11, and Thunderbird 115.11. Also affects firefox-esr
- CVE-2024-5702 Memory corruption in the networking stack could have led to a potentially exploitable… Also affects firefox-esr
- CVE-2024-5693 Offscreen Canvas did not properly track cross-origin tainting, which could be used to… Also affects firefox-esr
- CVE-2024-5688 If a garbage collection was triggered at the right time, a use-after-free could have… Also affects firefox-esr
- CVE-2024-5691 By tricking the browser with a `X-Frame-Options` header, a sandboxed iframe could have… Also affects firefox-esr
- CVE-2024-5690 By monitoring the time certain operations take, an attacker could have guessed which… Also affects firefox-esr
- CVE-2024-4777 Memory safety bugs present in Firefox 125, Firefox ESR 115.10, and Thunderbird 115.10. Also affects firefox-esr