CVE-2015-8803
Critical · 9.8CVSS
9.8
EPSS
4.2%
Published
Feb 23, 2016
CISA due date
—
Cloudanix analysis
A flaw in an older cryptography library could let attackers undermine the security of encrypted connections, so systems using that library need to be updated.
- Exploitation
- Remote Unauthenticated
- Attacker needs
- None
- Complexity
- Low
- Impact
- Full Compromise
- Component
- Library
- Class
- Cryptographic Weakness
- Remediation
- Upgrade
- Effort
- Medium
- Patch risk
- Low
What it actually does
The ecc_256_modp function in Nettle's ecc-256.c fails to correctly propagate carries during modular reduction for the NIST P-256 curve, yielding mathematically invalid point results that undermine the expected security properties of elliptic-curve operations.
Why it matters to the business
Systems relying on Nettle for TLS, SSH, or other P-256-based cryptography face potential loss of confidentiality and integrity; although the issue is nearly a decade old with no known exploitation, organizations must still ensure upgrades to avoid latent exposure in long-lived cryptographic material.
How an attack unfolds
An attacker first identifies services or libraries built against a vulnerable Nettle release, then supplies crafted inputs that trigger the faulty modular arithmetic during signature verification, key agreement, or public-key validation; the resulting incorrect outputs may allow recovery of private scalars or forgery of signatures without triggering standard validation checks.
How to fix it
Upgrade Nettle to version 3.2 or later on all affected platforms; rebuild and redeploy any statically linked applications; verify that package managers on Ubuntu, openSUSE, and similar distributions have pulled the corrected release.
How to confirm the fix worked
Confirm installed Nettle version is 3.2 or newer via package metadata or build logs; run the library's included test suite for P-256 vectors; perform static or dynamic analysis to ensure ecc_256_modp is no longer reachable from unpatched binaries.
Typical attack path
- Map external services or binaries that link against Nettle < 3.2
- Trigger elliptic-curve operations that invoke ecc_256_modp (handshake, signature verification)
- Supply malformed curve points or scalars that expose the carry-propagation error
- Leverage the mathematically invalid results to weaken discrete-log assumptions or forge signatures
- Escalate to session hijacking or credential theft
How to detect it
Search application and system logs for unusual cryptographic failures or handshake aborts involving P-256; examine process lists and package databases for Nettle versions older than 3.2; review any historical core dumps or debug output that reference ecc-256.c.
What your security team should do
- Prioritize inventory of all systems shipping Nettle < 3.2 and schedule upgrades within standard change windows
- Add Nettle version checks to build pipelines and container base images
- Review cryptographic libraries and protocols that depend on P-256 for any compensating controls until patching is complete
The record
The ecc_256_modp function in ecc-256.c in Nettle before 3.2 does not properly handle carry propagation and produces incorrect output in its implementation of the P-256 NIST elliptic curve, which allows attackers to have unspecified impact via unknown vectors, a different vulnerability than CVE-2015-8805.
Affected packages
| Ecosystem | Package | Introduced | Fixed |
|---|---|---|---|
| Debian:11 | nettle | 0 | 3.2-1 |
| Debian:12 | nettle | 0 | 3.2-1 |
| Debian:13 | nettle | 0 | 3.2-1 |
| Mageia:5 | nettle | 0 | 3.0-3.1.mga5 |
| Mageia:5 | nettle2.7 | 0 | 2.7.1-6.1.mga5 |
| Red Hat:enterprise_linux:7::client | nettle | 0 | 0:2.7.1-8.el7 |
| Red Hat:enterprise_linux:7::client | nettle-debuginfo | 0 | 0:2.7.1-8.el7 |
| Red Hat:enterprise_linux:7::client | nettle-devel | 0 | 0:2.7.1-8.el7 |
| Red Hat:enterprise_linux:7::computenode | nettle | 0 | 0:2.7.1-8.el7 |
| Red Hat:enterprise_linux:7::computenode | nettle-debuginfo | 0 | 0:2.7.1-8.el7 |
| Red Hat:enterprise_linux:7::computenode | nettle-devel | 0 | 0:2.7.1-8.el7 |
| Red Hat:enterprise_linux:7::server | nettle | 0 | 0:2.7.1-8.el7 |
| Red Hat:enterprise_linux:7::server | nettle-debuginfo | 0 | 0:2.7.1-8.el7 |
| Red Hat:enterprise_linux:7::server | nettle-devel | 0 | 0:2.7.1-8.el7 |
| Red Hat:enterprise_linux:7::workstation | nettle | 0 | 0:2.7.1-8.el7 |
| Red Hat:enterprise_linux:7::workstation | nettle-debuginfo | 0 | 0:2.7.1-8.el7 |
| Red Hat:enterprise_linux:7::workstation | nettle-devel | 0 | 0:2.7.1-8.el7 |
| SUSE:Linux Enterprise Desktop 12 | libnettle | 0 | 2.7.1-9.1 |
| SUSE:Linux Enterprise Desktop 12 SP1 | libnettle | 0 | 2.7.1-9.1 |
| SUSE:Linux Enterprise Server 12 | libnettle | 0 | 2.7.1-9.1 |
| SUSE:Linux Enterprise Server 12 SP1 | libnettle | 0 | 2.7.1-9.1 |
| SUSE:Linux Enterprise Server for SAP Applications 12 | libnettle | 0 | 2.7.1-9.1 |
| SUSE:Linux Enterprise Server for SAP Applications 12 SP1 | libnettle | 0 | 2.7.1-9.1 |
| SUSE:Linux Enterprise Software Development Kit 12 | libnettle | 0 | 2.7.1-9.1 |
| SUSE:Linux Enterprise Software Development Kit 12 SP1 | libnettle | 0 | 2.7.1-9.1 |
| Ubuntu:14.04:LTS | nettle | 0 | 2.7.1-1ubuntu0.1 |
| Ubuntu:16.04:LTS | nettle | 0 | 3.2-1 |
Related vulnerabilities
- CVE-2018-16869 A Bleichenbacher type side-channel based padding oracle attack was found in the way… Also affects nettle
- CVE-2016-6489 The RSA and DSA decryption code in Nettle makes it easier for attackers to discover… Also affects nettle
- CVE-2015-7837 The Linux kernel, as used in Red Hat Enterprise Linux 7, kernel-rt, and Enterprise MRG 2… CWE-254
- CVE-2016-10321 web2py before 2.14.6 does not properly check if a host is denied before verifying… CWE-254
- CVE-2015-7973 NTP before 4.2.8p6 and 4.3.x before 4.3.90, when configured in broadcast mode, allows… CWE-254
- CVE-2015-8857 The uglify-js package before 2.4.24 for Node.js does not properly account for non-boolean… CWE-254
- CVE-2016-7281 The Web Workers implementation in Microsoft Internet Explorer 10 and 11 and Microsoft… CWE-254
- CVE-2016-7401 The cookie parsing code in Django before 1.8.15 and 1.9.x before 1.9.10, when used on a… CWE-254