Skip to content

Commit 6a1f288

Browse files
authored
fix: handle missing related asset fields in assetsToDf function (#231)
1 parent bc9e2c0 commit 6a1f288

1 file changed

Lines changed: 34 additions & 3 deletions

File tree

mitreattack/attackToExcel/stixToDf.py

Lines changed: 34 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -753,9 +753,40 @@ def assetsToDf(src):
753753
related_assets_descriptions = []
754754

755755
for related_asset in asset["x_mitre_related_assets"]:
756-
related_assets.append(related_asset["name"])
757-
related_assets_sectors.append(", ".join(related_asset["related_asset_sectors"]))
758-
related_assets_descriptions.append(related_asset["description"])
756+
asset_name = row.get("name", "<unnamed asset>")
757+
asset_id = row.get("ID", "<missing ATT&CK ID>")
758+
asset_stix_id = row.get("STIX ID", "<missing STIX ID>")
759+
related_asset_name = related_asset.get("name", "<unnamed related asset>")
760+
761+
if "name" in related_asset:
762+
related_assets.append(related_asset["name"])
763+
else:
764+
logger.error(
765+
f"Missing name for related asset '{related_asset_name}' on asset '{asset_name}' "
766+
f"({asset_id}, {asset_stix_id}). Leaving related assets blank for this related asset "
767+
"and continuing export."
768+
)
769+
related_assets.append("")
770+
771+
if "related_asset_sectors" in related_asset:
772+
related_assets_sectors.append(", ".join(related_asset["related_asset_sectors"]))
773+
else:
774+
logger.error(
775+
f"Missing related_asset_sectors for related asset '{related_asset_name}' on asset "
776+
f"'{asset_name}' ({asset_id}, {asset_stix_id}). Leaving related assets sectors blank "
777+
"for this related asset and continuing export."
778+
)
779+
related_assets_sectors.append("")
780+
781+
if "description" in related_asset:
782+
related_assets_descriptions.append(related_asset["description"])
783+
else:
784+
logger.error(
785+
f"Missing description for related asset '{related_asset_name}' on asset '{asset_name}' "
786+
f"({asset_id}, {asset_stix_id}). Leaving related assets description blank for this "
787+
"related asset and continuing export."
788+
)
789+
related_assets_descriptions.append("")
759790

760791
row["related assets"] = "; ".join(related_assets)
761792
row["related assets sectors"] = "; ".join(related_assets_sectors)

0 commit comments

Comments
 (0)