|
@@ -255,7 +255,7 @@ def initialize_db(conn):
|
|
|
c.execute("CREATE TABLE IF NOT EXISTS META (YEAR INTEGER UNIQUE, DATE TEXT)")
|
|
|
|
|
|
c.execute("CREATE TABLE IF NOT EXISTS NVD (ID TEXT UNIQUE, SUMMARY TEXT, \
|
|
|
- SCOREV2 TEXT, SCOREV3 TEXT, MODIFIED INTEGER, VECTOR TEXT, VECTORSTRING TEXT)")
|
|
|
+ SCOREV2 TEXT, SCOREV3 TEXT, SCOREV4 TEXT, MODIFIED INTEGER, VECTOR TEXT, VECTORSTRING TEXT)")
|
|
|
|
|
|
c.execute("CREATE TABLE IF NOT EXISTS PRODUCTS (ID TEXT, \
|
|
|
VENDOR TEXT, PRODUCT TEXT, VERSION_START TEXT, OPERATOR_START TEXT, \
|
|
@@ -361,12 +361,18 @@ def update_db(conn, elt):
|
|
|
cvssv3 = cvssv3 or elt['cve']['metrics']['cvssMetricV31'][0]['cvssData']['baseScore']
|
|
|
except KeyError:
|
|
|
pass
|
|
|
+ cvssv3 = cvssv3 or 0.0
|
|
|
+ try:
|
|
|
+ accessVector = accessVector or elt['cve']['metrics']['cvssMetricV40'][0]['cvssData']['attackVector']
|
|
|
+ vectorString = vectorString or elt['cve']['metrics']['cvssMetricV40'][0]['cvssData']['vectorString']
|
|
|
+ cvssv4 = elt['cve']['metrics']['cvssMetricV40'][0]['cvssData']['baseScore']
|
|
|
+ except KeyError:
|
|
|
+ cvssv4 = 0.0
|
|
|
accessVector = accessVector or "UNKNOWN"
|
|
|
vectorString = vectorString or "UNKNOWN"
|
|
|
- cvssv3 = cvssv3 or 0.0
|
|
|
|
|
|
- conn.execute("insert or replace into NVD values (?, ?, ?, ?, ?, ?, ?)",
|
|
|
- [cveId, cveDesc, cvssv2, cvssv3, date, accessVector, vectorString]).close()
|
|
|
+ conn.execute("insert or replace into NVD values (?, ?, ?, ?, ?, ?, ?, ?)",
|
|
|
+ [cveId, cveDesc, cvssv2, cvssv3, cvssv4, date, accessVector, vectorString]).close()
|
|
|
|
|
|
try:
|
|
|
# Remove any pre-existing CVE configuration. Even for partial database
|