利用openVuln API自动化查询思科产品漏洞
B站视频链接:https://www.bilibili.com/video/BV1ZG411P7cf/?spm_id_from=333.999.0.0一、背景
安全自动化是目前一个比较热门的话题,网络安全问题往往是由软件自身的安全漏洞被利用导致,所以及时修复已知安全漏洞,是抵御网络攻击非常重要的一环。这个文档介绍一下,如何利用思科openVuln API,自动化的查询特定思科产品的安全漏洞,并且通过Excel的方式展现这些漏洞信息。
先看一下最后代码输出的Excel截图,代码可以根据提供的软件版本、CVE编号、产品名称来查询漏洞信息,每次查询的漏洞信息会存储为一个CSV文件,最后将所有的CSV信息合并到一个Excel文件中,每个Excel Sheet就是一个CSV文件中的信息,Excel列宽会根据内容自动调整。
除了利用API的方式查询,另外也可以通过思科提供的图形化界面来查询漏洞信息,可以登录https://tools.cisco.com/security/center/publicationListing.x网站查询思科设备的漏洞信息。
也可以查询特定版本的漏洞信息,链接:https://tools.cisco.com/security/center/softwarechecker.x
例如这里查询IOS 15.2(7)E2
的漏洞信息。
二、Cisco PSIRT openVuln API 简介
思科产品安全事件响应小组(Cisco Product Security Incident Response Team,PSIRT)是一个专门的全球团队,负责接收、调查和公开报告与思科产品和网络有关的安全漏洞信息 [1]。
思科PSIRT团队提供了openVuln API
[2],允许用户查询思科产品的漏洞信息,漏洞信息支持多种格式的行业安全标准:
-
CVE:通用漏洞枚举(Common Vulnerability Enumeration),它就像是所有公开漏洞的字典表,对已公开的漏洞进行统一编号。由Mitre公司(非盈利机构)建立与维护,网址:https://cve.org/
-
CWE:常见弱点枚举 (Common Weakness Enumeration) 是MITRE公司继CVE之后的又一个安全漏洞词典,主要针对开发社区和安全从业人员社区,列出了架构、设计、代码或实施中可能出现的常见软件和硬件弱点,这些弱点可能导致可利用的安全漏洞 [3] ,网址:https://cwe.mitre.org
-
CVSS:通用漏洞评分系统 (Common Vulnerability Scoring System) 提供了一种评估漏洞严重性的方法,企业在修复漏洞时,可以根据这个优先级来修复。CVSS现在的版本是V3.1,漏洞评分为0~10分,漏洞分为4个等级:
LOW(0.1~3.9)
、MEDIUM(4.0~6.9)
、HIGH(7.0~8.9)
、CRITICAL(9.0~10.0)
[4],网址:https://first.org/cvss -
CSAF:通用安全咨询框架 (Common Security Advisory Framework) 是结构化机器可读漏洞相关咨询的规范。CSAF 是通用漏洞报告框架 (CVRF) 的新名称和替代品。网址:https://csaf.io/
三、获取思科openVuln API访问凭证
思科openVuln API使用OAuth2
进行认证,所以需要认证获得授权之后才能查询。
登录思科网站,创建凭证信息,网址https://apiconsole.cisco.com/apps/myapps
创建一个应用名称,选择OAuth2.0的凭证类型,这里我选择客户端凭证。
勾选Cisco PSIRT openVuln API的权限,注意这个API的速率限制,每秒5次请求,每分钟30次请求。
创建完成。
查看产生的凭证信息,记录这个信息,KEY:djshucbvmpu4cmcsgufwt36w
,CLIENT SECRET:TVJxz72ADUBKdb7ySjTzzcQp
,注意不要泄露这个凭证信息(我会在演示完后销毁这个凭证)。
四、测试访问openVuln API
4.1 通过Postman软件测试
在Postman软件中选择配置OAuth 2.0
的凭证信息,设置Token名称,设置凭证类型为Client Credentials
,令牌URL为https://cloudsso.cisco.com/as/token.oauth2
,Client ID为djshucbvmpu4cmcsgufwt36w
,Client Secret:TVJxz72ADUBKdb7ySjTzzcQp
,填写完信息之后,点击产生新的Token信息,然后使用这个Token。
在软件中发起HTTP GET请求,通过CVE信息查询受影响的产品 [5],HTTP GET测试URL为:https://api.cisco.com/security/advisories/v2/cve/CVE-2021-44228
4.2 通过Terminal运行测试
通过pip3 install openVulnQuery
安装openVulnQuery
模块 [6]后,可以在Linux terminal使用命令行测试。
[root@centos8 ~]# pip3 install openVulnQuery
安装之后创建一个凭证文件,输入CLIENT_ID
和CLIENT_SECRET
信息。
也可以将这个凭证信息配置在环境变量中,例如:export CLIENT_ID="djshucbvmpu4cmcsgufwt36w"
,export CLIENT_SECRET="TVJxz72ADUBKdb7ySjTzzcQp"
。
[root@centos8 ~]# vim Credentials.json
{
"CLIENT_ID": "djshucbvmpu4cmcsgufwt36w",
"CLIENT_SECRET": "TVJxz72ADUBKdb7ySjTzzcQp"
}
调用凭证信息,查询2022年8月份所有critical
级别的漏洞。
[root@centos8 ~]# openVulnQuery --config Credentials.json --severity critical --first_published 2022-08-01:2022-08-30
[
{
"advisory_id": "cisco-sa-sb-mult-vuln-CbVp4SUR",
"advisory_title": "Cisco Small Business RV Series Routers Vulnerabilities",
"bug_ids": [
"CSCwb58268",
"CSCwb58273",
"CSCwb98961",
"CSCwb98964",
"CSCwc00210"
],
"cves": [
"CVE-2022-20827",
"CVE-2022-20841",
"CVE-2022-20842"
],
"cvrfUrl": "https://tools.cisco.com/security/center/contentxml/CiscoSecurityAdvisory/cisco-sa-sb-mult-vuln-CbVp4SUR/cvrf/cisco-sa-sb-mult-vuln-CbVp4SUR_cvrf.xml",
"cvss_base_score": "9.8",
"cwe": [
"CWE-120",
"CWE-77",<