适用对象:自己运营网站或服务、希望无需人工盯着信息源也能获取漏洞信息的人。本文介绍收集什么、用什么进行匹配,以及对AI的信任程度应当如何把握。
发生了什么:人连续三次先于系统知道
一周之内,在本站运营者所管理的站点上发生了三件事。每一次,运营者都是先通过社交媒体或邮件得知,而此时自动化监控尚未报告任何内容。
案例1
一个PHP漏洞。运营者先得知。自动化监控并未标记它。案例2
恶意代码被植入一个Python包。运营者先得知。自动化监控并未标记它。案例3
一个容器基础镜像问题。运营者先得知。自动化监控并未标记它。
最初的判断是“信息源不够”。原因并非单一:官方来源可能落后于热点话题(详见下文),而且同样缺乏足够的材料来判定某条信息与我们的环境有关。新闻文本中会出现“PHP”或“Python”之类的词,但这与你实际运行的软件包名称是两回事。
重建后的监控
1. 收集
官方公告 / GitHub公告 / 恶意软件包列表 / KEV / 新闻 / 社交媒体
↓
清单A:我们使用的技术关键词
撒大网
清单B:实际组件名称
由锁文件和操作系统软件包生成
↓
2. 规则拾取匹配项(无需AI也能运行)
↓
3. 低成本AI模型进行初步分诊
它可以提高紧急程度,但不能降低。
- 收集内容:官方公告、GitHub公告、恶意软件包列表、CISA的KEV、新闻和社交媒体。
- 用于匹配的两份清单:技术关键词用于撒大网,实际组件名称用于高可信度匹配。组件清单基于每个代码仓库的锁文件以及操作系统软件包生成。
- 整镜像扫描:检查整个镜像(包括基础镜像),而不仅仅是应用依赖。
- 运行时滞后:衡量Node、PHP和数据库等运行时落后于最新版本的程度。
- AI初步分诊:由一个低成本AI模型首先判断“这是否影响我们?”。AI只能提高紧急程度。
测量结果,包括与预期相反的部分
最初的假设:官方来源就够了
我们曾假设,监控官方公告和KEV就能抓住重要的事情。实际上,某个话题可能在公告发布之前就已开始热议。只依靠官方来源会输掉这场竞争。
测量之后:增加社交媒体作为入口
加入社交媒体后,监控能比仅依靠官方来源更早注意到某些事情。但在官方来源确认之前,社交媒体内容不被视为事实。入口要宽,判断要谨慎。
- 检查漏报:另一个监控(用于寻找文章候选)在10天内收集的约100个严重漏洞,与本监控进行了交叉核对。其中影响运营者站点的漏洞,漏报数为0。
- AI配额耗尽:每月配额用完,AI分诊暂停了约6天。不使用AI的规则匹配全程保持运行。该设计会事先设定暂停结束日期,AI部分从该日期起自动恢复。
- 新服务器造成的缺口:新添加的服务器的操作系统软件包未出现在组件清单中。清单的月度重建发现了这一问题。只有定期重新生成,清单才可信,仅建立一次是不够的。
如何在你自己的环境中搭建
机械地生成组件清单(SBOM)
同时基于每个代码仓库的锁文件以及你的服务器和容器中的操作系统软件包来建立。CISA将SBOM描述为一种嵌套式清单,即构成软件组件的成分列表。开源的Syft等SBOM生成工具可以从容器镜像和文件系统中读取操作系统软件包及主要编程语言的依赖,并输出CycloneDX或SPDX格式。
将清单与已知漏洞进行匹配
对于依赖匹配,开源工具osv-scanner可以读取锁文件和容器。安装配置及CI集成请参阅osv-scanner:安装与使用。
用KEV和EPSS确定优先级
发现的问题很多时,无法都以同等紧急程度处理。应从已确认被利用的漏洞(KEV)和预测被利用概率较高的漏洞(EPSS)开始。如何结合使用两者,请参阅CVSS、EPSS与KEV:如何综合使用。
如果使用AI,只用它来提高紧急程度
即使AI说“不受影响”,也不要删除规则已经拾取的条目。AI可能错误地判断为“无关”,而漏报的代价大于误报的代价。
提前决定AI不可用时的处理方式
配额会用完,服务会出故障,供应商也可能停止服务。在运行之前就应决定:仅靠非AI规则仍能发出最低限度的通知,并且设定恢复日期,使AI部分自动返回。
定期重新生成清单
当服务器或代码仓库已添加但清单未更新时,就会出现缺口。应至少每月重建一次,并检查新增的内容是否已包含在内。
在官方来源确认之前,不要把社交媒体内容当作事实
社交媒体传播很快,但其中夹杂着供应商尚未确认的错误和猜测。应将其作为入口使用,但应以可核实的一手来源(如供应商公告或KEV)为依据来采取行动。
本站观点:技术关键词撒大网,用组件名称收窄范围
根据运营者的经验,改为按实际组件名称匹配后,误报和漏报都有所减少。但如果组件清单过时,就会直接导致漏报。两者缺一不可:既要撒大网,也要有准确的清单来收窄范围。本文介绍的是为本站运营者所管理站点搭建的监控。
信息来源(一手及官方)
- CISA — 已知被利用漏洞目录(Known Exploited Vulnerabilities Catalog)(已确认被利用的漏洞)
- CISA — 软件物料清单(Software Bill of Materials,SBOM)(SBOM的定义)
- FIRST — EPSS(预测被利用的概率)
- OpenSSF — malicious-packages(以OSV格式存放恶意软件包报告的代码仓库)
- Anchore — Syft(从容器镜像和文件系统生成SBOM;支持CycloneDX和SPDX输出;涵盖操作系统软件包及主要编程语言)
延伸阅读
- 工具:osv-scanner:安装与使用
- 优先级:CVSS、EPSS与KEV:如何综合使用
- 示例:PHP严重安全更新
- 相关:防范npm供应链攻击