@@ -59,6 +59,60 @@ class CVEDB:
59
59
gad_source .GAD_Source ,
60
60
]
61
61
62
+ INSERT_QUERIES = {
63
+ "insert_severity" : """
64
+ INSERT or REPLACE INTO cve_severity(
65
+ CVE_number,
66
+ severity,
67
+ description,
68
+ score,
69
+ cvss_version,
70
+ cvss_vector,
71
+ data_source,
72
+ last_modified
73
+ )
74
+ VALUES (?, ?, ?, ?, ?, ?, ?, ?)
75
+ """ ,
76
+ "insert_cve_range" : """
77
+ INSERT or REPLACE INTO cve_range(
78
+ cve_number,
79
+ vendor,
80
+ product,
81
+ version,
82
+ versionStartIncluding,
83
+ versionStartExcluding,
84
+ versionEndIncluding,
85
+ versionEndExcluding,
86
+ data_source
87
+ )
88
+ VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)
89
+ """ ,
90
+ "insert_exploit" : """
91
+ INSERT or REPLACE INTO cve_exploited (
92
+ cve_number,
93
+ product,
94
+ description
95
+ )
96
+ VALUES (?,?,?)
97
+ """ ,
98
+ "insert_cve_metrics" : """
99
+ INSERT or REPLACE INTO cve_metrics (
100
+ cve_number,
101
+ metric_id,
102
+ metric_score,
103
+ metric_field
104
+ )
105
+ VALUES (?, ?, ?, ?)
106
+ """ ,
107
+ "insert_metrics" : """
108
+ INSERT or REPLACE INTO metrics (
109
+ metrics_id,
110
+ metrics_name
111
+ )
112
+ VALUES (?, ?)
113
+ """ ,
114
+ }
115
+
62
116
def __init__ (
63
117
self ,
64
118
sources = None ,
@@ -316,66 +370,6 @@ def table_schemas(self):
316
370
metrics_table ,
317
371
)
318
372
319
- def insert_queries (self ):
320
- cve_severity = """
321
- cve_severity(
322
- CVE_number,
323
- severity,
324
- description,
325
- score,
326
- cvss_version,
327
- cvss_vector,
328
- data_source,
329
- last_modified
330
- )
331
- VALUES (?, ?, ?, ?, ?, ?, ?, ?)
332
- """
333
- insert_severity = f"INSERT or REPLACE INTO { cve_severity } "
334
- insert_cve_range = """
335
- INSERT or REPLACE INTO cve_range(
336
- cve_number,
337
- vendor,
338
- product,
339
- version,
340
- versionStartIncluding,
341
- versionStartExcluding,
342
- versionEndIncluding,
343
- versionEndExcluding,
344
- data_source
345
- ) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)
346
- """
347
- insert_exploit = """
348
- INSERT or REPLACE INTO cve_exploited (
349
- cve_number,
350
- product,
351
- description
352
- )
353
- VALUES (?,?,?)
354
- """
355
- insert_cve_metrics = """
356
- INSERT or REPLACE INTO cve_metrics (
357
- cve_number,
358
- metric_id,
359
- metric_score,
360
- metric_field
361
- )
362
- VALUES (?, ?, ?, ?)
363
- """
364
- insert_metrics = """
365
- INSERT or REPLACE INTO metrics (
366
- metrics_id,
367
- metrics_name
368
- )
369
- VALUES (?, ?)
370
- """
371
- return (
372
- insert_severity ,
373
- insert_cve_range ,
374
- insert_exploit ,
375
- insert_cve_metrics ,
376
- insert_metrics ,
377
- )
378
-
379
373
def init_database (self ) -> None :
380
374
"""Initialize db tables used for storing cve/version data"""
381
375
@@ -492,7 +486,7 @@ def populate_db(self) -> None:
492
486
self .db_close ()
493
487
494
488
def populate_severity (self , severity_data , cursor , data_source ):
495
- ( insert_severity , _ , _ , _ , _ ) = self .insert_queries ()
489
+ insert_severity = self .INSERT_QUERIES [ "insert_severity" ]
496
490
del_cve_range = "DELETE from cve_range where CVE_number=? and data_source=?"
497
491
498
492
for cve in severity_data :
@@ -536,7 +530,7 @@ def populate_severity(self, severity_data, cursor, data_source):
536
530
cursor .execute (del_cve_range , [cve ["ID" ], data_source ])
537
531
538
532
def populate_affected (self , affected_data , cursor , data_source ):
539
- ( _ , insert_cve_range , _ , _ , _ ) = self .insert_queries ()
533
+ insert_cve_range = self .INSERT_QUERIES [ "insert_cve_range" ]
540
534
try :
541
535
cursor .executemany (
542
536
insert_cve_range ,
@@ -561,7 +555,7 @@ def populate_affected(self, affected_data, cursor, data_source):
561
555
def populate_metrics (self ):
562
556
cursor = self .db_open_and_get_cursor ()
563
557
# Insert a row without specifying cve_metrics_id
564
- ( _ , _ , _ , _ , insert_metrics ) = self .insert_queries ()
558
+ insert_metrics = self .INSERT_QUERIES [ "insert_metrics" ]
565
559
data = [
566
560
(1 , "EPSS" ),
567
561
(2 , "CVSS-2" ),
@@ -764,14 +758,14 @@ def create_exploit_db(self):
764
758
self .db_close ()
765
759
766
760
def populate_exploit_db (self , exploits ):
767
- ( _ , _ , insert_exploit , _ , _ ) = self .insert_queries ()
761
+ insert_exploit = self .INSERT_QUERIES [ "insert_exploit" ]
768
762
cursor = self .db_open_and_get_cursor ()
769
763
cursor .executemany (insert_exploit , exploits )
770
764
self .connection .commit ()
771
765
self .db_close ()
772
766
773
767
def store_epss_data (self ):
774
- ( _ , _ , _ , insert_cve_metrics , _ ) = self .insert_queries ()
768
+ insert_cve_metrics = self .INSERT_QUERIES [ "insert_cve_metrics" ]
775
769
cursor = self .db_open_and_get_cursor ()
776
770
cursor .executemany (insert_cve_metrics , self .epss_data )
777
771
self .connection .commit ()
@@ -925,13 +919,6 @@ def db_to_json(self, path, private_key, passphrase):
925
919
shutil .rmtree (temp_gnupg_home )
926
920
927
921
def json_to_db (self , cursor , db_column , json_data ):
928
- (
929
- insert_severity ,
930
- insert_cve_range ,
931
- insert_exploit ,
932
- insert_cve_metrics ,
933
- insert_metrics ,
934
- ) = self .insert_queries ()
935
922
columns = []
936
923
for data in json_data :
937
924
column = list (data .keys ())
@@ -947,15 +934,15 @@ def json_to_db(self, cursor, db_column, json_data):
947
934
values .append (list (value ))
948
935
949
936
if db_column == "cve_exploited" :
950
- cursor .executemany (insert_exploit , values )
937
+ cursor .executemany (self . INSERT_QUERIES [ " insert_exploit" ] , values )
951
938
elif db_column == "cve_range" :
952
- cursor .executemany (insert_cve_range , values )
939
+ cursor .executemany (self . INSERT_QUERIES [ " insert_cve_range" ] , values )
953
940
elif db_column == "cve_severity" :
954
- cursor .executemany (insert_severity , values )
941
+ cursor .executemany (self . INSERT_QUERIES [ " insert_severity" ] , values )
955
942
elif db_column == "cve_metrics" :
956
- cursor .executemany (insert_cve_metrics , values )
943
+ cursor .executemany (self . INSERT_QUERIES [ " insert_cve_metrics" ] , values )
957
944
elif db_column == "metrics" :
958
- cursor .executemany (insert_metrics , values )
945
+ cursor .executemany (self . INSERT_QUERIES [ " insert_metrics" ] , values )
959
946
960
947
def json_to_db_wrapper (self , path , pubkey , ignore_signature , log_signature_error ):
961
948
try :
0 commit comments