Skip to content
Open
Show file tree
Hide file tree
Changes from 19 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
120 changes: 63 additions & 57 deletions cves/kernel/CVE-2015-7566.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: '2016-02-24'
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,9 @@ description_instructions: |

Your target audience is people just like you before you took any course in
security
description:
description: |
When using a USB device that lacks a bulk-out endpoint (what sends data from the host to the device),
a NULL pointer error occurs. This causes the system to crash which can lead to more errors and corruption.
Comment on lines +59 to +60
Copy link

Choose a reason for hiding this comment

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

I think more background would be nice in this. Where was it introduced? What kind of data is the host sending to the device that is causing this crash?

Copy link

Choose a reason for hiding this comment

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

Found the how of the vulnerability under:
https://bugzilla.redhat.com/show_bug.cgi?id=1283371


Description:
The bug was found using the USB-fuzzing framework vUSBf from Sergej Schumilo 
(github.com/schumilo) using the following device descriptor:

 ######### PAYLOAD 1 #########
[*] Device-Descriptor
  bLength:		0x12
  bDescriptorType:	0x1
  bcdUSB:		0x200
  bDeviceClass:		0x3
  bDeviceSubClass:	0x0
  bDeviceProtocol:	0x0
  bMaxPacketSize:	0x40
  idVendor:		0x54c
  idProduct:		0x144
  bcdDevice:		0x100
  iManufacturer:	0x1
  iProduct:		0x2
  iSerialNumbers:	0x3
  bNumConfigurations:	0x1

The clie_5_attach function of the visor driver, which is called during the driver initialization process, expects an OUT-Bulk-Endpoint. 
Due to an incomplete sanity check, the visor driver tries to dereference null-pointers. 
This results in a crash of the system.

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,7 +77,7 @@ bugs_instructions: |
* Mentioned in mailing list discussions
* References from NVD entry
* Various other places
bugs: []
bugs: [1296466, 1297517]
fixes_instructions: |
Please put the commit hash in "commit" below.

Expand All @@ -84,14 +86,9 @@ fixes_instructions: |

Place any notes you would like to make in the notes field.
fixes:
- commit:
note:
- commit:
note:
- commit: cb3232138e37129e88240a98a1d2aba2187ff57c
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'
Taken from NVD references list with Git commit. Manually confirmed.
vcc_instructions: |
The vulnerability-contributing commits.

Expand All @@ -106,7 +103,7 @@ vcc_instructions: |
Place any notes you would like to make in the notes field.
vccs:
- commit: 1da177e4c3f41524e886b7f1b8a0c1fc7321cac2
note: Discovered automatically by archeogit.
note: Discovered automatically by archeogit. Manually confirmed. This is the inital commit of the repo.
upvotes_instructions: |
For the first round, ignore this upvotes number.

Expand All @@ -129,10 +126,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: No unit tests
fix: False
fix_answer: No unit tests
discovered:
question: |
How was this vulnerability discovered?
Expand All @@ -147,10 +144,10 @@ discovered:

If there is no evidence as to how this vulnerability was found, then please
explain where you looked.
answer:
automated:
contest:
developer:
answer: Ralf Spenneberg of OpenSource Security reported the issue. Does not specify how it was found.
automated: False
contest: False
developer: False
Copy link

Choose a reason for hiding this comment

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

Could it be possibly inferred that a developer would have found it? I took a look at his LinkedIn profile and he seems to be a cybersecurity analyst

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

The answer field should be boolean. In answer_note, please explain
why you come to that conclusion.
note:
answer:
note: You can brute force (or check physically) for this check if it was accounted for.
Copy link

Choose a reason for hiding this comment

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

The discussion of the bugzilla report says that a fuzzer was used to discover this vulnerability, so it is definitely accounted for

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

The answer field should be boolean. In answer_note, please explain
why you come to that conclusion.
note:
answer:
note: No mention of specifications.
answer: False
subsystem:
question: |
What subsystems was the mistake in? These are WITHIN linux kernel
Expand Down Expand Up @@ -219,8 +216,9 @@ subsystem:
e.g.
name: ["subsystemA", "subsystemB"] # ok
name: subsystemA # also ok
name:
note:
name: drivers
note: |
Specifically drivers/usb/serial/visor.c in clie_5_attach.
interesting_commits:
question: |
Are there any interesting commits between your VCC(s) and fix(es)?
Expand Down Expand Up @@ -251,8 +249,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: No internationalization present
sandbox:
question: |
Did this vulnerability violate a sandboxing feature that the system
Expand All @@ -266,8 +264,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: True
note: |
An unprivileged user with physical access could trigger a kernel NULL-pointer dereference.
Copy link

Choose a reason for hiding this comment

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

Not sure if this is related to sandboxing as far as I'm aware

ipc:
question: |
Did the feature that this vulnerability affected use inter-process
Expand All @@ -278,8 +277,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 error is concerning the bulk OUT endpoint of USB devices. When it attempts to communicate
with a USB device without the endpoint it will cause a systen crash.
discussion:
question: |
Was there any discussion surrounding this?
Expand All @@ -305,9 +306,10 @@ 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: True
note: |
https://bugzilla.redhat.com/show_bug.cgi?id=CVE-2015-7566
vouch:
question: |
Was there any part of the fix that involved one person vouching for
Expand All @@ -320,8 +322,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: True
note: Code was reviewed before it was committed.
Copy link

Choose a reason for hiding this comment

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

Are you able to provide a bit more detail into who contributed towards this fix?

stacktrace:
question: |
Are there any stacktraces in the bug reports?
Expand All @@ -335,9 +337,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: Could not find any stacktraces
forgotten_check:
question: |
Does the fix for the vulnerability involve adding a forgotten check?
Expand All @@ -356,8 +358,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: It was never checked to see if the USB device had a bulk OUT endpoint, which caused the errror.
order_of_operations:
question: |
Does the fix for the vulnerability involve correcting an order of
Expand All @@ -369,8 +371,9 @@ 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: |
No order of operations present.
lessons:
question: |
Are there any common lessons we have learned from class that apply to this
Expand All @@ -387,37 +390,37 @@ 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:
applies: False
Copy link

Choose a reason for hiding this comment

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

I think this definitely applies since judging by the commit history, it seems like whoever wrote this code seemed to have forgot to add some logic
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=cb3232138e37129e88240a98a1d2aba2187ff57c

note:
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: Because it was assumed that USB's would be formatted correctly it never accounted for the vulnerability.
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 +451,10 @@ mistakes:

Write a thoughtful entry here that people in the software engineering
industry would find interesting.
answer:
answer: |
There were no checks to make sure that there was an endpoint to write to because it was potentionally assumed
that all USB devices would be normal and working. This led the the error occuring when USb devices were inproperly
formatted or purposefully tampered with.
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 @@ -464,7 +470,7 @@ CWE_instructions: |
CWE: ["123", "456"] # this is ok
CWE: [123, 456] # also ok
CWE: 123 # also ok
CWE:
CWE: 476
CWE_note:
nickname_instructions: |
A catchy name for this vulnerability that would draw attention it.
Expand Down
Loading