Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
170 changes: 107 additions & 63 deletions cves/kernel/CVE-2013-0290.yml
Original file line number Diff line number Diff line change
Expand Up @@ -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: '2013-02-12'
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,16 @@ description_instructions: |

Your target audience is people just like you before you took any course in
security
description:
description: |
Within the Linux kernel there was a net/core/datagram.c file, which stored
generic datagram handling routines. One of these routines,
The __skb_recv_datagram function, was made to lock a socket if a skb was
returned, requiring it be unlocked later with the use of another call. This
function utilized an MSG_PEEK call to look at incoming data. However this
call didn't properly handle the event if the incoming data was of
zero-length. Since the MSG_PEEK flag was used to end a loop, the zero-length
data caused an infinite loop and could be used maliciously to result in a
denial of service.
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 @@ -75,12 +84,13 @@ bugs_instructions: |
* Mentioned in mailing list discussions
* References from NVD entry
* Various other places
bugs: []
bugs:
- https://bugzilla.redhat.com/show_bug.cgi?id=911473
fixes_instructions: |
Please put the commit hash in "commit" below.

This must be a git commit hash from the systemd source repo, a 40-character
hexademical string/
hexademical string.

Place any notes you would like to make in the notes field.
fixes:
Expand All @@ -89,9 +99,7 @@ fixes:
- commit:
note:
- commit: 77c1090f94d1b0b5186fb13a1b71b47b1343f87f
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 @@ -106,15 +114,15 @@ vcc_instructions: |
Place any notes you would like to make in the notes field.
vccs:
- commit: 3f518bf745cbd6007d8069100fb9cb09e960c872
note: Discovered automatically by archeogit.
note: Discovered automatically by archeogit. Manually Confirmed.
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 +137,10 @@ 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.'
fix: false
fix_answer: 'The fix was not unit tested.'
discovered:
question: |
How was this vulnerability discovered?
Expand All @@ -147,10 +155,12 @@ 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 Tommi Rantala <[email protected]>
by testing the code using Trinity, a Linux system call fuzzer.
automated: false
contest: false
developer: true

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This threw me off too in my work. I think this is false. I can't seem to find information on Tommi Rantala being a Linux Kernel developer or Google developer. I think he was just a contributor. His email is just standard gmail. Confirm before you make the change.

Suggested change
developer: true
developer: false

Edit: I see it was signed off by Eric Dumazet, a Google developer. So I'm not sure what to do for this one...

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

The answer field should be boolean. In answer_note, please explain
why you come to that conclusion.
note:
answer:
note: |
The vulnerability was caused by the system waiting in an infinite loop on a
packet with no payload. The issue was discovered by a developer using
Trinity, a Linux system call fuzzer. This demonstrates that it's not only
possible, but proven, that automated tools can be used to uncover this
vulnerability.
answer: true
specification:
instructions: |
Is there mention of a violation of a specification? For example, the POSIX
Expand All @@ -184,8 +199,11 @@ specification:

The answer field should be boolean. In answer_note, please explain
why you come to that conclusion.
note:
answer:
note: |
TCP specification violation, vulnerability in the socket buffers being
passed into the system. When the SKB is of zero-length it should be skipped
but the missing check results in a DOS.
answer: true
Comment on lines +202 to +206
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Did you come to this conclusion after researching the CVE or was this mentioned in a bug report or commit?

