feat(techniques): add external_references storage and display MITRE sources with links
Aegis CI / lint-and-test (push) Waiting to run
Snyk Security Scan / Python vulnerabilities (backend) (push) Waiting to run
Snyk Security Scan / npm vulnerabilities (frontend) (push) Waiting to run
Snyk Security Scan / Docker image vulnerabilities (backend) (push) Waiting to run

This commit is contained in:
kitos
2026-06-18 16:26:11 +02:00
parent 263823f290
commit a58f9fd357
6 changed files with 96 additions and 0 deletions
+2
View File
@@ -59,6 +59,8 @@ class Technique(Base):
review_required = Column(Boolean, default=False)
# Assign last_review_date = Column(DateTime, nullable=True)
last_review_date = Column(DateTime, nullable=True)
# Assign external_references = Column(JSONB, nullable=True, default=list)
external_references = Column(JSONB, nullable=True, default=list)
# Relationships
tests = relationship("Test", back_populates="technique")
@@ -263,6 +263,8 @@ def sync_mitre(db: Session) -> dict:
is_subtechnique = "." in mitre_id
# Assign parent_mitre_id = mitre_id.split(".")[0] if is_subtechnique else None
parent_mitre_id = mitre_id.split(".")[0] if is_subtechnique else None
# Assign external_references = obj.get("external_references", [])
external_references = obj.get("external_references", [])
# Assign existing = existing_techniques.get(mitre_id)
existing = existing_techniques.get(mitre_id)
@@ -289,6 +291,8 @@ def sync_mitre(db: Session) -> dict:
is_subtechnique=is_subtechnique,
# Keyword argument: parent_mitre_id
parent_mitre_id=parent_mitre_id,
# Keyword argument: external_references
external_references=external_references,
# Keyword argument: status_global
status_global=TechniqueStatus.not_evaluated,
# Keyword argument: review_required
@@ -331,6 +335,8 @@ def sync_mitre(db: Session) -> dict:
existing.is_subtechnique = is_subtechnique
# Assign existing.parent_mitre_id = parent_mitre_id
existing.parent_mitre_id = parent_mitre_id
# Assign existing.external_references = external_references
existing.external_references = external_references
# Check: changes
if changes:
@@ -131,4 +131,5 @@ def get_technique_detail(db: Session, mitre_id: str) -> dict:
}
for item in intel_items
],
"external_references": technique.external_references or [],
}