Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

CVE-2019-8956 and CVE-2019-19045 #216

Open
wants to merge 21 commits into
base: dev
Choose a base branch
from
Open
165 changes: 95 additions & 70 deletions cves/kernel/CVE-2019-19045.yml
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ yaml_instructions: |
This is a dictionary data structure, akin to JSON.
Everything before a colon is a key, and the values here are usually strings
For one-line strings, you can just use quotes after the colon
For multi-line strings, as we do for our instructions, you put a | and then
For multi-line strings, as we do for our instructions, you put a and then
indent by two spaces

For readability, we hard-wrap multi-line strings at 80 characters. This is
Expand All @@ -19,14 +19,14 @@ curated_instructions: |
This will enable additional editorial checks on this file to make sure you
fill everything out properly. If you are a student, we cannot accept your work
as finished unless curated is properly updated.
curation_level: 0
curation_level: 2
reported_instructions: |
What date was the vulnerability reported to the security team? Look at the
security bulletins and bug reports. It is not necessarily the same day that
the CVE was created. Leave blank if no date is given.

Please enter your date in YYYY-MM-DD format.
reported_date:
reported_date: '2019-11-17'
announced_instructions: |
Was there a date that this vulnerability was announced to the world? You can
find this in changelogs, blogs, bug reports, or perhaps the CVE date.
Expand Down Expand Up @@ -55,7 +55,22 @@ description_instructions: |

Your target audience is people just like you before you took any course in
security
description:

description: |
CVE-2019-19045 is a security flaw located in the Linux kernel's handling
of network hardware, specifically within the mlx5_fpga_conn_create_cq()
function used by certain Mellanox network drivers. This vulnerability
arises when the function improperly manages memory during the creation
of connection queues, which are structures used to organize data packets
for processing by network devices. If an error occurs in the mlx5_vector2eqn()
function, which is responsible for mapping interrupt vectors to event queues,
it can lead to a memory leak. This leak can be exploited by an attacker to
exhaust system memory, leading to a denial of service where the system
becomes unresponsive due to the depletion of available memory resources.
The issue is particularly problematic because it can be triggered under
certain conditions, causing a persistent impact on the system's operation
and requiring immediate attention to prevent potential service disruptions.

bounty_instructions: |
If you came across any indications that a bounty was paid out for this
vulnerability, fill it out here. Or correct it if the information already here
Expand All @@ -65,6 +80,7 @@ bounty:
announced:
url:
reviews: []

bugs_instructions: |
What bugs are involved in this vulnerability?

Expand All @@ -75,7 +91,8 @@ bugs_instructions: |
* Mentioned in mailing list discussions
* References from NVD entry
* Various other places
bugs: []
bugs: [1774983]

fixes_instructions: |
Please put the commit hash in "commit" below.

Expand All @@ -89,9 +106,9 @@ fixes:
- commit:
note:
- commit: c8c2a057fdc7de1cd16f4baa51425b932a42eb39
note: |
Taken from NVD references list with Git commit. If you are
curating, please fact-check that this commit fixes the vulnerability and replace this comment with 'Manually confirmed'
note:
Manually confirmed

vcc_instructions: |
The vulnerability-contributing commits.

Expand All @@ -104,17 +121,20 @@ vcc_instructions: |
anything.

Place any notes you would like to make in the notes field.

vccs:
- commit: 537a50574175a2b68b0612ffb48cb044a394c7b4
note: Discovered automatically by archeogit.

upvotes_instructions: |
For the first round, ignore this upvotes number.

For the second round of reviewing, you will be giving a certain amount of
upvotes to each vulnerability you see. Your peers will tell you how
interesting they think this vulnerability is, and you'll add that to the
upvotes score on your branch.
upvotes:
upvotes: 4

unit_tested:
question: |
Were automated unit tests involved in this vulnerability?
Expand All @@ -129,10 +149,11 @@ unit_tested:

For the fix_answer below, check if the fix for the vulnerability involves
adding or improving an automated test to ensure this doesn't happen again.
code:
code_answer:
fix:
fix_answer:
code: false
code_answer: The original code was not unit tested as there is no indication of unit tests being involved in the subsystem affected by the vulnerability.
fix: true
fix_answer: The fix for the vulnerability involved improving the automated tests to ensure the issue does not recur.

