我对这个漏洞监测平台的三个关键词:
- 全自动
- AIGC (AI生成内容)
- 开发者友好(Developer Friendly)
1. 背景
网络安全一直是一个重人力,重运营的领域,即使是全球最强大的网络安全集团MITRE也是如此。
MITRE 公司在1999年发布了CVE(Common Vulnerabilities and Exposures)漏洞库,正如其名,该漏洞库列出了已公开披露的各种计算机安全缺陷,并对其进行唯一编号。
同时,美国国家标准技术研究所(NIST)也会对漏洞信息进行人工运营,补充漏洞的一些属性,例如“攻击方式是远程还是本地“、”是否对机密性和完整性造成影响“,并根据这些属性来对漏洞进行评分,这套评分机制就叫做CVSS。
在最新的CVSS 3.1的版本中,需要提取的漏洞属性有8个,而随着信息化的不断发展,信息系统越来越对,对应的漏洞也迎来了井喷式的增长(如下图)。
面对每年2万个左右的漏洞数,要对每个漏洞进行 8 个属性的标注。NVD的人员也有点人手不够了,从官网可以看到,又很多漏洞其实是来不及分析就公开了,如下图的漏洞,仅提供了一个漏洞描述信息,其他信息均为缺失状态。
面对这种场景,各种下游机构或同类机构都会懵圈了,于是又需要人工参与,对漏洞信息进行信息搜集和人工标注,耗时耗力不说,人工的参与也容易出现漏洞信息更新不及时、标注出错等问题。
那么,有没有一种这样的可能性,我们引入一种AI或者大模型的技术,让“漏洞信息运营”这件小事变得简单又可持续呢。
2. 任务
从我的视角分析,漏洞的基础运营场景中有三个刚需问题需要解决:
- 漏洞标题生成 – 从文本中提取关键词或特征,生成漏洞标题
- 漏洞的评分 – 兼容现有的漏洞评分机制CVSS,根据漏洞既有的信息生成CVSS特征,计算风险等级
- 漏洞的翻译 – 根据英文描述,生成中文描述
使用算法的角度来分析这三个问题:
- 是一个典型的Text Summarize任务
- 是一个Text Classification任务
- 也是很经典的NLP问题:Translation
所以要想解决背景中的“解放劳动力”的问题,我们的任务就变得更加清晰了,既:
- 从漏洞描述中生成中文的漏洞标题
- 提取漏洞的属性,计算风险等级:严重/高危/低危/严重
- 用安全人员熟悉的方式描述漏洞、最好能够给出可行的修复意见
我正在摸索一套这样的AI程序,以能解决👆三个基础问题,并且持续观察其预测效果。
当前有如下难点:
- 漏洞的信息量少:在漏洞公布的初期,NVD仅提供了漏洞描述和一个不规整的参考链接。
- 要避免过拟合,训练出来的模型不仅要在测试数据集上表现良好,还要能够在新公布的漏洞中取得同样的效果。
- 模型可解释:能够告诉大家,Why神龙漏洞库这么觉得。
- 机翻效果要对标人工的翻译,这个是业界难题,存在很大挑战。
但是好消息是现在的AI技术对比几年前已经有了很大的突破,除了近期火热的语言大模型,也有很多的类库脚手架工具帮助我这个二把刀工程师快速上手。
请期待我的下一篇博客,谢谢!