subsystem:
question: |
What subsystems was the mistake in? These are WITHIN linux kernel
Expand Down Expand Up @@ -219,7 +237,7 @@ subsystem:
e.g.
name: ["subsystemA", "subsystemB"] # ok
name: subsystemA # also ok
name:
name: ["net", "core"]
note:
interesting_commits:
question: |
Expand All @@ -235,8 +253,10 @@ interesting_commits:
* Other commits that fixed a similar issue as this vulnerability
* Anything else you find interesting.
commits:
- commit:
note:
- commit: 3f518bf745cbd6007d8069100fb9cb09e960c872
note: |
The commit that first introduced the issue. It was made approximately one
year prior to the discovery and resolution of the vulnerability.
- commit:
note:
i18n:
Expand All @@ -251,8 +271,10 @@ 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: |
The vulnerability had to do with an infinite loop caused by a packet,
being sent with no payload, which was not impacted by internationalization.
sandbox:
question: |
Did this vulnerability violate a sandboxing feature that the system
Expand All @@ -266,8 +288,10 @@ 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: |
The vulnerability resulted in a denial of service, and was not related to
access control.
ipc:
question: |
Did the feature that this vulnerability affected use inter-process
Expand All @@ -278,8 +302,10 @@ 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: true
note: |
The vulnerability affected passing socket buffers within the system, which
is a form of IPC.
discussion:
question: |
Was there any discussion surrounding this?
Expand All @@ -305,9 +331,11 @@ 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: false
any_discussion: false
note: |
The issue was a trivial filtering of zero-length data and no discussion was
had around it.
vouch:
question: |
Was there any part of the fix that involved one person vouching for
Expand All @@ -320,8 +348,10 @@ 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: true
note: |
The commit fixing the issue was tested, reviewed, CCed, and signed off on
by multiple developers.
stacktrace:
question: |
Are there any stacktraces in the bug reports?
Expand All @@ -335,9 +365,11 @@ 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: true
stacktrace_with_fix: true
note: |
Within the fix commit is a stacktrace, which includes the file where the
fix was made.
forgotten_check:
question: |
Does the fix for the vulnerability involve adding a forgotten check?
Expand All @@ -356,8 +388,10 @@ 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: |
A flag check was forgotten to ensure zero-length data was not passed into
the system, which caused the vulnerability.
order_of_operations:
question: |
Does the fix for the vulnerability involve correcting an order of
Expand All @@ -369,8 +403,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 did not involve a change in the order of operations.'
lessons:
question: |
Are there any common lessons we have learned from class that apply to this
Expand All @@ -386,38 +420,47 @@ 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:
defense_in_depth:
applies: true
note: |
Even if there is an expectation an error will be caught, it should still
be defended against elsewhere in the event those preventative measures fail. In
this case a check was forgotten to ensure zero-length data was not passed into
the system, and once that data was passed there were no other defense measures
in place to stop it from crashing the system.
least_privilege:
applies:
applies: false
note:
frameworks_are_optional:
applies:
applies: false
note:
native_wrappers:
applies:
applies: false
note:
distrust_input:
applies:
note:
applies: true
note: |
This vulnerability was a result of zero-length data being sent to the
system and not properly being handled. The input within a system should
not be so easily trusted and checks should be put in place to ensure all
possible inputs are handled without crashing the system.
security_by_obscurity:
applies:
applies: false
note:
serial_killer:
applies:
applies: false
note:
environment_variables:
applies:
applies: false
note:
secure_by_default:
applies:
applies: false
note:
yagni:
applies:
applies: false
note:
complex_inputs:
applies:
applies: false
note:
mistakes:
question: |
Expand Down Expand Up @@ -448,7 +491,10 @@ mistakes:

Write a thoughtful entry here that people in the software engineering
industry would find interesting.
answer:
answer: |
This vulnerability was caused by a lapse, as the incoming data was not
properly considered and the case if that data were of zero-length was
forgotten and not correctly handled.
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 @@ -466,12 +512,10 @@ CWE_instructions: |
CWE: 123 # also ok
CWE:
- 20
CWE_note: |
CWE as registered in the NVD. If you are curating, check that this
is correct and replace this comment with "Manually confirmed".
CWE_note: 'Manually Confirmed.'
nickname_instructions: |
A catchy name for this vulnerability that would draw attention it.
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can't comment unchanged code, so putting this below it:

CWE_note is not filled out. Make sure you look over CWE 20 and confirm it.

If the report mentions a nickname, use that.
Must be under 30 characters. Optional.
nickname:
CVSS:
nickname: 'Kernel Local DOS'
CVSS: CVSS:2.0/AV:L/AC:L/Au:N/C:N/I:N/A:C
Loading