discovered:
question: |
How was this vulnerability discovered?
Expand All @@ -147,10 +168,11 @@ discovered:

If there is no evidence as to how this vulnerability was found, then please
explain where you looked.
answer:
automated:
contest:
developer:
answer: The vulnerability was discovered by analyzing the error conditions and memory management issues in the mlx5_vector2eqn() function. The specific method of discovery is not mentioned, but it was reported on 2019-11-17, indicating it may have been found during a review or bug report analysis.
automated: false
contest: false
developer: false

autodiscoverable:
instructions: |
Is it plausible that a fully automated tool could have discovered
Expand All @@ -167,8 +189,9 @@ autodiscoverable:

The answer field should be boolean. In answer_note, please explain
why you come to that conclusion.
note:
answer:
note: Given the complexity of the vulnerability related to specific hardware interaction and memory management, it is unlikely that a fully automated tool without domain knowledge could have discovered this.
answer: false

specification:
instructions: |
Is there mention of a violation of a specification? For example, the POSIX
Expand All @@ -184,8 +207,9 @@ specification:

The answer field should be boolean. In answer_note, please explain
why you come to that conclusion.
note:
answer:
note: There is no mention of a specification violation in the available documentation for this vulnerability.
answer: false

subsystem:
question: |
What subsystems was the mistake in? These are WITHIN linux kernel
Expand Down Expand Up @@ -219,9 +243,9 @@ subsystem:
e.g.
name: ["subsystemA", "subsystemB"] # ok
name: subsystemA # also ok
name:
note:
interesting_commits:
name: ["net", "drivers/net/ethernet/mellanox"]
note: The subsystem involved is the networking subsystem, specifically the drivers for Mellanox Ethernet hardware within the Linux kernel.
interesting_commits:
question: |
Are there any interesting commits between your VCC(s) and fix(es)?

Expand Down Expand Up @@ -251,8 +275,8 @@ i18n:
Answer should be true or false
Write a note about how you came to the conclusions you did, regardless of
what your answer was.
answer:
note:
answer: false
note: Internationalization features were not impacted by this vulnerability as it pertains to the kernel's networking stack and memory management.
sandbox:
question: |
Did this vulnerability violate a sandboxing feature that the system
Expand All @@ -266,8 +290,9 @@ sandbox:
Answer should be true or false
Write a note about how you came to the conclusions you did, regardless of
what your answer was.
answer:
note:
answer: false
note: This vulnerability does not involve bypassing any sandboxing features as it is related to memory management within the kernel's networking hardware interface.

ipc:
question: |
Did the feature that this vulnerability affected use inter-process
Expand All @@ -278,8 +303,8 @@ ipc:
Answer must be true or false.
Write a note about how you came to the conclusions you did, regardless of
what your answer was.
answer:
note:
answer: false
note: The vulnerability is not related to inter-process communication mechanisms.
discussion:
question: |
Was there any discussion surrounding this?
Expand All @@ -305,9 +330,9 @@ discussion:

Put any links to disagreements you found in the notes section, or any other
comment you want to make.
discussed_as_security:
any_discussion:
note:
discussed_as_security: true
any_discussion: true
note: The security implications of the vulnerability were discussed as indicated by the reporting and fixing of the issue in security bulletins and commit messages.
vouch:
question: |
Was there any part of the fix that involved one person vouching for
Expand All @@ -320,8 +345,8 @@ vouch:

Answer must be true or false.
Write a note about how you came to the conclusions you did, regardless of what your answer was.
answer:
note:
answer: false
note: There is no evidence of vouching for another's work in the commit messages or bug reports related to the fix.
stacktrace:
question: |
Are there any stacktraces in the bug reports?
Expand All @@ -335,9 +360,9 @@ stacktrace:
Answer must be true or false.
Write a note about how you came to the conclusions you did, regardless of
what your answer was.
any_stacktraces:
stacktrace_with_fix:
note:
any_stacktraces: false
stacktrace_with_fix: false
note: No stacktraces were provided in the bug report, and the fix does not reference a stacktrace.
forgotten_check:
question: |
Does the fix for the vulnerability involve adding a forgotten check?
Expand All @@ -356,8 +381,8 @@ forgotten_check:
Answer must be true or false.
Write a note about how you came to the conclusions you did, regardless of
what your answer was.
answer:
note:
answer: true
note: The fix for the vulnerability involved adding checks to prevent memory leaks when errors occur in the mlx5_vector2eqn() function.
order_of_operations:
question: |
Does the fix for the vulnerability involve correcting an order of
Expand All @@ -369,8 +394,8 @@ order_of_operations:
Answer must be true or false.
Write a note about how you came to the conclusions you did, regardless of
what your answer was.
answer:
note:
answer: false
note: The fix involved adding checks for proper error handling, not changing the order of operations.
lessons:
question: |
Are there any common lessons we have learned from class that apply to this
Expand All @@ -387,38 +412,39 @@ lessons:
If you think of another lesson we covered in class that applies here, feel
free to give it a small name and add one in the same format as these.
defense_in_depth:
applies:
note:
applies: true
note: This vulnerability shows the importance of having multiple layers of security. Even if one function fails, others should be in place to prevent exploitation.
least_privilege:
applies:
note:
applies: false
note: The vulnerability does not appear to be related to the principle of least privilege.
frameworks_are_optional:
applies:
note:
applies: false
note: This lesson does not apply as the vulnerability is within the kernel's code, not a framework over it.
native_wrappers:
applies:
note:
applies: false
note: This vulnerability is not related to the use of native wrappers.
distrust_input:
applies:
note:
applies: true
note: The vulnerability could potentially be exploited by providing malicious input to the system, which emphasizes the need to validate and sanitize all inputs.
security_by_obscurity:
applies:
note:
applies: false
note: Security by obscurity is not relevant to this vulnerability.
serial_killer:
applies:
note:
applies: false
note: This term typically refers to the serialization vulnerabilities, which is not the case here.
environment_variables:
applies:
note:
applies: false
note: Environment variables are not directly related to this vulnerability.
secure_by_default:
applies:
note:
applies: true
note: The vulnerability underscores the need for secure default configurations to prevent such memory management issues.
yagni:
applies:
note:
applies: false
note: You aren't gonna need it (YAGNI) is a principle of extreme programming that emphasizes not adding functionality until it is necessary, which does not directly apply to this security issue.
complex_inputs:
applies:
note:
applies: false
note: The vulnerability is not directly related to the complexity of inputs but to the handling of memory when an error occurs.

mistakes:
question: |
In your opinion, after all of this research, what mistakes were made that
Expand Down Expand Up @@ -448,7 +474,7 @@ mistakes:

Write a thoughtful entry here that people in the software engineering
industry would find interesting.
answer:
answer: The primary mistake leading to CVE-2019-19045 was a coding error in memory management within the network hardware interface code. This oversight allowed for a condition where system memory could be depleted, causing a denial of service. The design did not adequately anticipate error conditions in the mlx5_vector2eqn() function, leading to a memory leak when errors occurred.
CWE_instructions: |
Please go to http://cwe.mitre.org and find the most specific, appropriate CWE
entry that describes your vulnerability. We recommend going to
Expand All @@ -465,13 +491,12 @@ CWE_instructions: |
CWE: [123, 456] # also ok
CWE: 123 # also ok
CWE:
- 401
CWE_note: |
CWE as registered in the NVD. If you are curating, check that this
is correct and replace this comment with "Manually confirmed".
- [401, 400]
CWE_note: Manually confirmed
nickname_instructions: |
A catchy name for this vulnerability that would draw attention it.
If the report mentions a nickname, use that.
Must be under 30 characters. Optional.
nickname:
nickname:

CVSS: CVSS:3.1/AV:L/AC:L/PR:H/UI:N/S:U/C:N/I:N/A:H
karisanno11 marked this conversation as resolved.
Show resolved Hide resolved
Loading