CVE-2016-1521
High · 8.8CVSS
8.8
EPSS
4.1%
Published
Feb 13, 2016
CISA due date
—
Cloudanix analysis
A flaw in how certain fonts are handled can let attackers take over a computer or crash programs when a victim opens a specially made font file.
- 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
Out-of-bounds read in the directrun function due to missing validation of a skip operation, enabling memory corruption that can lead to arbitrary code execution, information disclosure, or application crash.
Why it matters to the business
Remote attackers can compromise affected systems through crafted fonts, resulting in full system takeover, data theft, or service disruption; the flaw remains relevant in legacy or embedded font rendering components despite its age.
How an attack unfolds
An attacker creates a specially crafted Graphite smart font containing an invalid skip operation. The victim is tricked into rendering the font (for example by visiting a malicious web page or opening a document), triggering the vulnerable directrun function and resulting in memory corruption that the attacker leverages for code execution or denial of service.
How to fix it
Upgrade affected packages to the fixed versions: k8ssandra-operator-fips (Chainguard) 1.13.0-r1 and k8ssandra-operator-fips-compat (Chainguard) 1.13.0-r1. Disable Graphite font rendering if the component cannot be updated.
How to confirm the fix worked
Verify installed package versions match or exceed the stated fixed releases; test font rendering with known-good and known-bad Graphite fonts in a controlled environment to confirm absence of the skip-operation flaw.
Typical attack path
- Craft malicious Graphite smart font with invalid skip operation
- Host font on attacker-controlled site or embed in document
- Lure victim into rendering the font via browser or application
- Trigger out-of-bounds read leading to memory corruption
- Leverage corruption for code execution, data leak, or crash
How to detect it
Search browser and application crash logs for Graphite-related faults around the time of suspected exposure; examine web proxy logs for delivery of unusual .ttf or .graphite font files from untrusted sources.
What your security team should do
- Immediately update to the listed fixed package versions
- Scan all systems for remaining vulnerable Graphite 2 versions
- Block or sandbox untrusted font files at email and web gateways
- Review logs for any historical crash or memory-error events tied to font processing
The record
The directrun function in directmachine.cpp in Libgraphite in Graphite 2 1.2.4, as used in Mozilla Firefox before 43.0 and Firefox ESR 38.x before 38.6.1, does not validate a certain skip operation, which allows remote attackers to execute arbitrary code, obtain sensitive information, or cause a denial of service (out-of-bounds read and application crash) via a crafted Graphite smart font.
Affected packages
| Ecosystem | Package | Introduced | Fixed |
|---|---|---|---|
| Debian:11 | graphite2 | 0 | 1.3.5-1 |
| Debian:12 | graphite2 | 0 | 1.3.5-1 |
| Debian:13 | graphite2 | 0 | 1.3.5-1 |
| Debian:7 | graphite2 | 0 | 1.3.5-1~deb7u1 |
| Debian:8 | graphite2 | 0 | 1.3.5-1~deb8u1 |
| Mageia:5 | firefox | 0 | 38.6.1-1.mga5 |
| Mageia:5 | firefox-l10n | 0 | 38.6.1-1.mga5 |
| Mageia:5 | graphite2 | 0 | 1.3.5-1.mga5 |
| Mageia:5 | thunderbird | 0 | 38.6.0-1.mga5 |
| Mageia:5 | thunderbird-l10n | 0 | 38.6.0-1.mga5 |
| Red Hat:enterprise_linux:5::client | firefox | 0 | 0:38.6.1-1.el5_11 |
| Red Hat:enterprise_linux:5::client | firefox-debuginfo | 0 | 0:38.6.1-1.el5_11 |
| Red Hat:enterprise_linux:5::client | thunderbird | 0 | 0:38.6.0-1.el5_11 |
| Red Hat:enterprise_linux:5::client | thunderbird-debuginfo | 0 | 0:38.6.0-1.el5_11 |
| Red Hat:enterprise_linux:5::server | firefox | 0 | 0:38.6.1-1.el5_11 |
| Red Hat:enterprise_linux:5::server | firefox-debuginfo | 0 | 0:38.6.1-1.el5_11 |
| Red Hat:enterprise_linux:6::client | firefox | 0 | 0:38.6.1-1.el6_7 |
| Red Hat:enterprise_linux:6::client | firefox-debuginfo | 0 | 0:38.6.1-1.el6_7 |
| Red Hat:enterprise_linux:6::client | thunderbird | 0 | 0:38.6.0-1.el6_7 |
| Red Hat:enterprise_linux:6::client | thunderbird-debuginfo | 0 | 0:38.6.0-1.el6_7 |
| Red Hat:enterprise_linux:6::computenode | firefox | 0 | 0:38.6.1-1.el6_7 |
| Red Hat:enterprise_linux:6::computenode | firefox-debuginfo | 0 | 0:38.6.1-1.el6_7 |
| Red Hat:enterprise_linux:6::server | firefox | 0 | 0:38.6.1-1.el6_7 |
| Red Hat:enterprise_linux:6::server | firefox-debuginfo | 0 | 0:38.6.1-1.el6_7 |
| Red Hat:enterprise_linux:6::server | thunderbird | 0 | 0:38.6.0-1.el6_7 |
| Red Hat:enterprise_linux:6::server | thunderbird-debuginfo | 0 | 0:38.6.0-1.el6_7 |
| Red Hat:enterprise_linux:6::workstation | firefox | 0 | 0:38.6.1-1.el6_7 |
| Red Hat:enterprise_linux:6::workstation | firefox-debuginfo | 0 | 0:38.6.1-1.el6_7 |
| Red Hat:enterprise_linux:6::workstation | thunderbird | 0 | 0:38.6.0-1.el6_7 |
| Red Hat:enterprise_linux:6::workstation | thunderbird-debuginfo | 0 | 0:38.6.0-1.el6_7 |
| Red Hat:enterprise_linux:7::client | firefox | 0 | 0:38.6.1-1.el7_2 |
| Red Hat:enterprise_linux:7::client | firefox-debuginfo | 0 | 0:38.6.1-1.el7_2 |
| Red Hat:enterprise_linux:7::client | graphite2 | 0 | 0:1.3.6-1.el7_2 |
| Red Hat:enterprise_linux:7::client | graphite2-debuginfo | 0 | 0:1.3.6-1.el7_2 |
| Red Hat:enterprise_linux:7::client | graphite2-devel | 0 | 0:1.3.6-1.el7_2 |
| Red Hat:enterprise_linux:7::client | thunderbird | 0 | 0:38.6.0-1.el7_2 |
| Red Hat:enterprise_linux:7::client | thunderbird-debuginfo | 0 | 0:38.6.0-1.el7_2 |
| Red Hat:enterprise_linux:7::computenode | graphite2 | 0 | 0:1.3.6-1.el7_2 |
| Red Hat:enterprise_linux:7::computenode | graphite2-debuginfo | 0 | 0:1.3.6-1.el7_2 |
| Red Hat:enterprise_linux:7::computenode | graphite2-devel | 0 | 0:1.3.6-1.el7_2 |
| Red Hat:enterprise_linux:7::server | firefox | 0 | 0:38.6.1-1.el7_2 |
| Red Hat:enterprise_linux:7::server | firefox-debuginfo | 0 | 0:38.6.1-1.el7_2 |
| Red Hat:enterprise_linux:7::server | graphite2 | 0 | 0:1.3.6-1.el7_2 |
| Red Hat:enterprise_linux:7::server | graphite2-debuginfo | 0 | 0:1.3.6-1.el7_2 |
| Red Hat:enterprise_linux:7::server | graphite2-devel | 0 | 0:1.3.6-1.el7_2 |
| Red Hat:enterprise_linux:7::server | thunderbird | 0 | 0:38.6.0-1.el7_2 |
| Red Hat:enterprise_linux:7::server | thunderbird-debuginfo | 0 | 0:38.6.0-1.el7_2 |
| Red Hat:enterprise_linux:7::workstation | firefox | 0 | 0:38.6.1-1.el7_2 |
| Red Hat:enterprise_linux:7::workstation | firefox-debuginfo | 0 | 0:38.6.1-1.el7_2 |
| Red Hat:enterprise_linux:7::workstation | graphite2 | 0 | 0:1.3.6-1.el7_2 |
| Red Hat:enterprise_linux:7::workstation | graphite2-debuginfo | 0 | 0:1.3.6-1.el7_2 |
| Red Hat:enterprise_linux:7::workstation | graphite2-devel | 0 | 0:1.3.6-1.el7_2 |
| Red Hat:enterprise_linux:7::workstation | thunderbird | 0 | 0:38.6.0-1.el7_2 |
| Red Hat:enterprise_linux:7::workstation | thunderbird-debuginfo | 0 | 0:38.6.0-1.el7_2 |
| Red Hat:rhel_productivity:5 | thunderbird | 0 | 0:38.6.0-1.el5_11 |
| Red Hat:rhel_productivity:5 | thunderbird-debuginfo | 0 | 0:38.6.0-1.el5_11 |
| SUSE:Linux Enterprise Desktop 12 | graphite2 | 0 | 1.3.1-6.1 |
| SUSE:Linux Enterprise Desktop 12 SP1 | graphite2 | 0 | 1.3.1-6.1 |
| SUSE:Linux Enterprise Server 12 | graphite2 | 0 | 1.3.1-6.1 |
| SUSE:Linux Enterprise Server 12 SP1 | graphite2 | 0 | 1.3.1-6.1 |
| SUSE:Linux Enterprise Server for SAP Applications 12 | graphite2 | 0 | 1.3.1-6.1 |
| SUSE:Linux Enterprise Server for SAP Applications 12 SP1 | graphite2 | 0 | 1.3.1-6.1 |
| SUSE:Linux Enterprise Software Development Kit 12 | graphite2 | 0 | 1.3.1-6.1 |
| SUSE:Linux Enterprise Software Development Kit 12 SP1 | graphite2 | 0 | 1.3.1-6.1 |
| Ubuntu:14.04:LTS | graphite2 | 0 | 1.2.4-1ubuntu1.1 |
| Ubuntu:16.04:LTS | graphite2 | 0 | 1.3.5-1ubuntu1 |
Related vulnerabilities
- CVE-2016-1977 The Machine::Code::decoder::analysis::set_ref function in Graphite 2 before 1.3.6, as… Also affects graphite2
- CVE-2018-5089 Memory safety bugs were reported in Firefox 57 and Firefox ESR 52.5. Also affects firefox
- CVE-2017-7826 Memory safety bugs were reported in Firefox 56 and Firefox ESR 52.4. Also affects firefox
- CVE-2017-7805 During TLS 1.2 exchanges, handshake hashes are generated which point to a message buffer. Also affects firefox
- CVE-2017-7810 Memory safety bugs were reported in Firefox 55 and Firefox ESR 52.3. Also affects firefox
- CVE-2017-7793 A use-after-free vulnerability can occur in the Fetch API when the worker or the… Also affects firefox
- CVE-2017-7753 An out-of-bounds read occurs when applying style rules to pseudo-elements, such as… Also affects firefox
- CVE-2017-5465 An out-of-bounds read while processing SVG content in "ConvolvePixel". Also affects firefox