Linux Kernel up to 3.14.4 Packet Filter /net/core/filter.c numeric error

| CVSS Meta Temp Score | Current Exploit Price (≈) | CTI Interest Score |
|---|---|---|
| 5.4 | $0-$5k | 0.00 |
Summary
A vulnerability has been found in Linux Kernel up to 3.14.4 and classified as problematic. This affects an unknown part of the file /net/core/filter.c of the component Packet Filter. Performing a manipulation results in numeric error. This vulnerability is identified as CVE-2014-3144. Additionally, an exploit exists. It is recommended to apply a patch to fix this issue.
Details
A vulnerability was found in Linux Kernel up to 3.14.4 (Operating System). It has been classified as problematic. This affects an unknown part of the file /net/core/filter.c of the component Packet Filter. The manipulation with an unknown input leads to a numeric error vulnerability. CWE is classifying the issue as CWE-189. This is going to have an impact on availability. The summary by CVE is:
The (1) BPF_S_ANC_NLATTR and (2) BPF_S_ANC_NLATTR_NEST extension implementations in the sk_run_filter function in net/core/filter.c in the Linux kernel through 3.14.3 do not check whether a certain length value is sufficiently large, which allows local users to cause a denial of service (integer underflow and system crash) via crafted BPF instructions. NOTE: the affected code was moved to the __skb_get_nlattr and __skb_get_nlattr_nest functions before the vulnerability was announced.
The issue has been introduced in 12/03/2009. The weakness was released 04/13/2014 by Mathias Krause as filter: prevent nla extensions to peek beyond the end of the message as not defined git commit (GIT Repository). It is possible to read the advisory at git.kernel.org. This vulnerability is uniquely identified as CVE-2014-3144 since 05/02/2014. The exploitability is told to be easy. Attacking locally is a requirement. No form of authentication is needed for exploitation. Technical details and a public exploit are known. The advisory points out:
The BPF_S_ANC_NLATTR and BPF_S_ANC_NLATTR_NEST extensions fail to check for a minimal message length before testing the supplied offset to be within the bounds of the message. This allows the subtraction of the nla header to underflow and therefore -- as the data type is unsigned -- allowing far to big offset and length values for the search of the netlink attribute. The remainder calculation for the BPF_S_ANC_NLATTR_NEST extension is also wrong. It has the minuend and subtrahend mixed up, therefore calculates a huge length value, allowing to overrun the end of the message while looking for the netlink attribute.
A public exploit has been developed by Mathias Krause in Assembler and been published immediately after the advisory. The exploit is shared for download at git.kernel.org. It is declared as proof-of-concept. The vulnerability was handled as a non-public zero-day exploit for at least 1592 days. During that time the estimated underground price was around $0-$5k. The vulnerability scanner Nessus provides a plugin with the ID 74336 (Debian DSA-2949-1 : linux - security update), which helps to determine the existence of the flaw in a target environment. It is assigned to the family Debian Local Security Checks. The commercial vulnerability scanner Qualys is able to test this issue with plugin 175246 (Debian Security Update for Linux (DSA-2949-1)).
Applying a patch is able to eliminate this problem. The bugfix is ready for download at git.kernel.org. A possible mitigation has been published 1 days after the disclosure of the vulnerability. The vulnerability will be addressed with the following lines of code:
if (skb->len < sizeof(struct nlattr)) return 0;
The vulnerability is also documented in the databases at X-Force (93051), Tenable (74336), SecurityFocus (BID 67309†), Secunia (SA58569†) and Vulnerability Center (SBV-44470†). Further details are available at seclists.org. Entry connected to this vulnerability is available at VDB-13192. Be aware that VulDB is the high quality source for vulnerability data.
Affected
- Debian GNU/Linux 6.0
Product
Type
Vendor
Name
Version
License
Website
- Vendor: https://www.kernel.org/
CPE 2.3
CPE 2.2
CVSSv4
VulDB Vector: 🔍VulDB Reliability: 🔍
CVSSv3
VulDB Meta Base Score: 6.2VulDB Meta Temp Score: 5.4
VulDB Base Score: 6.2
VulDB Temp Score: 5.4
VulDB Vector: 🔍
VulDB Reliability: 🔍
CVSSv2
| AV | AC | Au | C | I | A |
|---|---|---|---|---|---|
| 💳 | 💳 | 💳 | 💳 | 💳 | 💳 |
| 💳 | 💳 | 💳 | 💳 | 💳 | 💳 |
| 💳 | 💳 | 💳 | 💳 | 💳 | 💳 |
| Vector | Complexity | Authentication | Confidentiality | Integrity | Availability |
|---|---|---|---|---|---|
| Unlock | Unlock | Unlock | Unlock | Unlock | Unlock |
| Unlock | Unlock | Unlock | Unlock | Unlock | Unlock |
| Unlock | Unlock | Unlock | Unlock | Unlock | Unlock |
VulDB Base Score: 🔍
VulDB Temp Score: 🔍
VulDB Reliability: 🔍
NVD Base Score: 🔍
Exploiting
Class: Numeric errorCWE: CWE-189
CAPEC: 🔍
ATT&CK: 🔍
Physical: Partially
Local: Yes
Remote: No
Availability: 🔍
Access: Public
Status: Proof-of-Concept
Author: Mathias Krause
Programming Language: 🔍
Download: 🔍
EPSS Score: 🔍
EPSS Percentile: 🔍
Price Prediction: 🔍
Current Price Estimation: 🔍
| 0-Day | Unlock | Unlock | Unlock | Unlock |
|---|---|---|---|---|
| Today | Unlock | Unlock | Unlock | Unlock |
Nessus ID: 74336
Nessus Name: Debian DSA-2949-1 : linux - security update
Nessus File: 🔍
Nessus Risk: 🔍
Nessus Family: 🔍
Nessus Port: 🔍
OpenVAS ID: 800909
OpenVAS Name: Fedora Update for kernel FEDORA-2015-5024
OpenVAS File: 🔍
OpenVAS Family: 🔍
Qualys ID: 🔍
Qualys Name: 🔍
Threat Intelligence
Interest: 🔍Active Actors: 🔍
Active APT Groups: 🔍
Countermeasures
Recommended: PatchStatus: 🔍
Reaction Time: 🔍
0-Day Time: 🔍
Exposure Time: 🔍
Exploit Delay Time: 🔍
Patch: git.kernel.org
Timeline
12/03/2009 🔍04/13/2014 🔍
04/13/2014 🔍
04/14/2014 🔍
05/02/2014 🔍
05/09/2014 🔍
05/11/2014 🔍
05/11/2014 🔍
05/13/2014 🔍
05/13/2014 🔍
05/19/2014 🔍
06/06/2014 🔍
06/19/2021 🔍
Sources
Vendor: kernel.orgAdvisory: filter: prevent nla extensions to peek beyond the end of the message
Researcher: Mathias Krause
Status: Not defined
Confirmation: 🔍
CVE: CVE-2014-3144 (🔍)
GCVE (CVE): GCVE-0-2014-3144
GCVE (VulDB): GCVE-100-13191
OVAL: 🔍
X-Force: 93051 - Linux Kernel filter.c denial of service, Medium Risk
SecurityFocus: 67309
Secunia: 58569 - Linux Kernel BPF Two Denial of Service Vulnerabilities, Not Critical
Vulnerability Center: 44470 - Linux Kernel 3.14.3 and Earlier Local DoS Vulnerability due to Missing Minimal Message Length Check in Filter.C, Medium
scip Labs: https://www.scip.ch/en/?labs.20161013
Misc.: 🔍
See also: 🔍
Entry
Created: 05/13/2014 14:38Updated: 06/19/2021 13:36
Changes: 05/13/2014 14:38 (94), 05/28/2017 02:39 (6), 06/19/2021 13:36 (3)
Complete: 🔍
Cache ID: 216:C99:103
Be aware that VulDB is the high quality source for vulnerability data.
No comments yet. Languages: en.
Please log in to comment.