2021.2,微软官方高兴地公布再也不需要通过Key来调用MSUG API(Microsoft Security Update Guide API)了。因此本文简单介绍一下通过这个接口建立一个自动化的CVE&KB数据库任务。
Windows每月补丁都会有一个年份-月份的CVRF_ID,比如2020-Aug即表示2020年8月份的补丁,要获取其相关信息需要请求接口:
curl -X GET --header 'Accept: application/json' 'https://api.msrc.microsoft.com/cvrf/v2.0/cvrf/2020-Aug'
接口返回信息是一个很大的json文本,我们可以将其存储为两个数据库表,一个是产品号product_id和产品名称product_name的表,如下:
product_id:11763
product_name:Microsoft 365 Apps for Enterprise for 64-bit Systems
一个是CVE、KB、受影响产品号的表:
CVE: CVE-2020-0909
CVSS 分数: 7.5
受影响产品号: [11498, 11499, 11569, 11571, 11572, 11454, 11645, 11647, 10735, 10853, 10816, 10855, 10048, 10482, 9318, 9344, 10051, 10049, 10378, 10379, 10483, 10543, 11713, 11715]
KB号:['KB4556812', 'KB4556853', 'KB4556846', 'KB4556860', 'KB4556826', 'KB4556852', 'KB4556813', 'KB4556843', 'KB4556799', 'KB4556854', 'KB4556840', 'KB4551853', 'KB4556836', 'KB4556807']
cvrf_id: 2020-May
表结构:
CREATE TABLE IF NOT EXISTS `win_cve_db` (
`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'id',
`cve` char(128) NOT NULL COMMENT 'CVE id',
`score` char(10) COMMENT '各产品的CVSS Score平均值',
`product_id_list` text COMMENT '漏洞影响范围,以productid集表示',
`kb_list` varchar(1024) COMMENT '漏洞对应补丁号合集',
`cvrf_id` char(128) COMMENT 'cvrf id',
`dt` char(128) NOT NULL COMMENT '数据日期',
PRIMARY KEY (`id`,`dt`)
) CHARSET=utf8mb4 COMMENT='Windows漏洞与KB补丁关系库'
CREATE TABLE IF NOT EXISTS `win_product_name` (
`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'id',
`product_id` char(128) NOT NULL COMMENT 'product_id,不需要比较大小,所以set为字符串的格式',
`product_name` varchar(1024) NOT NULL COMMENT 'product_id对应产品名',
`dt` char(128) NOT NULL COMMENT '数据日期',
PRIMARY KEY (`id`,`dt`)
) CHARSET=utf8mb4 COMMENT='product_id对应产品名'
完整代码:https://github.com/Hudi233/sometools/blob/master/win_cve_kb.py
之后就能建立一个周期任务,来实现每月的第二个星期二自动采集补丁&CVE号了:
0 7 8-14 * 2 /usr/local/bin/python3.8 /root/win_cve_db.py

笔者使用场景:通过服务器采集到的补丁号匹配CVE&补丁库,获得服务器补丁更新情况:

参考:
https://www.nopsec.com/how-to-correlate-cve-vulnerabilities-to-kb-patches-via-automation/
本文介绍了如何利用Microsoft Security Update Guide API自动获取Windows补丁的CVE和KB信息,创建数据库并实现每月补丁更新的自动化跟踪。通过示例代码展示了数据库表结构,并提供了使用场景——监测服务器补丁更新状态。

1万+

被折叠的 条评论
为什么被折叠?



