mirror of https://github.com/MISP/misp-modules
chg: [vulnerability_lookup] Adding to the vulnerability object the Vulnerability Lookup link to the vulnerability description
parent
9d492af227
commit
4accbc9823
|
@ -271,6 +271,13 @@ class VulnerabilityLookupParser(VulnerabilityParser):
|
||||||
)
|
)
|
||||||
getattr(self, feature)(lookup_result)
|
getattr(self, feature)(lookup_result)
|
||||||
|
|
||||||
|
def _create_vulnerability_object(self) -> MISPObject:
|
||||||
|
misp_object = MISPObject('vulnerability')
|
||||||
|
misp_object.add_attribute(
|
||||||
|
'references', f'{self.api_url}/vuln/{self.misp_attribute.value}'
|
||||||
|
)
|
||||||
|
return misp_object
|
||||||
|
|
||||||
def _parse_aliases(self, *aliases: tuple) -> Iterator[str]:
|
def _parse_aliases(self, *aliases: tuple) -> Iterator[str]:
|
||||||
for alias in aliases:
|
for alias in aliases:
|
||||||
query = requests.get(f"{self.api_url}/api/vulnerability/{alias}")
|
query = requests.get(f"{self.api_url}/api/vulnerability/{alias}")
|
||||||
|
@ -301,7 +308,7 @@ class VulnerabilityLookupParser(VulnerabilityParser):
|
||||||
description = lookup_result['document']
|
description = lookup_result['document']
|
||||||
|
|
||||||
tracking = description['tracking']
|
tracking = description['tracking']
|
||||||
misp_object = MISPObject('vulnerability')
|
misp_object = self._create_vulnerability_object()
|
||||||
for field, relation in self.mapping.csaf_mapping().items():
|
for field, relation in self.mapping.csaf_mapping().items():
|
||||||
misp_object.add_attribute(relation, tracking[field])
|
misp_object.add_attribute(relation, tracking[field])
|
||||||
misp_object.add_attribute('summary', description['title'])
|
misp_object.add_attribute('summary', description['title'])
|
||||||
|
@ -341,7 +348,7 @@ class VulnerabilityLookupParser(VulnerabilityParser):
|
||||||
return vulnerability_object.uuid
|
return vulnerability_object.uuid
|
||||||
|
|
||||||
def _parse_cve_description(self, lookup_result: dict) -> str:
|
def _parse_cve_description(self, lookup_result: dict) -> str:
|
||||||
misp_object = MISPObject('vulnerability')
|
misp_object = self._create_vulnerability_object()
|
||||||
cveMetaData = lookup_result['cveMetadata']
|
cveMetaData = lookup_result['cveMetadata']
|
||||||
for field, relation in self.mapping.cve_mapping().items():
|
for field, relation in self.mapping.cve_mapping().items():
|
||||||
misp_object.add_attribute(relation, cveMetaData[field])
|
misp_object.add_attribute(relation, cveMetaData[field])
|
||||||
|
@ -373,7 +380,7 @@ class VulnerabilityLookupParser(VulnerabilityParser):
|
||||||
return self.misp_event.add_object(misp_object).uuid
|
return self.misp_event.add_object(misp_object).uuid
|
||||||
|
|
||||||
def _parse_gsd_description(self, lookup_result: dict) -> str:
|
def _parse_gsd_description(self, lookup_result: dict) -> str:
|
||||||
misp_object = MISPObject('vulnerability')
|
misp_object = self._create_vulnerability_object()
|
||||||
gsd_details = lookup_result['gsd']['osvSchema']
|
gsd_details = lookup_result['gsd']['osvSchema']
|
||||||
for field, relation in self.mapping.gsd_mapping().items():
|
for field, relation in self.mapping.gsd_mapping().items():
|
||||||
if gsd_details.get(field):
|
if gsd_details.get(field):
|
||||||
|
@ -396,7 +403,7 @@ class VulnerabilityLookupParser(VulnerabilityParser):
|
||||||
return vulnerability_object.uuid
|
return vulnerability_object.uuid
|
||||||
|
|
||||||
def _parse_jvn_description(self, lookup_result: dict) -> str:
|
def _parse_jvn_description(self, lookup_result: dict) -> str:
|
||||||
vulnerability = MISPObject('vulnerability')
|
vulnerability = self._create_vulnerability_object()
|
||||||
for field, relation in self.mapping.jvn_mapping().items():
|
for field, relation in self.mapping.jvn_mapping().items():
|
||||||
vulnerability.add_attribute(relation, lookup_result[field])
|
vulnerability.add_attribute(relation, lookup_result[field])
|
||||||
for cpe in lookup_result.get('sec:cpe', []):
|
for cpe in lookup_result.get('sec:cpe', []):
|
||||||
|
@ -448,7 +455,7 @@ class VulnerabilityLookupParser(VulnerabilityParser):
|
||||||
return self.misp_event.add_object(misp_object).uuid
|
return self.misp_event.add_object(misp_object).uuid
|
||||||
|
|
||||||
def _parse_ossf_description(self, lookup_result: dict) -> str:
|
def _parse_ossf_description(self, lookup_result: dict) -> str:
|
||||||
misp_object = MISPObject('vulnerability')
|
misp_object = self._create_vulnerability_object()
|
||||||
for field, relation in self.mapping.ossf_mapping().items():
|
for field, relation in self.mapping.ossf_mapping().items():
|
||||||
misp_object.add_attribute(relation, lookup_result[field])
|
misp_object.add_attribute(relation, lookup_result[field])
|
||||||
for reference in lookup_result['references']:
|
for reference in lookup_result['references']:
|
||||||
|
@ -475,7 +482,7 @@ class VulnerabilityLookupParser(VulnerabilityParser):
|
||||||
return vulnerability_object.uuid
|
return vulnerability_object.uuid
|
||||||
|
|
||||||
def _parse_standard_description(self, lookup_result: dict) -> str:
|
def _parse_standard_description(self, lookup_result: dict) -> str:
|
||||||
misp_object = MISPObject('vulnerability')
|
misp_object = self._create_vulnerability_object()
|
||||||
for field, relation in self.mapping.standard_mapping().items():
|
for field, relation in self.mapping.standard_mapping().items():
|
||||||
misp_object.add_attribute(relation, lookup_result[field])
|
misp_object.add_attribute(relation, lookup_result[field])
|
||||||
for cvss in lookup_result.get('severity', []):
|
for cvss in lookup_result.get('severity', []):
|
||||||
|
@ -497,7 +504,7 @@ class VulnerabilityLookupParser(VulnerabilityParser):
|
||||||
return vulnerability_object.uuid
|
return vulnerability_object.uuid
|
||||||
|
|
||||||
def _parse_tailscale_description(self, lookup_result: dict) -> str:
|
def _parse_tailscale_description(self, lookup_result: dict) -> str:
|
||||||
misp_object = MISPObject('vulnerability')
|
misp_object = self._create_vulnerability_object()
|
||||||
for field, relation in self.mapping.tailscale_mapping().items():
|
for field, relation in self.mapping.tailscale_mapping().items():
|
||||||
misp_object.add_attribute(relation, lookup_result[field])
|
misp_object.add_attribute(relation, lookup_result[field])
|
||||||
misp_object.add_reference(self.misp_attribute.uuid, 'related-to')
|
misp_object.add_reference(self.misp_attribute.uuid, 'related-to')
|
||||||
|
|
Loading…
Reference in New Issue