改进后的获取NVD最近时段内发布,并且携带CPE信息的漏洞清单

文章讲述了NVD暂停漏洞详细信息更新后,开发者如何通过NVDAPI和requests库获取过去特定时间内带有CPE信息的漏洞数据,以反映当前安全工作的挑战。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

NVD从24年2月13日开始暂停了漏洞详细信息的补充和完善

不知道为什么这么重要的事情,相关的讨论和新闻并不多,说明目前的安全工作水平还是非常低的。

#要通过Python实现使用NVD API获取最新发布且带有CPE信息的漏洞,
#使用requests库来发送HTTP请求,并使用json库来解析返回的JSON数据。以下是一个简单的示例代码

import requests  
import json  
from datetime import datetime, timedelta  

# 打开记录文件# # Open the file in append mode
file = open('myfile.txt', 'a')

# NVD API的URL  
NVD_API_URL = "https://services.nvd.nist.gov/rest/json/cves/2.0/"  
  
# 设置时间范围以获取最新发布的漏洞,例如过去7天  
days_ago = 30  
start_date = (datetime.now() - timedelta(days=days_ago)).strftime('%Y-%m-%dT00:00:00.000')  
end_date = datetime.now().strftime('%Y-%m-%dT00:00:00.000')  
  
# 构造API请求参数  
params = {  
    'pubStartDate': start_date,# '2024-02-27T00:00:00.000',#start_date,#'2024-01-01T00:00:00.000',#start_date,#'2024-04-01T00:00:00.000',#start_date,  
    'pubEndDate': end_date, #'2024-04-27T13:36:00.000',#end_date,# '2024-02-27T00:00:00.000',#end_date,#'2024-04-26T13:36:00.000',  
    #'resultsPerPage': 10,  # 每次请求返回的漏洞数量,可以根据需要调整,没有key一次最多输出2000个
    'virtualMatchString': 'cpe:2.3:*:*:*:*:*:*:*' #只有cpe有相关信息才输出,因为当前nvd的漏洞分析基本上暂停了
}  
file.write("#####################################################]\r")
#Append content to the file
file.write(f"now:{datetime.now()} startDate:{start_date} endDate:{end_date}\r")

# 发送HTTP GET请求  
response = requests.get(NVD_API_URL, params=params)  
print("reponse:{response.status_code}")    
# 检查请求是否成功  
if response.status_code == 200:  
    
    # 解析返回的JSON数据  
    cve_data = response.json()  
    
    #print(cve_data)  

    # 提取带有CPE信息的漏洞  
    print(cve_data['totalResults'])
    file.write(f"totalrecords:{cve_data['totalResults']}\r")
    for cve_item in cve_data['vulnerabilities']:  
        cve_id = cve_item['cve']['id']  
        print(f"CVE ID: {cve_id} published:{cve_item['cve']['published']} lastModified:{cve_item['cve']['lastModified']}")  
        # 检查是否有CPE信息  
        #print(cve_item['cve']['configurations'][0]['nodes'])
        if 'configurations' in cve_item['cve']: 
            file.write(f"CVE ID: {cve_id} published: {cve_item['cve']['published']} lastModified: {cve_item['cve']['lastModified']} CVSS: {cve_item['cve']['metrics']['cvssMetricV31'][0]['cvssData']['baseScore']} CPE: {cve_item['cve']['configurations'][0]['nodes'][0]['cpeMatch'][0]['criteria']}\r")
            for configuration_item in cve_item['cve']['configurations']:
                for node_item in configuration_item['nodes']:
                    for cpe_item in node_item['cpeMatch']:
                        a=1
                        #print(cpe_item['criteria'])
                    # 在这里可以进一步处理每个带有CPE信息的漏洞  
            #file.write(f"{cve_item['cve']['configurations'][0]['nodes'][0]['cpeMatch'][0]['criteria']}\r")
        #print("---")  
else:  
    print(f"Failed to retrieve data from NVD API. Status code: {response.status_code}")

# Close the file
file.close()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值