mirror of
https://git.yoctoproject.org/poky
synced 2026-01-29 21:08:42 +01:00
cve-update-db-native: FKIE CVE parsing: Use Secondary metric
If there is no primary metric use the Secondary one. (From OE-Core rev: 5ad0516aba120d9eba5f10afa3a4de3d25fd31fc) Signed-off-by: Jonathan Schnitzler <jonathan.schnitzler@faro.com> Signed-off-by: Peter Marko <peter.marko@siemens.com> Signed-off-by: Mathieu Dubois-Briand <mathieu.dubois-briand@bootlin.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
committed by
Richard Purdie
parent
8b5c222b08
commit
52696e1d4a
@@ -322,6 +322,15 @@ def update_db_nvdjson(conn, jsondata):
|
||||
for config in configurations:
|
||||
parse_node_and_insert(conn, config, cveId, True)
|
||||
|
||||
def get_metric_entry(metric):
|
||||
primaries = [c for c in metric if c['type'] == "Primary"]
|
||||
secondaries = [c for c in metric if c['type'] == "Secondary"]
|
||||
if len(primaries) > 0:
|
||||
return primaries[0]
|
||||
elif len(secondaries)>0:
|
||||
return secondaries[0]
|
||||
return None
|
||||
|
||||
def update_db_fkie(conn, jsondata):
|
||||
import json
|
||||
root = json.loads(jsondata)
|
||||
@@ -342,37 +351,41 @@ def update_db_fkie(conn, jsondata):
|
||||
cveDesc = elt['descriptions'][0]['value']
|
||||
date = elt['lastModified']
|
||||
try:
|
||||
for m in elt['metrics']['cvssMetricV2']:
|
||||
if m['type'] == 'Primary':
|
||||
accessVector = m['cvssData']['accessVector']
|
||||
vectorString = m['cvssData']['vectorString']
|
||||
cvssv2 = m['cvssData']['baseScore']
|
||||
if 'cvssMetricV2' in elt['metrics']:
|
||||
entry = get_metric_entry(elt['metrics']['cvssMetricV2'])
|
||||
if entry:
|
||||
accessVector = entry['cvssData']['accessVector']
|
||||
vectorString = entry['cvssData']['vectorString']
|
||||
cvssv2 = entry['cvssData']['baseScore']
|
||||
except KeyError:
|
||||
cvssv2 = 0.0
|
||||
try:
|
||||
for m in elt['metrics']['cvssMetricV30']:
|
||||
if m['type'] == 'Primary':
|
||||
accessVector = m['cvssData']['attackVector']
|
||||
vectorString = m['cvssData']['vectorString']
|
||||
cvssv3 = m['cvssData']['baseScore']
|
||||
if 'cvssMetricV30' in elt['metrics']:
|
||||
entry = get_metric_entry(elt['metrics']['cvssMetricV30'])
|
||||
if entry:
|
||||
accessVector = entry['cvssData']['attackVector']
|
||||
vectorString = entry['cvssData']['vectorString']
|
||||
cvssv3 = entry['cvssData']['baseScore']
|
||||
except KeyError:
|
||||
accessVector = accessVector or "UNKNOWN"
|
||||
cvssv3 = 0.0
|
||||
try:
|
||||
for m in elt['metrics']['cvssMetricV31']:
|
||||
if m['type'] == 'Primary':
|
||||
accessVector = m['cvssData']['attackVector']
|
||||
vectorString = m['cvssData']['vectorString']
|
||||
cvssv3 = m['cvssData']['baseScore']
|
||||
if 'cvssMetricV31' in elt['metrics']:
|
||||
entry = get_metric_entry(elt['metrics']['cvssMetricV31'])
|
||||
if entry:
|
||||
accessVector = entry['cvssData']['attackVector']
|
||||
vectorString = entry['cvssData']['vectorString']
|
||||
cvssv3 = entry['cvssData']['baseScore']
|
||||
except KeyError:
|
||||
accessVector = accessVector or "UNKNOWN"
|
||||
cvssv3 = 0.0
|
||||
try:
|
||||
for m in elt['metrics']['cvssMetricV40']:
|
||||
if m['type'] == 'Primary':
|
||||
accessVector = m['cvssData']['attackVector']
|
||||
vectorString = m['cvssData']['vectorString']
|
||||
cvssv4 = m['cvssData']['baseScore']
|
||||
if 'cvssMetricV40' in elt['metrics']:
|
||||
entry = get_metric_entry(elt['metrics']['cvssMetricV40'])
|
||||
if entry:
|
||||
accessVector = entry['cvssData']['attackVector']
|
||||
vectorString = entry['cvssData']['vectorString']
|
||||
cvssv4 = entry['cvssData']['baseScore']
|
||||
except KeyError:
|
||||
accessVector = accessVector or "UNKNOWN"
|
||||
cvssv4 = 0.0
|
||||
|
||||
Reference in New Issue
Block a user