镜像漏洞数据(CVE/CNVD/CNNVD)的一些总结

镜像漏洞数据(CVE/CNVD/CNNVD)的一些总结


背景

国内做安全产品都需要构建自己的漏洞库,但是漏洞库需要和CVE/CNVD/CNNVD做映射,在镜像(爬取)的过程中有不少的坑,这里记录以下,以下内容仅供参考,如有不足,请及时斧正,本人将不胜感激。

CVE

CVE官方已经提供feeds地址,提供JSON格式的数据,其中以year命名的是每天更新一次,对于recent和modified命名的feeds是每两个小时更新一次,如果你的需求不需要实时更新漏洞库,可以采用每天更新一次漏洞数据的策略(nist推荐),先更新以year命名的数据,如果数据库存在则跳过,不存在则增加,对于modified数据,如果存在则修改,不存在则新增,不处理recent数据,主要是前两个feed包含的数据集已经包含了recent的数据,recent和modified feeds仅包含在过去8天内修改的数据,没两个小时更新一次。

CNVD

CNVD的数据就更有意思了,CNVD官方并不提供feeds或者其他形式供研究或者商用的漏洞库,你需要CNVD的数据,你得自行去爬取,部分漏洞数据可能在一段时间内就消失了,这就很尴尬。遇到的坑有以下几点:
1、反反爬
CNVD采用了某安全厂商的waf,并且设置了反爬机制,js动态签名,其中js还做了混淆,数据存放在cookie当中,这种反爬机制还挺有意思的,可以根据js的算法自己构造合法cookie信息,又或者使用selenium框架,自动加载获取数据。waf会检测ip请求的频率,频率过快会导致ip被封禁,如果使用代理池,就不用担心,如果使用单个ip爬取,频率大概是每10秒爬取一次,如果ip被拦截,在waf封禁界面上发起申请,片刻就会解封。

2、数据格式
部分cnvd数据关联多个cve编号,导致在存储的过程中出现问题,比如:CNVD-2019-45908,CNVD-2019-01597等,数量也不多,后期需要单独处理一下

3、漏洞分类
早期爬取CNVD漏洞的时候使用的接口是:https://www.cnvd.org.cn/flaw/typeResult?typeId={}&max={}&offset={},这个界面很贴心,直接把同一类型下的漏洞都列举出来了,简直太方便了,后期爬取完毕才发现,还有1W+的数据是不在分类当中的,调试了大半天才发现的,后续直接递归爬取漏洞列表来全量爬取漏洞库。

CNNVD

CNNVD的漏洞数据还是比较全面的,既包含CVE还包含CNVD的数据,映射关系可能不全,但是漏洞数据还是比较全面的,另外漏洞数据对内部成员企业是开放的,公司的安全设备需要通过CNNVD的漏洞兼容性认证,即可使用CNNVD的漏洞数据,我这边初期并没有设备来进行认证,前期做漏洞分析只能爬取部分cnnvd漏洞数据,不过都是单线程,频率都是十几秒一次,爬取数据还是要讲求道义的,站点没防护也不能把站点给爬死了。具体遇到的坑只有一个,那就是和CNVD一样,部分漏洞包含多个CVE漏洞编号,这个暂时还没来得及研究漏洞间的映射关系。另外注意一点儿就是CNNVD可能会不定期下线维护,原因时间不确定。

参考


本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!