@@ -178,6 +178,47 @@ public static void insertSoftware(final Connection conn, int vulnerabilityId, St
178
178
* @param v3BaseScore the CVSS v3 base score
179
179
* @param v3BaseSeverity the CVSS v3 base severity
180
180
* @param v3Version the CVSS v3 version
181
+ * @param v4version CVSS v4 data
182
+ * @param v4attackVector CVSS v4 data
183
+ * @param v4attackComplexity CVSS v4 data
184
+ * @param v4attackRequirements CVSS v4 data
185
+ * @param v4privilegesRequired CVSS v4 data
186
+ * @param v4userInteraction CVSS v4 data
187
+ * @param v4vulnConfidentialityImpact CVSS v4 data
188
+ * @param v4vulnIntegrityImpact CVSS v4 data
189
+ * @param v4vulnAvailabilityImpact CVSS v4 data
190
+ * @param v4subConfidentialityImpact CVSS v4 data
191
+ * @param v4subIntegrityImpact CVSS v4 data
192
+ * @param v4subAvailabilityImpact CVSS v4 data
193
+ * @param v4exploitMaturity CVSS v4 data
194
+ * @param v4confidentialityRequirement CVSS v4 data
195
+ * @param v4integrityRequirement CVSS v4 data
196
+ * @param v4availabilityRequirement CVSS v4 data
197
+ * @param v4modifiedAttackVector CVSS v4 data
198
+ * @param v4modifiedAttackComplexity CVSS v4 data
199
+ * @param v4modifiedAttackRequirements CVSS v4 data
200
+ * @param v4modifiedPrivilegesRequired CVSS v4 data
201
+ * @param v4modifiedUserInteraction CVSS v4 data
202
+ * @param v4modifiedVulnConfidentialityImpact CVSS v4 data
203
+ * @param v4modifiedVulnIntegrityImpact CVSS v4 data
204
+ * @param v4modifiedVulnAvailabilityImpact CVSS v4 data
205
+ * @param v4modifiedSubConfidentialityImpact CVSS v4 data
206
+ * @param v4modifiedSubIntegrityImpact CVSS v4 data
207
+ * @param v4modifiedSubAvailabilityImpact CVSS v4 data
208
+ * @param v4safety CVSS v4 data
209
+ * @param v4automatable CVSS v4 data
210
+ * @param v4recovery CVSS v4 data
211
+ * @param v4valueDensity CVSS v4 data
212
+ * @param v4vulnerabilityResponseEffort CVSS v4 data
213
+ * @param v4providerUrgency CVSS v4 data
214
+ * @param v4baseScore CVSS v4 data
215
+ * @param v4baseSeverity CVSS v4 data
216
+ * @param v4threatScore CVSS v4 data
217
+ * @param v4threatSeverity CVSS v4 data
218
+ * @param v4environmentalScore CVSS v4 data
219
+ * @param v4environmentalSeverity CVSS v4 data
220
+ * @param v4source CVSS v4 data
221
+ * @param v4type CVSS v4 data
181
222
* @return a result set containing the vulnerability id
182
223
* @throws SQLException thrown if there is an error updating or inserting
183
224
* the vulnerability
@@ -192,7 +233,20 @@ public static ResultSet updateVulnerability(final Connection conn, String cve,
192
233
Float v3ImpactScore , String v3AttackVector , String v3AttackComplexity ,
193
234
String v3PrivilegesRequired , String v3UserInteraction , String v3Scope ,
194
235
String v3ConfidentialityImpact , String v3IntegrityImpact , String v3AvailabilityImpact ,
195
- Float v3BaseScore , String v3BaseSeverity , String v3Version ) throws SQLException {
236
+ Float v3BaseScore , String v3BaseSeverity , String v3Version , String v4version ,
237
+ String v4attackVector , String v4attackComplexity , String v4attackRequirements ,
238
+ String v4privilegesRequired , String v4userInteraction , String v4vulnConfidentialityImpact ,
239
+ String v4vulnIntegrityImpact , String v4vulnAvailabilityImpact , String v4subConfidentialityImpact ,
240
+ String v4subIntegrityImpact , String v4subAvailabilityImpact , String v4exploitMaturity ,
241
+ String v4confidentialityRequirement , String v4integrityRequirement , String v4availabilityRequirement ,
242
+ String v4modifiedAttackVector , String v4modifiedAttackComplexity , String v4modifiedAttackRequirements ,
243
+ String v4modifiedPrivilegesRequired , String v4modifiedUserInteraction , String v4modifiedVulnConfidentialityImpact ,
244
+ String v4modifiedVulnIntegrityImpact , String v4modifiedVulnAvailabilityImpact , String v4modifiedSubConfidentialityImpact ,
245
+ String v4modifiedSubIntegrityImpact , String v4modifiedSubAvailabilityImpact , String v4safety ,
246
+ String v4automatable , String v4recovery , String v4valueDensity , String v4vulnerabilityResponseEffort ,
247
+ String v4providerUrgency , Float v4baseScore , String v4baseSeverity , Float v4threatScore ,
248
+ String v4threatSeverity , Float v4environmentalScore , String v4environmentalSeverity ,
249
+ String v4source , String v4type ) throws SQLException {
196
250
197
251
final SimpleResultSet ret = new SimpleResultSet ();
198
252
ret .addColumn ("id" , Types .INTEGER , 10 , 0 );
@@ -240,7 +294,22 @@ public static ResultSet updateVulnerability(final Connection conn, String cve,
240
294
+ "v3ImpactScore=?, v3AttackVector=?, v3AttackComplexity=?, "
241
295
+ "v3PrivilegesRequired=?, v3UserInteraction=?, v3Scope=?, "
242
296
+ "v3ConfidentialityImpact=?, v3IntegrityImpact=?, v3AvailabilityImpact=?, "
243
- + "v3BaseScore=?, v3BaseSeverity=?, v3Version=? "
297
+ + "v3BaseScore=?, v3BaseSeverity=?, v3Version=?, v4version=?, v4attackVector=?, "
298
+ + "v4attackComplexity=?, v4attackRequirements=?, v4privilegesRequired=?, "
299
+ + "v4userInteraction=?, v4vulnConfidentialityImpact=?, v4vulnIntegrityImpact=?, "
300
+ + "v4vulnAvailabilityImpact=?, v4subConfidentialityImpact=?, v4subIntegrityImpact=?, "
301
+ + "v4subAvailabilityImpact=?, v4exploitMaturity=?, "
302
+ + "v4confidentialityRequirement=?, v4integrityRequirement=?, "
303
+ + "v4availabilityRequirement=?, v4modifiedAttackVector=?, "
304
+ + "v4modifiedAttackComplexity=?, v4modifiedAttackRequirements=?, "
305
+ + "v4modifiedPrivilegesRequired=?, v4modifiedUserInteraction=?, "
306
+ + "v4modifiedVulnConfidentialityImpact=?, v4modifiedVulnIntegrityImpact=?, "
307
+ + "v4modifiedVulnAvailabilityImpact=?, v4modifiedSubConfidentialityImpact=?, "
308
+ + "v4modifiedSubIntegrityImpact=?, v4modifiedSubAvailabilityImpact=?, "
309
+ + "v4safety=?, v4automatable=?, v4recovery=?, v4valueDensity=?, "
310
+ + "v4vulnerabilityResponseEffort=?, v4providerUrgency=?, v4baseScore=?, "
311
+ + "v4baseSeverity=?, v4threatScore=?, v4threatSeverity=?, v4environmentalScore=?, "
312
+ + "v4environmentalSeverity=?, v4source=?, v4type=?"
244
313
+ "WHERE id=?" );
245
314
} else {
246
315
//just do insert
@@ -255,8 +324,22 @@ public static ResultSet updateVulnerability(final Connection conn, String cve,
255
324
+ "v3ImpactScore, v3AttackVector, v3AttackComplexity, "
256
325
+ "v3PrivilegesRequired, v3UserInteraction, v3Scope, "
257
326
+ "v3ConfidentialityImpact, v3IntegrityImpact, v3AvailabilityImpact, "
258
- + "v3BaseScore, v3BaseSeverity, v3Version, cve) VALUES (?, ?, ?, ?, ?, ?, "
259
- + "?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)" ,
327
+ + "v3BaseScore, v3BaseSeverity, v3Version, v4version, v4attackVector, "
328
+ + "v4attackComplexity, v4attackRequirements, v4privilegesRequired, "
329
+ + "v4userInteraction, v4vulnConfidentialityImpact, v4vulnIntegrityImpact, "
330
+ + "v4vulnAvailabilityImpact, v4subConfidentialityImpact, v4subIntegrityImpact, "
331
+ + "v4subAvailabilityImpact, v4exploitMaturity,v4confidentialityRequirement, "
332
+ + "v4integrityRequirement, v4availabilityRequirement,v4modifiedAttackVector, "
333
+ + "v4modifiedAttackComplexity, v4modifiedAttackRequirements,v4modifiedPrivilegesRequired, "
334
+ + "v4modifiedUserInteraction, v4modifiedVulnConfidentialityImpact,v4modifiedVulnIntegrityImpact, "
335
+ + "v4modifiedVulnAvailabilityImpact, v4modifiedSubConfidentialityImpact,v4modifiedSubIntegrityImpact, "
336
+ + "v4modifiedSubAvailabilityImpact, v4safety, v4automatable, v4recovery, v4valueDensity, "
337
+ + "v4vulnerabilityResponseEffort, v4providerUrgency, v4baseScore, v4baseSeverity, "
338
+ + "v4threatScore,v4threatSeverity, v4environmentalScore, v4environmentalSeverity, "
339
+ + "v4source, v4type, cve) VALUES (?, ?, ?, ?, ?, ?, "
340
+ + "?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, "
341
+ + "?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, "
342
+ + "?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)" ,
260
343
returnedColumns );
261
344
}
262
345
@@ -291,12 +374,58 @@ public static ResultSet updateVulnerability(final Connection conn, String cve,
291
374
setFloatOrNull (merge , 28 , v3BaseScore );
292
375
setStringOrNull (merge , 29 , v3BaseSeverity );
293
376
setStringOrNull (merge , 30 , v3Version );
377
+
378
+
294
379
380
+ setStringOrNull (merge , 31 , v4version );
381
+ setStringOrNull (merge , 32 , v4attackVector );
382
+ setStringOrNull (merge , 33 , v4attackComplexity );
383
+ setStringOrNull (merge , 34 , v4attackRequirements );
384
+ setStringOrNull (merge , 35 , v4privilegesRequired );
385
+ setStringOrNull (merge , 36 , v4userInteraction );
386
+ setStringOrNull (merge , 37 , v4vulnConfidentialityImpact );
387
+ setStringOrNull (merge , 38 , v4vulnIntegrityImpact );
388
+ setStringOrNull (merge , 39 , v4vulnAvailabilityImpact );
389
+ setStringOrNull (merge , 40 , v4subConfidentialityImpact );
390
+ setStringOrNull (merge , 41 , v4subIntegrityImpact );
391
+ setStringOrNull (merge , 42 , v4subAvailabilityImpact );
392
+ setStringOrNull (merge , 43 , v4exploitMaturity );
393
+ setStringOrNull (merge , 44 , v4confidentialityRequirement );
394
+ setStringOrNull (merge , 45 , v4integrityRequirement );
395
+ setStringOrNull (merge , 46 , v4availabilityRequirement );
396
+ setStringOrNull (merge , 47 , v4modifiedAttackVector );
397
+ setStringOrNull (merge , 48 , v4modifiedAttackComplexity );
398
+ setStringOrNull (merge , 49 , v4modifiedAttackRequirements );
399
+ setStringOrNull (merge , 50 , v4modifiedPrivilegesRequired );
400
+ setStringOrNull (merge , 51 , v4modifiedUserInteraction );
401
+ setStringOrNull (merge , 52 , v4modifiedVulnConfidentialityImpact );
402
+ setStringOrNull (merge , 53 , v4modifiedVulnIntegrityImpact );
403
+ setStringOrNull (merge , 54 , v4modifiedVulnAvailabilityImpact );
404
+ setStringOrNull (merge , 55 , v4modifiedSubConfidentialityImpact );
405
+ setStringOrNull (merge , 56 , v4modifiedSubIntegrityImpact );
406
+ setStringOrNull (merge , 57 , v4modifiedSubAvailabilityImpact );
407
+ setStringOrNull (merge , 58 , v4safety );
408
+ setStringOrNull (merge , 59 , v4automatable );
409
+ setStringOrNull (merge , 60 , v4recovery );
410
+ setStringOrNull (merge , 61 , v4valueDensity );
411
+ setStringOrNull (merge , 62 , v4vulnerabilityResponseEffort );
412
+ setStringOrNull (merge , 63 , v4providerUrgency );
413
+ setFloatOrNull (merge , 64 , v4baseScore );
414
+ setStringOrNull (merge , 65 , v4baseSeverity );
415
+ setFloatOrNull (merge , 66 , v4threatScore );
416
+ setStringOrNull (merge , 67 , v4threatSeverity );
417
+ setFloatOrNull (merge , 68 , v4environmentalScore );
418
+ setStringOrNull (merge , 69 , v4environmentalSeverity );
419
+ setStringOrNull (merge , 70 , v4source );
420
+ setStringOrNull (merge , 71 , v4type );
421
+
422
+ //cve must be the last entry
295
423
if (vulnerabilityId == 0 ) {
296
- merge .setString (31 , cve );
424
+ merge .setString (72 , cve );
297
425
} else {
298
- merge .setInt (31 , vulnerabilityId );
426
+ merge .setInt (72 , vulnerabilityId );
299
427
}
428
+
300
429
final int count = merge .executeUpdate ();
301
430
if (vulnerabilityId == 0 ) {
302
431
try (ResultSet rs = merge .getGeneratedKeys ()) {
0 commit comments