Skip to content

Commit 29b2882

Browse files
committed
fix: improve kerberos checker
- Drop mit:kerberos and get_version as NVD NIST has deprecated this unusual versioning since January 2020: https://nvd.nist.gov/products/cpe/detail/335C9545-32F8-4473-97BD-636F1532525F?namingFormat=2.3&orderBy=CPEURI&keyword=cpe%3A2.3%3Aa%3Amit%3Akerberos%3A5-1.5.1%3A*%3A*%3A*%3A*%3A*%3A*%3A*&status=FINAL%2CDEPRECATED - Add debian and openwrt test packages Signed-off-by: Fabrice Fontaine <[email protected]>
1 parent 85d1f25 commit 29b2882

File tree

4 files changed

+18
-30
lines changed

4 files changed

+18
-30
lines changed

cve_bin_tool/checkers/kerberos.py

Lines changed: 2 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
CVE checker for kerberos (CLI/library)
77
88
References:
9-
https://www.cvedetails.com/vulnerability-list/vendor_id-42/product_id-61/MIT-Kerberos.html
9+
https://www.cvedetails.com/product/12666/MIT-Kerberos-5.html?vendor_id=42
1010
"""
1111
from cve_bin_tool.checkers import Checker
1212

@@ -18,27 +18,4 @@ class KerberosChecker(Checker):
1818
r"KRB5_BRAND: krb5-(\d+\.\d+\.?\d?)-final",
1919
r"kerberos 5[_-][apl-]*(1+\.[0-9]+(\.[0-9]+)*)",
2020
]
21-
VENDOR_PRODUCT = [("mit", "kerberos"), ("mit", "kerberos_5")]
22-
23-
def get_version(self, lines, filename):
24-
version_info = super().get_version(lines, filename)
25-
26-
# currently we're only detecting kerberos 5, so return a double-version_info list
27-
# if we ever detect kerberos that's not 5, this if statement will change
28-
if "is_or_contains" in version_info:
29-
version_info5 = [dict(), dict()]
30-
version_info5[0] = version_info
31-
version_info5[1] = dict()
32-
version_info5[1]["is_or_contains"] = version_info["is_or_contains"]
33-
version_info5[1]["productname"] = "kerberos_5"
34-
35-
# strip the leading "5-" off the version for 'kerberos_5' if there is one
36-
# or conversely, add one to the 'kerberos' listing if there isn't
37-
if version_info["version"][:2] == "5-":
38-
version_info5[1]["version"] = version_info["version"][2:]
39-
else:
40-
version_info5[1]["version"] = version_info["version"]
41-
version_info5[0]["version"] = "5-{}".format(version_info["version"])
42-
return version_info5
43-
44-
return version_info
21+
VENDOR_PRODUCT = [("mit", "kerberos_5")]
Binary file not shown.
Binary file not shown.

test/test_data/kerberos.py

Lines changed: 16 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,10 @@
11
# Copyright (C) 2021 Intel Corporation
22
# SPDX-License-Identifier: GPL-3.0-or-later
33

4-
from __future__ import annotations
5-
64
mapping_test_data = [
75
{
86
"product": "kerberos",
9-
"version": "5-1.15.1",
7+
"version": "1.15.1",
108
"version_strings": [
119
"An unknown option was passed in to kerberos",
1210
"CLIENT kerberos 5-1.15.1",
@@ -15,12 +13,25 @@
1513
},
1614
{
1715
"product": "kerberos",
18-
"version": "5-1.15.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1",
16+
"version": "1.15.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1",
1917
"version_strings": [
2018
"An unknown option was passed in to kerberos",
2119
"CLIENT kerberos 5-1.15.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1",
2220
"KRB5_BRAND: ",
2321
],
2422
},
2523
]
26-
package_test_data: list[dict] = []
24+
package_test_data = [
25+
{
26+
"url": "http://ftp.fr.debian.org/debian/pool/main/k/krb5/",
27+
"package_name": "libkrb5-3_1.12.1+dfsg-19+deb8u4_amd64.deb",
28+
"product": "kerberos",
29+
"version": "1.12.1",
30+
},
31+
{
32+
"url": "https://downloads.openwrt.org/releases/packages-19.07/x86_64/packages/",
33+
"package_name": "krb5-libs_1.17-2_x86_64.ipk",
34+
"product": "kerberos",
35+
"version": "1.17",
36+
},
37+
]

0 commit comments

Comments
 (0)