kb: expand authorized lab coverage and intel automation
这个提交包含在:
70
scripts/intel/models.py
普通文件
70
scripts/intel/models.py
普通文件
@@ -0,0 +1,70 @@
|
||||
from __future__ import annotations
|
||||
|
||||
from dataclasses import asdict, dataclass, field
|
||||
from typing import Any, Dict, List, Optional
|
||||
|
||||
|
||||
@dataclass
|
||||
class Candidate:
|
||||
system_id: str
|
||||
display_name: str
|
||||
category: str
|
||||
advisory_mode: str
|
||||
source_kind: str
|
||||
source_name: str
|
||||
source_confidence: str
|
||||
source_url: str
|
||||
title: str
|
||||
published_at: Optional[str] = None
|
||||
updated_at: Optional[str] = None
|
||||
summary: str = ""
|
||||
severity: str = "unknown"
|
||||
cvss_score: Optional[float] = None
|
||||
exploit_status: str = "unknown"
|
||||
aliases: List[str] = field(default_factory=list)
|
||||
cve_ids: List[str] = field(default_factory=list)
|
||||
ghsa_ids: List[str] = field(default_factory=list)
|
||||
osv_ids: List[str] = field(default_factory=list)
|
||||
affected_versions: List[str] = field(default_factory=list)
|
||||
fixed_versions: List[str] = field(default_factory=list)
|
||||
package_name: Optional[str] = None
|
||||
references: List[str] = field(default_factory=list)
|
||||
raw: Dict[str, Any] = field(default_factory=dict)
|
||||
|
||||
def to_dict(self) -> Dict[str, Any]:
|
||||
return asdict(self)
|
||||
|
||||
|
||||
@dataclass
|
||||
class AdvisoryRecord:
|
||||
canonical_id: str
|
||||
system_id: str
|
||||
display_name: str
|
||||
category: str
|
||||
advisory_mode: str
|
||||
title: str
|
||||
summary: str
|
||||
published_at: Optional[str]
|
||||
updated_at: Optional[str]
|
||||
severity: str
|
||||
cvss_score: Optional[float]
|
||||
exploit_status: str
|
||||
source_confidence: str
|
||||
official_source_url: Optional[str]
|
||||
secondary_source_urls: List[str]
|
||||
aliases: List[str]
|
||||
cve_ids: List[str]
|
||||
ghsa_ids: List[str]
|
||||
osv_ids: List[str]
|
||||
affected_versions: List[str]
|
||||
fixed_versions: List[str]
|
||||
package_name: Optional[str]
|
||||
render_markdown: bool
|
||||
case_path: Optional[str]
|
||||
secure_code_topics: List[str]
|
||||
status: str
|
||||
triage_reasons: List[str] = field(default_factory=list)
|
||||
metadata: Dict[str, Any] = field(default_factory=dict)
|
||||
|
||||
def to_dict(self) -> Dict[str, Any]:
|
||||
return asdict(self)
|
||||
在新工单中引用
屏蔽一个用户