diff --git a/cves/kernel/CVE-2013-0290.yml b/cves/kernel/CVE-2013-0290.yml index ed8367e52..dca4b980e 100644 --- a/cves/kernel/CVE-2013-0290.yml +++ b/cves/kernel/CVE-2013-0290.yml @@ -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. @@ -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 @@ -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: @@ -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. @@ -106,7 +114,7 @@ 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. @@ -114,7 +122,7 @@ upvotes_instructions: | 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? @@ -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? @@ -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 + by testing the code using Trinity, a Linux system call fuzzer. + automated: false + contest: false + developer: true autodiscoverable: instructions: | Is it plausible that a fully automated tool could have discovered @@ -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 @@ -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 subsystem: question: | What subsystems was the mistake in? These are WITHIN linux kernel @@ -219,7 +237,7 @@ subsystem: e.g. name: ["subsystemA", "subsystemB"] # ok name: subsystemA # also ok - name: + name: ["net", "core"] note: interesting_commits: question: | @@ -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: @@ -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 @@ -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 @@ -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? @@ -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 @@ -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? @@ -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? @@ -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 @@ -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 @@ -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: | @@ -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 @@ -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. 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 diff --git a/cves/kernel/CVE-2015-8787.yml b/cves/kernel/CVE-2015-8787.yml index 34fcfd6a4..89e22917b 100644 --- a/cves/kernel/CVE-2015-8787.yml +++ b/cves/kernel/CVE-2015-8787.yml @@ -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: '2015-10-27' 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. @@ -54,8 +54,14 @@ description_instructions: | keep too. Your target audience is people just like you before you took any course in - security -description: + security. +description: | + An update to the nf_nat_redirect_ipv4 function in + net/netfilter/nf_nat_redirect.c in the Linux kernel removed a NULL check + which caused an error when attempting to redirect IPv4 packets. Some + interfaces within the system had not yet been fully configured, so with the + NULL check removed packets would be redirected to the NULL pointer causing a crash. + This could be used maliciously in a denial of service attack. 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 @@ -75,7 +81,8 @@ bugs_instructions: | * Mentioned in mailing list discussions * References from NVD entry * Various other places -bugs: [] +bugs: + - https://bugzilla.redhat.com/show_bug.cgi?id=1300731 fixes_instructions: | Please put the commit hash in "commit" below. @@ -89,9 +96,7 @@ fixes: - commit: note: - commit: 94f9cd81436c85d8c3a318ba92e236ede73752fc - 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. @@ -106,7 +111,7 @@ vcc_instructions: | Place any notes you would like to make in the notes field. vccs: - commit: 8b13eddfdf04cbfa561725cfc42d6868fe896f56 - note: Discovered automatically by archeogit. + note: Discovered automatically by archeogit. Manually Confirmed. upvotes_instructions: | For the first round, ignore this upvotes number. @@ -114,7 +119,7 @@ upvotes_instructions: | 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: 5 unit_tested: question: | Were automated unit tests involved in this vulnerability? @@ -129,10 +134,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 fixed code was not unit tested.' discovered: question: | How was this vulnerability discovered? @@ -141,16 +146,17 @@ discovered: originally found. Answer in longform below in "answer", fill in the date in YYYY-MM-DD, and then determine if the vulnerability was found by a Google employee (you can tell from their email address). If it's clear that the - vulenrability was discovered by a contest, fill in the name there. + vulnerability was discovered by a contest, fill in the name there. The automated, contest, and developer flags can be true, false, or nil. If there is no evidence as to how this vulnerability was found, then please explain where you looked. - answer: - automated: - contest: - developer: + answer: | + This vulnerability was discovered by Munehisa Kamata . + automated: false + contest: false + developer: false autodiscoverable: instructions: | Is it plausible that a fully automated tool could have discovered @@ -167,8 +173,10 @@ autodiscoverable: The answer field should be boolean. In answer_note, please explain why you come to that conclusion. - note: - answer: + note: | + Yes a fully automated tool could be used to find this vulnerability, as + passing a NULL value to be redirected would be accepted by the system. + answer: true specification: instructions: | Is there mention of a violation of a specification? For example, the POSIX @@ -184,8 +192,10 @@ specification: The answer field should be boolean. In answer_note, please explain why you come to that conclusion. - note: - answer: + note: | + Violation of TCP specification. The vulnerability in the TCP stack + allowed for packets to be redirected to an unconfigured, NULL interface. + answer: true subsystem: question: | What subsystems was the mistake in? These are WITHIN linux kernel @@ -219,7 +229,7 @@ subsystem: e.g. name: ["subsystemA", "subsystemB"] # ok name: subsystemA # also ok - name: + name: ["net", "netfilter"] note: interesting_commits: question: | @@ -235,8 +245,12 @@ interesting_commits: * Other commits that fixed a similar issue as this vulnerability * Anything else you find interesting. commits: - - commit: - note: + - commit: + note: | + The same issue occurred in 2003, and same fix was used again in 2015. + Below is the bug report with fix, but due to its age no corresponding + commit hash can be found. + https://marc.info/?l=netfilter-devel&m=106668497403047&w=2 - commit: note: i18n: @@ -251,8 +265,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 TCP connections to a NULL reference, + which was not impacted by internationalization. sandbox: question: | Did this vulnerability violate a sandboxing feature that the system @@ -266,8 +282,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 @@ -278,8 +296,11 @@ 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 the TCP connection within the system, a form of + IPC, by allowing IPv4 packets to be sent to an unconfigured, NULL + interface. discussion: question: | Was there any discussion surrounding this? @@ -305,9 +326,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 removal of a NULL check and no discussion was + had around it. vouch: question: | Was there any part of the fix that involved one person vouching for @@ -320,8 +343,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: | + Both the original commit as well as the fix commit had several developers + sign off on them. stacktrace: question: | Are there any stacktraces in the bug reports? @@ -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: true + stacktrace_with_fix: true + note: 'The stack trace was used to find and fix the issue.' forgotten_check: question: | Does the fix for the vulnerability involve adding a forgotten check? @@ -356,8 +381,11 @@ 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 vulnerability was caused by a removal of a NULL check, forgetting it + was required to prevent an infinite loop. This vulnerability was fixed once + the forgotten NULL check was restored. order_of_operations: question: | Does the fix for the vulnerability involve correcting an order of @@ -369,8 +397,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 @@ -387,37 +415,46 @@ 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: | + 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 NULL check was removed, and once the NULL value 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 NULL 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: | @@ -448,7 +485,12 @@ mistakes: Write a thoughtful entry here that people in the software engineering industry would find interesting. - answer: + answer: | + This vulnerability was caused by a slip, a fix for the same issue had + occurred and been fixed in 2003 by adding a NULL check to ensure IPv4 + packets were not redirected to an unconfigured, NULL interface. In 2015 + however the check was accidentally removed, and the vulnerability wasn't + fixed until the missing NULL check was restored. 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 @@ -466,12 +508,10 @@ CWE_instructions: | CWE: 123 # also ok CWE: - 476 -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. If the report mentions a nickname, use that. Must be under 30 characters. Optional. -nickname: +nickname: 'Kernel NULL Pointer Deref' CVSS: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H