Skip to content

Commit 1cd48a2

Browse files
authored
fix: handling of product versions and vendor name guessing (#3225)
removed use of `ECOSYSTEM` versions, and corrected vendor name guessing from package name. fixes #3200
1 parent a098ef0 commit 1cd48a2

File tree

2 files changed

+29
-12
lines changed

2 files changed

+29
-12
lines changed

cve_bin_tool/data_sources/osv_source.py

+14-8
Original file line numberDiff line numberDiff line change
@@ -297,7 +297,9 @@ def format_data(self, all_cve_entries):
297297
vendor = (
298298
"unknown" # OSV Schema does not provide vendor names for packages
299299
)
300-
if "/" in product and "github":
300+
if (
301+
"github.com/" in product
302+
): # if package name is of format github.com/xxxx/yyyy xxxx can be vendor name and yyyy is package name
301303
vendor = product.split("/")[-2] # trying to guess vendor name
302304
product = product.split("/")[-1]
303305

@@ -314,7 +316,7 @@ def format_data(self, all_cve_entries):
314316

315317
events = None
316318
for ranges in package.get("ranges", []):
317-
if ranges["type"] != "GIT":
319+
if ranges["type"] == "SEMVER":
318320
events = ranges["events"]
319321

320322
if events is None:
@@ -323,10 +325,12 @@ def format_data(self, all_cve_entries):
323325
if versions == []:
324326
continue
325327

326-
affected["versionStartIncluding"] = versions[0]
327-
affected["versionEndIncluding"] = versions[-1]
328+
version_affected = affected.copy()
328329

329-
affected_data.append(affected)
330+
version_affected["versionStartIncluding"] = versions[0]
331+
version_affected["versionEndIncluding"] = versions[-1]
332+
333+
affected_data.append(version_affected)
330334
else:
331335
introduced = None
332336
fixed = None
@@ -338,12 +342,14 @@ def format_data(self, all_cve_entries):
338342
fixed = event.get("fixed")
339343

340344
if fixed is not None:
341-
affected["versionStartIncluding"] = introduced
342-
affected["versionEndExcluding"] = fixed
345+
range_affected = affected.copy()
346+
347+
range_affected["versionStartIncluding"] = introduced
348+
range_affected["versionEndExcluding"] = fixed
343349

344350
fixed = None
345351

346-
affected_data.append(affected)
352+
affected_data.append(range_affected)
347353

348354
return severity_data, affected_data
349355

test/test_source_osv.py

+15-4
Original file line numberDiff line numberDiff line change
@@ -155,7 +155,18 @@ def teardown_class(cls):
155155
"CVSS_vector": "unknown",
156156
"last_modified": "2021-09-26T23:33:39.795406Z",
157157
},
158-
"affected_data": [],
158+
"affected_data": [
159+
{
160+
"cve_id": "CVE-2018-20133",
161+
"vendor": "unknown",
162+
"product": "ymlref",
163+
"version": "*",
164+
"versionStartIncluding": "0.1.0",
165+
"versionStartExcluding": "",
166+
"versionEndIncluding": "0.1.1",
167+
"versionEndExcluding": "",
168+
}
169+
],
159170
},
160171
"CVE-2014-5461": {
161172
"severity_data": {
@@ -173,10 +184,10 @@ def teardown_class(cls):
173184
"vendor": "unknown",
174185
"product": "lua5.1",
175186
"version": "*",
176-
"versionStartIncluding": "0",
187+
"versionStartIncluding": "5.1.4-5",
177188
"versionStartExcluding": "",
178-
"versionEndIncluding": "",
179-
"versionEndExcluding": "5.1.4-5+deb6u1",
189+
"versionEndIncluding": "5.1.4-5",
190+
"versionEndExcluding": "",
180191
}
181192
],
182193
},

0 commit comments

Comments
 (0)