| name | performing-ot-vulnerability-assessment-with-claroty |
| description | 本技能涵盖使用Claroty xDome平台在OT环境中执行漏洞评估,实现全面资产发现、风险评分、漏洞关联和修复优先级排序。内容涉及通过流量分析进行被动漏洞识别、OT设备安全主动查询、与CVE数据库和ICS-CERT公告集成,以及考虑运营影响和补偿控制措施的基于风险的优先级排序。
|
| domain | cybersecurity |
| subdomain | ot-ics-security |
| tags | ["ot-security","ics","scada","industrial-control","iec62443","vulnerability-assessment","claroty"] |
| version | 1.0.0 |
| author | mahipal |
| license | Apache-2.0 |
使用Claroty执行OT漏洞评估
适用场景
- 按照IEC 62443或NERC CIP要求进行定期OT漏洞评估时
- 首次部署Claroty xDome并执行初始资产发现和风险评估时
- 将新发布的ICS-CERT公告与OT资产清单进行关联时
- 在有限维护窗口内对OT漏洞修复进行优先级排序时
- 为CIP-010-4漏洞评估要求生成合规证据时
不适用于对PLC和安全系统进行主动漏洞扫描(参见performing-ot-network-security-assessment的被动方法)、仅IT漏洞管理(使用标准漏洞扫描器),或渗透测试(参见performing-ics-penetration-testing)。
前置条件
- 在OT网络上部署了传感器的Claroty xDome或CTD(持续威胁检测)
- 用于被动资产发现的网络SPAN/TAP访问
- 用于漏洞跟踪的CISA ICS-CERT公告订阅
- 包含所有OT设备固件版本的资产清单
- 维护窗口期间补丁部署的变更管理流程
工作流程
步骤 1:配置资产发现和漏洞关联
配置Claroty执行被动和主动安全发现,建立包含固件版本的完整资产清单用于漏洞关联。
"""OT漏洞评估管理器。
将OT资产清单与ICS-CERT公告和CVE数据进行关联,
以识别、优先排序和跟踪OT漏洞。设计用于
与Claroty xDome API集成或独立运行。
"""
import json
import sys
from collections import defaultdict
from dataclasses import dataclass, field, asdict
from datetime import datetime
import requests
@dataclass
class OTAsset:
asset_id: str
name: str
vendor: str
model: str
firmware_version: str
asset_type: str
purdue_level: str
ip_address: str
protocol: str
criticality: str
zone: str
@dataclass
class OTVulnerability:
vuln_id: str
cve_id: str
title: str
severity: str
cvss_score: float
affected_vendor: str
affected_product: str
affected_versions: str
description: str
ics_cert_advisory: str = ""
remediation: str = ""
patch_available: bool = False
compensating_controls: =
:
asset: OTAsset
vulnerability: OTVulnerability
risk_score: =
risk_rating: =
exploitability: =
operational_impact: =
compensating_controls: = field(default_factory=)
remediation_priority: =
:
():
.assets = []
.vulnerabilities = []
.risk_assessments = []
():
a assets_data:
.assets.append(OTAsset(**a))
()
():
()
:
url =
resp = requests.get(url, timeout=)
resp.raise_for_status()
data = resp.json()
ics_vulns = []
vuln data.get(, []):
ics_vendors = [
, , , ,
, , , , ,
, , , ,
]
vendor = vuln.get(, ).lower()
(v vendor v ics_vendors):
ics_vulns.append(vuln)
()
ics_vulns
Exception e:
()
[]
():
()
asset .assets:
vuln .vulnerabilities:
(vuln.affected_vendor.lower() asset.vendor.lower()
vuln.affected_product.lower() asset.model.lower()):
ra = RiskAssessment(asset=asset, vulnerability=vuln)
._calculate_risk_score(ra)
.risk_assessments.append(ra)
()
():
base = ra.vulnerability.cvss_score
criticality_weights = {
: ,
: ,
: ,
: ,
}
criticality = criticality_weights.get(ra.asset.criticality, )
level_weights = {
: ,
: ,
: ,
: ,
: ,
}
level_factor = level_weights.get(ra.asset.purdue_level, )
comp_reduction = ra.compensating_controls
ra.risk_score = (base * criticality * level_factor * comp_reduction, )
ra.risk_score = (ra.risk_score, )
ra.risk_score >= :
ra.risk_rating =
ra.remediation_priority =
ra.risk_score >= :
ra.risk_rating =
ra.remediation_priority =
ra.risk_score >= :
ra.risk_rating =
ra.remediation_priority =
:
ra.risk_rating =
ra.remediation_priority =
():
sorted_ra = (.risk_assessments, key= x: -x.risk_score)
report = []
report.append( * )
report.append()
report.append()
report.append()
report.append()
report.append( * )
sev [, , , ]:
findings = [ra ra sorted_ra ra.risk_rating == sev]
findings:
report.append()
ra findings[:]:
report.append()
report.append()
report.append()
report.append()
report.append()
ra.vulnerability.patch_available:
report.append()
:
report.append()
.join(report)
():
data = {
: datetime.now().isoformat(),
: (.assets),
: (.vulnerabilities),
: [
{
: ra.asset.name,
: ra.asset.ip_address,
: ra.vulnerability.cve_id,
: ra.risk_score,
: ra.risk_rating,
: ra.remediation_priority,
}
ra (.risk_assessments, key= x: -x.risk_score)
],
}
(output_file, ) f:
json.dump(data, f, indent=)
__name__ == :
assessment = OTVulnerabilityAssessment()
advisories = assessment.fetch_ics_advisories()
()
核心概念
| 术语 | 定义 |
|---|
| Claroty xDome | 为OT/IoT环境提供资产发现、漏洞管理和威胁检测的网络物理系统保护平台 |
| 被动发现(Passive Discovery) | 通过分析网络流量识别OT资产而不发送任何数据包,对生产环境安全 |
| 安全主动查询(Safe Active Query) | 以安全速率使用原生工业协议查询OT设备,收集详细资产信息而不干扰运营 |
| OT风险评分 | 结合CVSS基础评分、资产关键性、Purdue级别和补偿控制措施的OT适用风险评级 |
| ICS-CERT公告 | CISA发布的工业控制系统漏洞安全公告,包含供应商特定修复指导 |
| 虚拟打补丁(Virtual Patching) | 在无法立即应用固件补丁时,部署IPS/防火墙规则阻止已知漏洞利用 |
工具和系统
- Claroty xDome: 全面的OT/IoT资产发现、漏洞管理和持续威胁检测平台
- Claroty CTD: 用于OT环境被动网络监控的持续威胁检测传感器
- CISA ICS-CERT: 发布ICS漏洞通知和缓解指导的美国政府咨询服务
- Dragos平台: 具有资产可见性和漏洞管理功能的备选OT安全平台
- Nozomi Networks Guardian: 具有漏洞关联和风险评分的OT监控平台
输出格式
OT漏洞评估报告
=====================================
工具: Claroty xDome / 手动评估
日期: YYYY-MM-DD
已扫描资产: [N]
风险摘要:
严重风险: [N]个漏洞影响[N]个资产
高风险: [N]个漏洞影响[N]个资产
中风险: [N]个漏洞影响[N]个资产
低风险: [N]个漏洞影响[N]个资产
主要风险:
[风险评分] [CVE-ID] 影响 [资产名称] ([区域])
修复: [补丁/补偿控制措施]
时限: [下次维护窗口/立即]