mirror of
https://git.yoctoproject.org/poky
synced 2026-09-13 09:49:32 +02: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:
|
for config in configurations:
|
||||||
parse_node_and_insert(conn, config, cveId, True)
|
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):
|
def update_db_fkie(conn, jsondata):
|
||||||
import json
|
import json
|
||||||
root = json.loads(jsondata)
|
root = json.loads(jsondata)
|
||||||
@@ -342,37 +351,41 @@ def update_db_fkie(conn, jsondata):
|
|||||||
cveDesc = elt['descriptions'][0]['value']
|
cveDesc = elt['descriptions'][0]['value']
|
||||||
date = elt['lastModified']
|
date = elt['lastModified']
|
||||||
try:
|
try:
|
||||||
for m in elt['metrics']['cvssMetricV2']:
|
if 'cvssMetricV2' in elt['metrics']:
|
||||||
if m['type'] == 'Primary':
|
entry = get_metric_entry(elt['metrics']['cvssMetricV2'])
|
||||||
accessVector = m['cvssData']['accessVector']
|
if entry:
|
||||||
vectorString = m['cvssData']['vectorString']
|
accessVector = entry['cvssData']['accessVector']
|
||||||
cvssv2 = m['cvssData']['baseScore']
|
vectorString = entry['cvssData']['vectorString']
|
||||||
|
cvssv2 = entry['cvssData']['baseScore']
|
||||||
except KeyError:
|
except KeyError:
|
||||||
cvssv2 = 0.0
|
cvssv2 = 0.0
|
||||||
try:
|
try:
|
||||||
for m in elt['metrics']['cvssMetricV30']:
|
if 'cvssMetricV30' in elt['metrics']:
|
||||||
if m['type'] == 'Primary':
|
entry = get_metric_entry(elt['metrics']['cvssMetricV30'])
|
||||||
accessVector = m['cvssData']['attackVector']
|
if entry:
|
||||||
vectorString = m['cvssData']['vectorString']
|
accessVector = entry['cvssData']['attackVector']
|
||||||
cvssv3 = m['cvssData']['baseScore']
|
vectorString = entry['cvssData']['vectorString']
|
||||||
|
cvssv3 = entry['cvssData']['baseScore']
|
||||||
except KeyError:
|
except KeyError:
|
||||||
accessVector = accessVector or "UNKNOWN"
|
accessVector = accessVector or "UNKNOWN"
|
||||||
cvssv3 = 0.0
|
cvssv3 = 0.0
|
||||||
try:
|
try:
|
||||||
for m in elt['metrics']['cvssMetricV31']:
|
if 'cvssMetricV31' in elt['metrics']:
|
||||||
if m['type'] == 'Primary':
|
entry = get_metric_entry(elt['metrics']['cvssMetricV31'])
|
||||||
accessVector = m['cvssData']['attackVector']
|
if entry:
|
||||||
vectorString = m['cvssData']['vectorString']
|
accessVector = entry['cvssData']['attackVector']
|
||||||
cvssv3 = m['cvssData']['baseScore']
|
vectorString = entry['cvssData']['vectorString']
|
||||||
|
cvssv3 = entry['cvssData']['baseScore']
|
||||||
except KeyError:
|
except KeyError:
|
||||||
accessVector = accessVector or "UNKNOWN"
|
accessVector = accessVector or "UNKNOWN"
|
||||||
cvssv3 = 0.0
|
cvssv3 = 0.0
|
||||||
try:
|
try:
|
||||||
for m in elt['metrics']['cvssMetricV40']:
|
if 'cvssMetricV40' in elt['metrics']:
|
||||||
if m['type'] == 'Primary':
|
entry = get_metric_entry(elt['metrics']['cvssMetricV40'])
|
||||||
accessVector = m['cvssData']['attackVector']
|
if entry:
|
||||||
vectorString = m['cvssData']['vectorString']
|
accessVector = entry['cvssData']['attackVector']
|
||||||
cvssv4 = m['cvssData']['baseScore']
|
vectorString = entry['cvssData']['vectorString']
|
||||||
|
cvssv4 = entry['cvssData']['baseScore']
|
||||||
except KeyError:
|
except KeyError:
|
||||||
accessVector = accessVector or "UNKNOWN"
|
accessVector = accessVector or "UNKNOWN"
|
||||||
cvssv4 = 0.0
|
cvssv4 = 0.0
|
||||||
|
|||||||
Reference in New Issue
Block a user