Skip to content
This repository was archived by the owner on Dec 5, 2025. It is now read-only.

Commit 14e99a6

Browse files
[client] Model enforcing must be fixed to convert base_score to numeric float (#533)
Co-authored-by: Julien Richard <[email protected]>
1 parent bc3857d commit 14e99a6

File tree

4 files changed

+97
-71
lines changed

4 files changed

+97
-71
lines changed

pycti/entities/opencti_stix_core_object.py

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -373,11 +373,11 @@ def __init__(self, opencti, file):
373373
... on Vulnerability {
374374
name
375375
description
376-
x_opencti_base_score
377-
x_opencti_base_severity
378-
x_opencti_attack_vector
379-
x_opencti_integrity_impact
380-
x_opencti_availability_impact
376+
x_opencti_cvss_base_score
377+
x_opencti_cvss_base_severity
378+
x_opencti_cvss_attack_vector
379+
x_opencti_cvss_integrity_impact
380+
x_opencti_cvss_availability_impact
381381
}
382382
... on Incident {
383383
name
@@ -1041,11 +1041,11 @@ def __init__(self, opencti, file):
10411041
... on Vulnerability {
10421042
name
10431043
description
1044-
x_opencti_base_score
1045-
x_opencti_base_severity
1046-
x_opencti_attack_vector
1047-
x_opencti_integrity_impact
1048-
x_opencti_availability_impact
1044+
x_opencti_cvss_base_score
1045+
x_opencti_cvss_base_severity
1046+
x_opencti_cvss_attack_vector
1047+
x_opencti_cvss_integrity_impact
1048+
x_opencti_cvss_availability_impact
10491049
}
10501050
... on Incident {
10511051
name

pycti/entities/opencti_stix_domain_object.py

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -496,11 +496,11 @@ def __init__(self, opencti, file):
496496
... on Vulnerability {
497497
name
498498
description
499-
x_opencti_base_score
500-
x_opencti_base_severity
501-
x_opencti_attack_vector
502-
x_opencti_integrity_impact
503-
x_opencti_availability_impact
499+
x_opencti_cvss_base_score
500+
x_opencti_cvss_base_severity
501+
x_opencti_cvss_attack_vector
502+
x_opencti_cvss_integrity_impact
503+
x_opencti_cvss_availability_impact
504504
}
505505
... on Incident {
506506
name
@@ -1010,11 +1010,11 @@ def __init__(self, opencti, file):
10101010
... on Vulnerability {
10111011
name
10121012
description
1013-
x_opencti_base_score
1014-
x_opencti_base_severity
1015-
x_opencti_attack_vector
1016-
x_opencti_integrity_impact
1017-
x_opencti_availability_impact
1013+
x_opencti_cvss_base_score
1014+
x_opencti_cvss_base_severity
1015+
x_opencti_cvss_attack_vector
1016+
x_opencti_cvss_integrity_impact
1017+
x_opencti_cvss_availability_impact
10181018
}
10191019
... on Incident {
10201020
name

pycti/entities/opencti_stix_object_or_stix_relationship.py

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -309,11 +309,11 @@ def __init__(self, opencti):
309309
... on Vulnerability {
310310
name
311311
description
312-
x_opencti_base_score
313-
x_opencti_base_severity
314-
x_opencti_attack_vector
315-
x_opencti_integrity_impact
316-
x_opencti_availability_impact
312+
x_opencti_cvss_base_score
313+
x_opencti_cvss_base_severity
314+
x_opencti_cvss_attack_vector
315+
x_opencti_cvss_integrity_impact
316+
x_opencti_cvss_availability_impact
317317
}
318318
... on Incident {
319319
name

pycti/entities/opencti_vulnerability.py

Lines changed: 72 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -111,12 +111,12 @@ def __init__(self, opencti):
111111
name
112112
description
113113
x_opencti_aliases
114-
x_opencti_base_score
115-
x_opencti_base_severity
116-
x_opencti_attack_vector
117-
x_opencti_integrity_impact
118-
x_opencti_availability_impact
119-
x_opencti_confidentiality_impact
114+
x_opencti_cvss_base_score
115+
x_opencti_cvss_base_severity
116+
x_opencti_cvss_attack_vector
117+
x_opencti_cvss_integrity_impact
118+
x_opencti_cvss_availability_impact
119+
x_opencti_cvss_confidentiality_impact
120120
importFiles {
121121
edges {
122122
node {
@@ -292,15 +292,17 @@ def create(self, **kwargs):
292292
name = kwargs.get("name", None)
293293
description = kwargs.get("description", None)
294294
x_opencti_aliases = kwargs.get("x_opencti_aliases", None)
295-
x_opencti_base_score = kwargs.get("x_opencti_base_score", None)
296-
x_opencti_base_severity = kwargs.get("x_opencti_base_severity", None)
297-
x_opencti_attack_vector = kwargs.get("x_opencti_attack_vector", None)
298-
x_opencti_integrity_impact = kwargs.get("x_opencti_integrity_impact", None)
299-
x_opencti_availability_impact = kwargs.get(
300-
"x_opencti_availability_impact", None
295+
x_opencti_cvss_base_score = kwargs.get("x_opencti_cvss_base_score", None)
296+
x_opencti_cvss_base_severity = kwargs.get("x_opencti_cvss_base_severity", None)
297+
x_opencti_cvss_attack_vector = kwargs.get("x_opencti_cvss_attack_vector", None)
298+
x_opencti_cvss_integrity_impact = kwargs.get(
299+
"x_opencti_cvss_integrity_impact", None
301300
)
302-
x_opencti_confidentiality_impact = kwargs.get(
303-
"x_opencti_confidentiality_impact", None
301+
x_opencti_cvss_availability_impact = kwargs.get(
302+
"x_opencti_cvss_availability_impact", None
303+
)
304+
x_opencti_cvss_confidentiality_impact = kwargs.get(
305+
"x_opencti_cvss_confidentiality_impact", None
304306
)
305307
x_opencti_stix_ids = kwargs.get("x_opencti_stix_ids", None)
306308
granted_refs = kwargs.get("objectOrganization", None)
@@ -336,12 +338,12 @@ def create(self, **kwargs):
336338
"name": name,
337339
"description": description,
338340
"x_opencti_aliases": x_opencti_aliases,
339-
"x_opencti_base_score": x_opencti_base_score,
340-
"x_opencti_base_severity": x_opencti_base_severity,
341-
"x_opencti_attack_vector": x_opencti_attack_vector,
342-
"x_opencti_integrity_impact": x_opencti_integrity_impact,
343-
"x_opencti_availability_impact": x_opencti_availability_impact,
344-
"x_opencti_confidentiality_impact": x_opencti_confidentiality_impact,
341+
"x_opencti_cvss_base_score": x_opencti_cvss_base_score,
342+
"x_opencti_cvss_base_severity": x_opencti_cvss_base_severity,
343+
"x_opencti_cvss_attack_vector": x_opencti_cvss_attack_vector,
344+
"x_opencti_cvss_integrity_impact": x_opencti_cvss_integrity_impact,
345+
"x_opencti_cvss_availability_impact": x_opencti_cvss_availability_impact,
346+
"x_opencti_cvss_confidentiality_impact": x_opencti_cvss_confidentiality_impact,
345347
"x_opencti_stix_ids": x_opencti_stix_ids,
346348
"update": update,
347349
}
@@ -366,43 +368,65 @@ def import_from_stix2(self, **kwargs):
366368
stix_object = kwargs.get("stixObject", None)
367369
extras = kwargs.get("extras", {})
368370
update = kwargs.get("update", False)
371+
369372
if stix_object is not None:
373+
# Retro compatibility
374+
if "x_opencti_base_score" in stix_object:
375+
stix_object["x_opencti_cvss_base_score"] = stix_object[
376+
"x_opencti_base_score"
377+
]
378+
stix_object["x_opencti_cvss_base_severity"] = stix_object[
379+
"x_opencti_base_severity"
380+
]
381+
stix_object["x_opencti_cvss_attack_vector"] = stix_object[
382+
"x_opencti_attack_vector"
383+
]
384+
stix_object["x_opencti_cvss_integrity_impact"] = stix_object[
385+
"x_opencti_integrity_impact"
386+
]
387+
stix_object["x_opencti_cvss_availability_impact"] = stix_object[
388+
"x_opencti_availability_impact"
389+
]
390+
stix_object["x_opencti_cvss_confidentiality_impact"] = stix_object[
391+
"x_opencti_confidentiality_impact"
392+
]
393+
370394
# Search in extensions
371395
if "x_opencti_aliases" not in stix_object:
372396
stix_object[
373397
"x_opencti_aliases"
374398
] = self.opencti.get_attribute_in_extension("aliases", stix_object)
375-
if "x_opencti_base_score" not in stix_object:
399+
if "x_opencti_cvss_base_score" not in stix_object:
376400
stix_object[
377-
"x_opencti_base_score"
401+
"x_opencti_cvss_base_score"
378402
] = self.opencti.get_attribute_in_extension("base_score", stix_object)
379-
if "x_opencti_base_severity" not in stix_object:
403+
if "x_opencti_cvss_base_severity" not in stix_object:
380404
stix_object[
381-
"x_opencti_base_severity"
405+
"x_opencti_cvss_base_severity"
382406
] = self.opencti.get_attribute_in_extension(
383407
"base_severity", stix_object
384408
)
385-
if "x_opencti_attack_vector" not in stix_object:
409+
if "x_opencti_cvss_attack_vector" not in stix_object:
386410
stix_object[
387-
"x_opencti_attack_vector"
411+
"x_opencti_cvss_attack_vector"
388412
] = self.opencti.get_attribute_in_extension(
389413
"attack_vector", stix_object
390414
)
391-
if "x_opencti_integrity_impact" not in stix_object:
415+
if "x_opencti_cvss_integrity_impact" not in stix_object:
392416
stix_object[
393-
"x_opencti_integrity_impact"
417+
"x_opencti_cvss_integrity_impact"
394418
] = self.opencti.get_attribute_in_extension(
395419
"integrity_impact", stix_object
396420
)
397-
if "x_opencti_availability_impact" not in stix_object:
421+
if "x_opencti_cvss_availability_impact" not in stix_object:
398422
stix_object[
399-
"x_opencti_availability_impact"
423+
"x_opencti_cvss_availability_impact"
400424
] = self.opencti.get_attribute_in_extension(
401425
"availability_impact", stix_object
402426
)
403-
if "x_opencti_confidentiality_impact" not in stix_object:
427+
if "x_opencti_cvss_confidentiality_impact" not in stix_object:
404428
stix_object[
405-
"x_opencti_confidentiality_impact"
429+
"x_opencti_cvss_confidentiality_impact"
406430
] = self.opencti.get_attribute_in_extension(
407431
"confidentiality_impact", stix_object
408432
)
@@ -444,27 +468,29 @@ def import_from_stix2(self, **kwargs):
444468
x_opencti_aliases=stix_object["x_opencti_aliases"]
445469
if "x_opencti_aliases" in stix_object
446470
else None,
447-
x_opencti_base_score=stix_object["x_opencti_base_score"]
448-
if "x_opencti_base_score" in stix_object
471+
x_opencti_cvss_base_score=stix_object["x_opencti_cvss_base_score"]
472+
if "x_opencti_cvss_base_score" in stix_object
449473
else None,
450-
x_opencti_base_severity=stix_object["x_opencti_base_severity"]
451-
if "x_opencti_base_severity" in stix_object
474+
x_opencti_cvss_base_severity=stix_object["x_opencti_cvss_base_severity"]
475+
if "x_opencti_cvss_base_severity" in stix_object
452476
else None,
453-
x_opencti_attack_vector=stix_object["x_opencti_attack_vector"]
454-
if "x_opencti_attack_vector" in stix_object
477+
x_opencti_cvss_attack_vector=stix_object["x_opencti_cvss_attack_vector"]
478+
if "x_opencti_cvss_attack_vector" in stix_object
455479
else None,
456-
x_opencti_integrity_impact=stix_object["x_opencti_integrity_impact"]
457-
if "x_opencti_integrity_impact" in stix_object
480+
x_opencti_cvss_integrity_impact=stix_object[
481+
"x_opencti_cvss_integrity_impact"
482+
]
483+
if "x_opencti_cvss_integrity_impact" in stix_object
458484
else None,
459-
x_opencti_availability_impact=stix_object[
460-
"x_opencti_availability_impact"
485+
x_opencti_cvss_availability_impact=stix_object[
486+
"x_opencti_cvss_availability_impact"
461487
]
462-
if "x_opencti_availability_impact" in stix_object
488+
if "x_opencti_cvss_availability_impact" in stix_object
463489
else None,
464-
x_opencti_confidentiality_impact=stix_object[
465-
"x_opencti_confidentiality_impact"
490+
x_opencti_cvss_confidentiality_impact=stix_object[
491+
"x_opencti_cvss_confidentiality_impact"
466492
]
467-
if "x_opencti_confidentiality_impact" in stix_object
493+
if "x_opencti_cvss_confidentiality_impact" in stix_object
468494
else None,
469495
x_opencti_stix_ids=stix_object["x_opencti_stix_ids"]
470496
if "x_opencti_stix_ids" in stix_object

0 commit comments

Comments
 (0)