CN117807604B - 固件文件系统中开源组件cve漏洞检测方法 - Google Patents
固件文件系统中开源组件cve漏洞检测方法 Download PDFInfo
- Publication number
- CN117807604B CN117807604B CN202410231735.9A CN202410231735A CN117807604B CN 117807604 B CN117807604 B CN 117807604B CN 202410231735 A CN202410231735 A CN 202410231735A CN 117807604 B CN117807604 B CN 117807604B
- Authority
- CN
- China
- Prior art keywords
- firmware
- data
- model
- vulnerability
- information
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000001514 detection method Methods 0.000 title claims abstract description 37
- 238000000034 method Methods 0.000 claims abstract description 49
- 238000012549 training Methods 0.000 claims description 36
- 238000004422 calculation algorithm Methods 0.000 claims description 25
- 238000012360 testing method Methods 0.000 claims description 23
- 238000004458 analytical method Methods 0.000 claims description 13
- 230000006870 function Effects 0.000 claims description 13
- 238000013528 artificial neural network Methods 0.000 claims description 11
- 238000005516 engineering process Methods 0.000 claims description 10
- 238000005457 optimization Methods 0.000 claims description 10
- 230000008569 process Effects 0.000 claims description 10
- 238000012706 support-vector machine Methods 0.000 claims description 10
- 238000010801 machine learning Methods 0.000 claims description 8
- 238000012545 processing Methods 0.000 claims description 8
- 238000013527 convolutional neural network Methods 0.000 claims description 7
- 238000013461 design Methods 0.000 claims description 7
- 230000007246 mechanism Effects 0.000 claims description 7
- 238000012544 monitoring process Methods 0.000 claims description 7
- 238000013135 deep learning Methods 0.000 claims description 6
- 238000010606 normalization Methods 0.000 claims description 6
- 230000004913 activation Effects 0.000 claims description 4
- 238000004590 computer program Methods 0.000 claims description 4
- 238000013136 deep learning model Methods 0.000 claims description 4
- 230000004927 fusion Effects 0.000 claims description 4
- 238000012423 maintenance Methods 0.000 claims description 4
- 238000003058 natural language processing Methods 0.000 claims description 4
- 238000007781 pre-processing Methods 0.000 claims description 4
- 238000010276 construction Methods 0.000 claims description 3
- 238000013480 data collection Methods 0.000 claims description 3
- 238000011156 evaluation Methods 0.000 claims description 3
- 238000002347 injection Methods 0.000 claims description 3
- 239000007924 injection Substances 0.000 claims description 3
- 230000003993 interaction Effects 0.000 claims description 3
- 238000012795 verification Methods 0.000 claims description 3
- ORILYTVJVMAKLC-UHFFFAOYSA-N Adamantane Natural products C1C(C2)CC3CC1CC2C3 ORILYTVJVMAKLC-UHFFFAOYSA-N 0.000 claims description 2
- 238000004364 calculation method Methods 0.000 claims description 2
- 238000013499 data model Methods 0.000 claims description 2
- 238000013500 data storage Methods 0.000 claims description 2
- 238000000605 extraction Methods 0.000 claims description 2
- 230000010354 integration Effects 0.000 claims description 2
- 230000001360 synchronised effect Effects 0.000 claims description 2
- 230000009286 beneficial effect Effects 0.000 abstract description 2
- 230000002441 reversible effect Effects 0.000 description 5
- 238000004891 communication Methods 0.000 description 2
- 230000000670 limiting effect Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000008439 repair process Effects 0.000 description 2
- 239000000243 solution Substances 0.000 description 2
- 206010063385 Intellectualisation Diseases 0.000 description 1
- 239000008186 active pharmaceutical agent Substances 0.000 description 1
- 238000007405 data analysis Methods 0.000 description 1
- 238000013079 data visualisation Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 239000000796 flavoring agent Substances 0.000 description 1
- 235000019634 flavors Nutrition 0.000 description 1
- 238000007689 inspection Methods 0.000 description 1
- 230000002452 interceptive effect Effects 0.000 description 1
- 230000002829 reductive effect Effects 0.000 description 1
- 238000011160 research Methods 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 230000002123 temporal effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/57—Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
- G06F21/577—Assessing vulnerabilities and evaluating computer system security
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- Computer Security & Cryptography (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Computing Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
Abstract
本发明提供了一种固件文件系统中开源组件CVE漏洞检测方法,包括:固件类型自动识别与解包,用以获取完整的固件文件系统;预设程序从根目录开始遍历文件系统,查找并记录所有的ELF,所述ELF为可执行与可链接格式;利用预设程序解析出固件中各个组件或库的版本信息;根据获取的组件或库的名称及其版本信息,预设程序通过NVD查询相应的CPE信息,所述NVD为网络漏洞数据库,CPE为通用平台枚举;在本地数据库中根据CPE信息进行漏洞数据的搜索,按照预设的搜索方法进行搜索。本发明有益效果:本方案实现低误报率及漏报率,支持多类型固件的检测,高度自动化、智能化,使用者只需指定固件,即可开启全自动化CVE漏洞检测。
Description
技术领域
本发明属于检测技术领域,尤其是涉及一种固件文件系统中开源组件CVE漏洞检测方法。
背景技术
随着信息技术的快速发展,Linux系统作为开源的操作系统,被广泛应用于服务器、嵌入式设备、智能手机等各个领域。然而,随着其广泛应用,Linux系统及其组件的网络安全问题也日益凸显。CVE(Common Vulnerabilities and Exposures)是网络安全漏洞的公开发布平台,大量的Linux固件开源组件或库存在CVE漏洞,可能被黑客利用,造成严重的安全威胁。因此,针对Linux固件开源组件或库的CVE漏洞检测技术的研究和应用显得尤为重要。
在Linux固件开源组件或库的CVE漏洞检测方面,早期的方法主要依赖于手动检测和修复。这些方法不仅耗时耗力,而且容易漏报和误报。为了解决这些问题,一些自动化检测工具开始被研发和应用。这些工具主要基于静态分析的方法,可以自动化地检测出一些常见的漏洞。
目前,已经存在一些针对Linux固件开源组件或库的CVE漏洞检测的自动化工具,如开源的CVE-Checker和商用的Red Hat Security Tool等。这些工具可以自动化地检测出一些常见的漏洞,并生成相应的报告。然而,现有的技术仍然存在一些问题和缺点,例如存在数据源的限制、误报和漏报以及缺乏自动化和智能化的问题,尽管现有技术正在不断发展和改进,但它们可能仍然缺乏自动化和智能化功能,这可能导致操作复杂度和成本的增加,同时也降低了检测效率和准确性。
综上所述,如何确保漏洞数据源的稳定和完整性,减少误报和漏报,增加对新漏洞的适应性,以及如何提高自动化和智能化,成为本领域技术人员急需解决的问题。
发明内容
有鉴于此,本发明旨在提出一种固件文件系统中开源组件CVE漏洞检测方法,以至少解决背景技术中的至少一个问题。
为达到上述目的,本发明的技术方案是这样实现的:
固件文件系统中开源组件CVE漏洞检测方法,包括:
S1、固件类型自动识别与解包,用以获取完整的固件文件系统;
S2、预设程序从根目录开始遍历文件系统,查找并记录所有的ELF,所述ELF为可执行与可链接格式;
S3、利用预设程序解析出固件中各个组件或库的版本信息;
S4、根据获取的组件或库的名称及其版本信息,预设程序通过NVD查询相应的CPE信息,所述NVD为网络漏洞数据库,CPE为通用平台枚举;
S5、在本地数据库中根据CPE信息进行漏洞数据的搜索,按照预设的搜索方法进行搜索;
S6、预设程序根据组件或库的CPE信息,通过与NVD的交互查询相应的漏洞数据;
S7、预设程序将从NVD查询到的CPE信息及相应的漏洞数据写入本地数据库;
S8、预设程序根据查询到的漏洞数据生成检测报告。
进一步的,在步骤S1中,对于不同类型的固件,利用Binwalk提取嵌入在固件中的文件系统,利用mount将文件系统挂载为可访问的目录。
进一步的,在步骤S1中,使用机器学习模型,对不同固件类型进行分类训练,以提高识别准确率,同时建立解包工具库,根据固件类型自动选择适合的工具进行解包,确保能够访问到固件的全部内容,其中包括:
C1、数据收集与预处理:用以收集不同类型的固件样本,对固件样本进行预处理,提取特征,具体如下:
结合SVM和神经网络,利用SVM进行基本分类,利用神经网络进一步处理边界情况:
,其中αi为拉格朗日乘子,yi为第i个训练样本的类别标签,<x,xi>为x和xi的内积,x为输入向量,xi为第i个支持向量;
C2、模型训练:选择支持向量机或深度神经网络,使用预处理后的固件样本进行模型训练,调整参数直到达到预设的识别准确率;
C3、测试与优化:使用未参与训练的固件样本测试模型的准确率,并根据测试结果进一步优化模型;
C4、集成解包工具库:收集并整合各种固件解包工具;
C5、自动化解包流程:根据机器学习模型识别的固件类型,自动选择并应用最合适的解包工具,用以确保能够完整访问固件内容;
C6、系统部署与监测:将训练好的模型和解包工具库部署到实际的漏洞检测系统中,并定期监控其性能,确保高效准确地识别和解包固件。
进一步的,在步骤S3中,版本信息解析方法包括:
通过分析ELF文件的特定段落或其他元数据,提取版本信息;
进一步的,在步骤S3中,利用深度学习算法识别组件或库的版本信息的步骤如下:
进一步的,在步骤S5中,按照预设的搜索方法进行搜索包括以下步骤:
数据集构建:构建包含丰富组件版本信息的数据集,利用预设的数据增强方法,以增加模型的泛化能力,利用构建好的数据集进行搜索,其中数据增强方法包括以下步骤:
A1、利用随机扰动方法,包括随机噪声注入、随机裁剪、旋转,结合自然语言处理中的数据增强方法如同义词替换,用以适用于固件中的文本数据;
A2、对每个样本应用随机选择的扰动,包括对固件文件实施随机裁剪:
,其中是增强后的样本,是原样本,是小的随机噪声;
A3、在增强后的数据上进行标准化处理,确保数据一致性,扩展原数据集,结合原始和增强后的数据,用于模型训练;
A4、在扩展后的数据集上训练模型,使用交叉验证评估模型在增强数据上的性能。
进一步的,在步骤S8中,检测报告包括识别的每个组件的版本信息、相应的CPE信息、检测到的漏洞及其描述。
进一步的,本方案公开了一种电子设备,包括处理器以及与处理器通信连接,且用于存储所述处理器可执行指令的存储器,所述处理器用于执行固件文件系统中开源组件CVE漏洞检测方法。
进一步的,本方案公开了一种服务器,包括至少一个处理器,以及与所述处理器通信连接的存储器,所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述处理器执行,以使所述至少一个处理器执行固件文件系统中开源组件CVE漏洞检测方法。
进一步的,本方案公开了一种计算机可读取存储介质,存储有计算机程序,所述计算机程序被处理器执行时实现固件文件系统中开源组件CVE漏洞检测方法。
相对于现有技术,本发明所述的固件文件系统中开源组件CVE漏洞检测方法具有以下有益效果:
本发明所述的固件文件系统中开源组件CVE漏洞检测方法,实现低误报率及漏报率,支持多类型固件的检测,高度自动化、智能化,使用者只需指定固件,即可开启全自动化CVE漏洞检测。
附图说明
构成本发明的一部分的附图用来提供对本发明的进一步理解,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
图1为本发明实施例所述的固件文件系统中开源组件CVE漏洞检测方法示意图。
具体实施方式
需要说明的是,在不冲突的情况下,本发明中的实施例及实施例中的特征可以相互组合。
下面将参考附图并结合实施例来详细说明本发明。
本方案公开了一种固件文件系统中开源组件CVE漏洞检测方法,主要包括以下步骤:
S1、固件类型自动识别与解包,用以获取完整的固件文件系统;
S2、预设程序从根目录开始遍历文件系统,查找并记录所有的ELF,所述ELF为可执行与可链接格式;
S3、利用预设程序解析出固件中各个组件或库的版本信息;
S4、根据获取的组件或库的名称及其版本信息,预设程序通过NVD查询相应的CPE信息,所述NVD为网络漏洞数据库,CPE为通用平台枚举;
S5、在本地数据库中根据CPE信息进行漏洞数据的搜索,按照预设的搜索方法进行搜索;
S6、预设程序根据组件或库的CPE信息,通过与NVD的交互查询相应的漏洞数据;
S7、预设程序将从NVD查询到的CPE信息及相应的漏洞数据写入本地数据库;
S8、预设程序根据查询到的漏洞数据生成检测报告。
其中,在步骤S1中,使用如支持向量机(SVM)或神经网络的机器学习模型,对不同固件类型进行分类训练,以提高识别准确率。同时,建立一个解包工具库,根据固件类型自动选择适合的工具进行解包,确保能够访问到固件的全部内容;
其中,使用机器学习模型进行固件类型识别和自动解包的步骤如下:
数据收集与预处理:收集不同类型的固件样本,包括但不限于路由器、摄像头、智能设备等的固件,对这些固件样本进行预处理,提取特征,如文件大小、结构、头部信息等,具体实施过程中,包括:
结合SVM和神经网络,利用SVM进行基本分类,利用神经网络进一步处理边界情况:
,其中αi为拉格朗日乘子,yi为第i个训练样本的类别标签,<x,xi>为x和xi的内积,x为输入向量,xi为第i个支持向量;
神经网络结构可能包括卷积层和循环层,以捕获固件数据的空间和时间特征。
模型训练:选择适合的机器学习模型,例如支持向量机(SVM)或深度神经网络,使用预处理后的固件样本进行模型训练,调整参数直到达到较高的识别准确率;
测试与优化:使用未参与训练的固件样本测试模型的准确率,并根据测试结果进一步优化模型;
集成解包工具库:收集并整合各种固件解包工具,如Binwalk、Firmware Mod Kit等;
自动化解包流程:根据机器学习模型识别的固件类型,自动选择并应用最合适的解包工具,确保能够完整访问固件内容;
系统部署与监测:将训练好的模型和解包工具库部署到实际的漏洞检测系统中,并定期监控其性能,确保高效准确地识别和解包固件;
在步骤S2中,开发一个智能化的文件扫描系统,该系统能够识别和确认ELF文件的特征码,确保不会将其他文件误认为是ELF文件。同时,该系统能够识别隐藏或非标准路径中的ELF文件,确保全面性;
在步骤S3中,利用深度学习算法,如卷积神经网络(CNN),从固件的各种文件和配置中识别出组件或库的版本信息。这需要建立一个包含多种组件版本信息的训练数据集,以实现准确的版本识别;
其中,利用深度学习算法识别组件或库的版本信息的步骤如下:
数据集构建:收集包含丰富组件版本信息的固件文件和配置信息,构建一个多样化的训练数据集,具体实施过程,包括:
构建包含丰富组件版本信息的数据集,利用预设的数据增强方法,以增加模型的泛化能力,数据增强方法包括以下步骤:
A1、利用随机扰动方法,包括随机噪声注入、随机裁剪、旋转等,结合自然语言处理(NLP)中的数据增强技术,如同义词替换,适用于固件中的文本数据;
A2、对每个样本应用随机选择的扰动,包括对固件文件实施随机裁剪:
,其中是增强后的样本,是原样本,是小的随机噪声;
A3、在增强后的数据上进行标准化处理,确保数据一致性,扩展原数据集,结合原始和增强后的数据,用于模型训练;
A4、在扩展后的数据集上训练模型,使用交叉验证评估模型在增强数据上的性能;
特征提取与预处理:对收集的数据进行预处理,提取关键特征,如文件头信息、特定字符串、配置文件内容等;
其中,通过深度学习模型提取关键特征,提高模型效率和准确性,包括以下步骤:
B1、设计CNN架构:多层卷积层设计,用于提取固件数据的层次特征,引入稀疏连接和可分离卷积,以减少参数量,提高计算效率;
B2、利用激活函数与归一化技术:引入新型激活函数,,其中是sigmoid函数,是可学习参数,使用批量归一化或层归一化,以加速训练并减少内部协变量偏移;
B3、模型训练与优化:使用Adam或RMSprop优化器进行模型训练,应用Dropout和L2正则化避免过拟合;
B4、特征融合与注意力机制,融合不同层次的特征,使用注意力机制关注关键信息,,其中Q,K,V分别为查询、键和值,为键的维度;
B5、性能评估与优化:在测试集上评估模型性能,根据测试结果进一步调整模型结构和参数;
模型选择与训练:选择合适的深度学习模型,如卷积神经网络(CNN),并使用准备好的数据集进行训练,直到模型能够准确识别不同组件的版本信息;
测试与优化:使用未见过的数据测试模型的准确性,并根据测试结果调整和优化模型;
集成到漏洞检测系统:将训练好的模型集成到现有的固件漏洞检测系统中,用于自动识别固件中的组件或库版本信息;
持续更新与维护:定期更新训练数据集,以纳入新的组件和版本信息,保证模型的持续准确性和有效性;
在步骤S4中,除了访问NVD,还可以整合其他数据库,如CVE Details和ExploitDatabase。开发一个数据库访问层,用于管理和优化对这些数据库的查询,包括自动选择最合适的数据源;
在步骤S5中,建立一个包含广泛CVE数据的本地数据库,并通过自动化脚本定期与外部数据库同步,确保数据的最新性。同时,设计高效的查询算法,以快速从大量数据中找到相关漏洞信息;
其中,设计高效的漏洞信息查询算法的步骤如下:
需求分析与规划:分析查询漏洞信息的具体需求,如查询速度、数据量、更新频率等,并据此制定详细的实施规划;
算法设计:设计高效的查询算法,考虑使用如哈希表、索引结构等技术提高检索速度,具体实施过程中,包括:
设计一种基于图论的查询算法,结合广度优先搜索和Dijkstra算法优化检索路径:
,其中是从源点到点v的最短路径长度。
数据库优化:优化数据库设计,如使用适当的数据模型和存储结构,确保高效存取数据;
实现与测试:实现设计的查询算法,并在实际数据库上进行测试,评估查询效率和准确性;
集成与优化:将查询算法集成到漏洞检测系统中,根据实际运行情况进行优化调整;
系统监测与维护:定期监测系统性能,确保查询算法能够在大数据环境下稳定运行,并根据需要进行维护和升级。
在步骤S6中,利用自动化API调用,与NVD等数据库进行交互查询。优化查询脚本,通过并行处理和缓存机制提高查询效率;
在步骤S7中,设计一个高效的数据库写入模块,可以快速处理大量数据。使用事务处理和错误回滚机制来确保数据的一致性和完整性;
在步骤S8中,开发一个报告生成模块,该模块能够根据检测结果自动选择合适的模板,并生成包含数据可视化的详细报告。报告中应包括漏洞详细信息、影响评估、修复建议等。
在具体实施过程中,本方案提出另外一种实施例,其工作流程为:
1.程序自动识别固件的类型,根据不同的类型,自行选择对应的解包方法,使用binwalk或mount进行全自动解包,获取完整的固件文件系统(FileSystem);
2.获取到固件的文件系统后,从根目录开始查找并记录ELF(可执行与可链接格式)文件;
3.通过正则匹配、逆向分析解析出组件/库的版本信息;
4.根据组件/库及其版本信息,通过NVD查询对应的CPE信息;
5.首先从本地的数据中根据CPE信息进行漏洞数据的检索,若本地数据库中无对应的漏洞数据,则进行第6、第7步;
6.根据组件/库的CPE信息,通过NVD查询对应的漏洞数据;
7.将查询到的CPE信息及对应的漏洞数据写入本地的数据库;
8.根据查询到的漏洞数据生成检测报告。
为了解决确保漏洞数据源的稳定和完整性,减少误报和漏报,增加对新漏洞的适应性,以及提高自动化和智能化的问题,本方案分别做出了如下改进:
1.确保漏洞数据源的稳定和完整性:漏洞数据来源为国家漏洞数据库NVD,NVD的公开漏洞和暴露是公开的已知信息安全漏洞和风险敞口的字典,CVE的通用标识符启用安全产品之间的数据交换,并提供基准指数点评估的工具和服务的覆盖范围。总的来说,NVD是一个非常重要的网络安全资源,对于企业、组织和个人来说都有很大的参考价值。而本专利基于此数据源,使用被检测组件版本信息从NVD的CPE信息查询接口获取的组件对应的CPE信息(CPE(Common Platform Enumeration)是通用平台枚举的缩写,它是一种用于标识和描述操作系统、应用程序、浏览器和其他软件产品的标准词汇。CPE可以帮助安全研究人员和组织更好地识别和分类与软件产品相关的漏洞和风险。),假设解析到libcurl的版本为7.28.0,则通过请求获取到curl的CPE数据:
"cpe":{
"deprecated":false,
"cpeName": "cpe:2.3:a:haxx:curl:7.28.0:*:*:*:*:*:*:*",
"cpeNameId": "19A248F4-4F2F-4664-9BAF-81FAFC21A294",
"lastModified": "2013-05-08T14:49:12.480",
"created": "2013-04-30T15:34:26.603",
"titles": [{
"title": "Haxx Curl 7.28.0",
"lang": "en"}]}
然后再根据组件的CPE信息从数据源NVD的CVE漏洞查询接口获取对应的漏洞数据,构造请求如下:
"cve": {
"id": "CVE-2014-2522",
"sourceIdentifier": "cve@mitre.org",
"published": "2014-04-18T22:14:38.587",
"lastModified": "2017-04-29T01:59:01.413",
"vulnStatus": "Modified",
"descriptions": [{
"lang": "en",
"value":"curl and libcurl 7.27.0 through 7.35.0, when running onWindows and using the SChannel/Winssl TLS backend, does not verify that theserver hostname matches a domain name in the subject's Common Name (CN) orsubjectAltName field of the X.509 certificate when accessing a URL that usesa numerical IP address, which allows man-in-the-middle attackers to spoofservers via an arbitrary valid certificate."},]}
在数据请求的过程中采用了失败重试机制,避免因小概率的网络问题导致数据获取失败。
2.减少误报漏报:在现有的技术中,通常使用正则表达式来解析组件/库的版本信息,这种方法的缺点是,若正则表达式疲惫到了多个结果或味匹配到结果,则无法进行接下来的漏洞检测,增加了误报和漏报。为了解决误报漏报的问题,本技术除了采用正则表达式直接匹配版本信息外,还采用了对组件进行逆向分析的技术。这里会用到两个核心的python第三方库r2pipe和qiling,假设需要解析libcurl库的版本号,获取到的固件文件系统中的库文件libcurl.so.4的绝对路径为"/path/to/libcurl.so.4",然后使用r2=r2pipe.open("/path/to/libcurl.so.4")创建r2会话,再使用r2.cmd("aaa")对libcurl.so.4进行逆向分析,最后使用r2.cmd("afl")获取libcurl.so.4中的所有函数名称及地址,在这些函数名称中,同时匹配关键字"version"和"curl"来找到和libcurl版本有关的函数"curl_version_info"及其地址,此时有两种获取版本号的方式,程序首先会使用r2pipe在函数curl_version_info的上下文中使用izz指令获取curl_version_info内部的所有字符串,然后使用正则表达式匹配版本号,若是匹配且只匹配到一个结果,则认为成功获取到了版本号,否则使用开源的二进制程序分析框架qiling模拟运行libcurl库,通过ql=Qiling()创建Qiling的实例化对象ql,通过ql.run(begin="curl_version_info.address")模拟运行curl_version_info函数,以此获取组件的版本信息。
缺乏自动化和智能化:本方案用Python编写代码,以实现自动化工作流程和智能化决策。首先是自动解包,程序通过判断固件包的文件类型自动选择正确的固件解包方式,当固件格式为bin时,调用binwalk进行解包,当固件格式为img时则使用挂载的方式实现自动解包;第二点是区分开源库和闭源库(供应商提供的SDK或链接库),此系统旨在检测开源组件或库的CVE漏洞,如何在众多的组件库中找到开源库至关重要,首先解析lib目录下的每一个lib库,使用strings获取lib库的所有字符串,其中开源的lib库都会遵循某种开源协议,常见的开源协议有GNU、MIT、Apache、BSD、GPL v3等,通过在字符串中查找开源协议相关的内容以确定是否为开源库;通过Python的丰富库和框架,能够轻松地处理大量数据,实现复杂的算法,并进行高级数据分析。Radare2和Qiling都是开源的逆向分析框架,适用于二进制文件的分析。通过使用Radare2和Qiling,能够自动化执行二进制文件的分析过程,提高分析的智能化水平。二进制逆向分析是一种从机器语言转换回高级语言的过程,用于理解和分析软件的内部结构和功能。利用二进制逆向分析技术,自动化地提取和分析目标二进制文件的版本信息,提高分析的准确性和智能化程度。通过整合这些技术和工具,本专利能够实现更高效和智能的固件及二进制组件分析过程,提高自动化程度,减少人工干预,并提供更准确的结果。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及方法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
在本申请所提供的几个实施例中,应该理解到,所揭露的方法和系统,可以通过其它的方式实现。例如,以上所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。上述单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本发明实施例方案的目的。
最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围,其均应涵盖在本发明的权利要求和说明书的范围当中。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (4)
1.固件文件系统中开源组件CVE漏洞检测方法,其特征在于,包括:
S1、固件类型自动识别与解包,用以获取完整的固件文件系统;
S2、预设程序从根目录开始遍历文件系统,查找并记录所有的ELF,所述ELF为可执行与可链接格式;
S3、利用预设程序解析出固件中各个组件或库的版本信息;
S4、根据获取的组件或库的名称及其版本信息,预设程序通过NVD查询相应的CPE信息,所述NVD为网络漏洞数据库,CPE为通用平台枚举;
S5、在本地数据库中根据CPE信息进行漏洞数据的搜索,按照预设决策条件进行判断;
S6、预设程序根据组件或库的CPE信息,通过与NVD的交互查询相应的漏洞数据;
S7、预设程序将从NVD查询到的CPE信息及相应的漏洞数据写入本地数据库;
S8、预设程序根据查询到的漏洞数据生成检测报告;
在步骤S1中,使用机器学习模型,对不同固件类型进行分类训练,以提高识别准确率,同时建立解包工具库,根据固件类型自动选择适合的工具进行解包,确保能够访问到固件的全部内容,其中包括:
C1、数据收集与预处理:用以收集不同类型的固件样本,对固件样本进行预处理,提取特征,具体如下:
结合SVM和神经网络,利用SVM进行基本分类,利用神经网络进一步处理边界情况:
其中αi为拉格朗日乘子,yi为第i个训练样本的类别标签,<x,xi>为x和xi的内积,x为输入向量,xi为第i个支持向量;
C2、模型训练:选择支持向量机或深度神经网络,使用预处理后的固件样本进行模型训练,调整参数直到达到预设的识别准确率;
C3、测试与优化:使用未参与训练的固件样本测试模型的准确率,并根据测试结果进一步优化模型;
C4、集成解包工具库:收集并整合各种固件解包工具;
C5、自动化解包流程:根据机器学习模型识别的固件类型,自动选择并应用最合适的解包工具,用以确保能够完整访问固件内容;
C6、系统部署与监测:将训练好的模型和解包工具库部署到实际的漏洞检测系统中,并定期监控其性能,确保高效准确地识别和解包固件;
在步骤S1中,对于不同类型的固件,利用Binwalk提取嵌入在固件中的文件系统,利用mount将文件系统挂载为可访问的目录;
在步骤S3中,版本信息解析方法包括:
通过分析ELF文件的特定段落或其他元数据,提取版本信息;
在步骤S3中,利用深度学习算法识别组件或库的版本信息的步骤如下:如果在本地数据库找到了对应的漏洞数据,则直接使用这些数据,否则执行后续的步骤S6和步骤S7;
在步骤S8中,检测报告包括识别的每个组件的版本信息、相应的CPE信息、检测到的漏洞及其描述;
其中,
在步骤S3中,利用深度学习算法,从固件的各种文件和配置中识别出组件或库的版本信息,利用深度学习算法识别组件或库的版本信息的步骤如下:
数据集构建:收集包含丰富组件版本信息的固件文件和配置信息,构建一个多样化的训练数据集,具体实施过程,包括:
构建包含丰富组件版本信息的数据集,利用预设的数据增强方法,以增加模型的泛化能力,数据增强方法包括以下步骤:
A1、利用随机扰动方法,包括随机噪声注入、随机裁剪、旋转,结合自然语言处理中的数据增强技术,以适用于固件中的文本数据;
A2、对每个样本应用随机选择的扰动,包括对固件文件实施随机裁剪:
x′=x[start:end]+∈,其中x′是增强后的样本,x是原样本,∈是小的随机噪声;
A3、在增强后的数据上进行标准化处理,确保数据一致性,扩展原数据集,结合原始和增强后的数据,用于模型训练;
A4、在扩展后的数据集上训练模型,使用交叉验证评估模型在增强数据上的性能;
特征提取与预处理:对收集的数据进行预处理,提取关键特征,包括文件头信息、特定字符串、配置文件内容;
其中,通过深度学习模型提取关键特征,提高模型效率和准确性,包括以下步骤:
B1、设计CNN架构:多层卷积层设计,用于提取固件数据的层次特征,引入稀疏连接和可分离卷积,以减少参数量,提高计算效率;
B2、利用激活函数与归一化技术:引入新型激活函数,f(x)=x·σ(βx),其中σ是sigmoid函数,β是可学习参数,使用批量归一化或层归一化,以加速训练并减少内部协变量偏移;
B3、模型训练与优化:使用Adam或RMSprop优化器进行模型训练,应用Dropout和L2正则化避免过拟合;
B4、特征融合与注意力机制,融合不同层次的特征,使用注意力机制关注关键信息,其中Q,K,V分别为查询、键和值,dk为键的维度;
B5、性能评估与优化:在测试集上评估模型性能,根据测试结果进一步调整模型结构和参数;
模型选择与训练:选择合适的深度学习模型,包括卷积神经网络,并使用准备好的数据集进行训练,直到模型能够准确识别不同组件的版本信息;
测试与优化:使用未见过的数据测试模型的准确性,并根据测试结果调整和优化模型;
集成到漏洞检测系统:将训练好的模型集成到现有的固件漏洞检测系统中,用于自动识别固件中的组件或库版本信息;
持续更新与维护:定期更新训练数据集,以纳入新的组件和版本信息,保证模型的持续准确性和有效性;
在步骤S5中,建立一个包含广泛CVE数据的本地数据库,并通过自动化脚本定期与外部数据库同步,确保数据的最新性;同时,设计高效的查询算法,以快速从大量数据中找到相关漏洞信息;
其中,设计高效的漏洞信息查询算法的步骤如下:
需求分析与规划:分析查询漏洞信息的具体需求,包括查询速度、数据量、更新频率,并据此制定详细的实施规划;
算法设计:设计高效的查询算法,包括:
设计一种基于图论的查询算法,结合广度优先搜索和Dijkstra算法优化检索路径:
d[υ]=min(d[υ],d[u]+w(u,υ)),其中d[υ]是从源点到点v的最短路径长度;
数据库优化:优化数据库设计,包括使用适当的数据模型和存储结构,确保高效存取数据;
实现与测试:实现设计的查询算法,并在实际数据库上进行测试,评估查询效率和准确性;
集成与优化:将查询算法集成到漏洞检测系统中,根据实际运行情况进行优化调整;
系统监测与维护:定期监测系统性能,确保查询算法能够在大数据环境下稳定运行,并根据需要进行维护和升级。
2.一种电子设备,包括处理器以及与处理器通信连接,且用于存储所述处理器可执行指令的存储器,其特征在于:所述处理器用于执行上述权利要求1所述的固件文件系统中开源组件CVE漏洞检测方法。
3.一种服务器,其特征在于:包括至少一个处理器,以及与所述处理器通信连接的存储器,所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述处理器执行,以使所述至少一个处理器执行如权利要求1所述的固件文件系统中开源组件CVE漏洞检测方法。
4.一种计算机可读取存储介质,存储有计算机程序,其特征在于:所述计算机程序被处理器执行时实现权利要求1所述的固件文件系统中开源组件CVE漏洞检测方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410231735.9A CN117807604B (zh) | 2024-03-01 | 2024-03-01 | 固件文件系统中开源组件cve漏洞检测方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410231735.9A CN117807604B (zh) | 2024-03-01 | 2024-03-01 | 固件文件系统中开源组件cve漏洞检测方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN117807604A CN117807604A (zh) | 2024-04-02 |
CN117807604B true CN117807604B (zh) | 2024-08-30 |
Family
ID=90425974
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202410231735.9A Active CN117807604B (zh) | 2024-03-01 | 2024-03-01 | 固件文件系统中开源组件cve漏洞检测方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117807604B (zh) |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113065137A (zh) * | 2021-03-31 | 2021-07-02 | 深圳开源互联网安全技术有限公司 | Php项目中开源组件漏洞检测方法 |
CN113254599A (zh) * | 2021-06-28 | 2021-08-13 | 浙江大学 | 一种基于半监督学习的多标签微博文本分类方法 |
CN113821804A (zh) * | 2021-11-24 | 2021-12-21 | 浙江君同智能科技有限责任公司 | 一种面向第三方组件及其安全风险的跨架构自动化检测方法与系统 |
CN115277205A (zh) * | 2022-07-28 | 2022-11-01 | 中国电信股份有限公司 | 模型训练方法及装置、端口的风险识别方法 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20190190538A1 (en) * | 2017-12-18 | 2019-06-20 | Facebook, Inc. | Accelerator hardware for compression and decompression |
US11483009B2 (en) * | 2019-05-08 | 2022-10-25 | Intel Corporation | Self-checking compression |
CN112527744A (zh) * | 2020-12-17 | 2021-03-19 | 深圳爱加密科技有限公司 | 一种固件类型识别方法、智能终端及计算机可读存储介质 |
CN112685746A (zh) * | 2021-01-08 | 2021-04-20 | 中国科学技术大学 | 一种面向物联网设备固件的漏洞检测方法及系统 |
CN115544515A (zh) * | 2022-09-02 | 2022-12-30 | 中国电信股份有限公司 | 固件检测方法、装置、设备及存储介质 |
CN116824676A (zh) * | 2023-07-07 | 2023-09-29 | 布比(北京)网络技术有限公司 | 数字身份信息的生成方法、应用方法、装置、系统及设备 |
-
2024
- 2024-03-01 CN CN202410231735.9A patent/CN117807604B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113065137A (zh) * | 2021-03-31 | 2021-07-02 | 深圳开源互联网安全技术有限公司 | Php项目中开源组件漏洞检测方法 |
CN113254599A (zh) * | 2021-06-28 | 2021-08-13 | 浙江大学 | 一种基于半监督学习的多标签微博文本分类方法 |
CN113821804A (zh) * | 2021-11-24 | 2021-12-21 | 浙江君同智能科技有限责任公司 | 一种面向第三方组件及其安全风险的跨架构自动化检测方法与系统 |
CN115277205A (zh) * | 2022-07-28 | 2022-11-01 | 中国电信股份有限公司 | 模型训练方法及装置、端口的风险识别方法 |
Also Published As
Publication number | Publication date |
---|---|
CN117807604A (zh) | 2024-04-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Uwagbole et al. | Applied machine learning predictive analytics to SQL injection attack detection and prevention | |
JP6860070B2 (ja) | 分析装置、ログの分析方法及び分析プログラム | |
CN112131882A (zh) | 一种多源异构网络安全知识图谱构建方法及装置 | |
EP2282449B1 (en) | Message descriptions | |
CN112866023B (zh) | 网络检测、模型训练方法、装置、设备及存储介质 | |
CN117473571B (zh) | 一种数据信息安全处理方法及系统 | |
CN111753171B (zh) | 一种恶意网站的识别方法和装置 | |
CN110602029A (zh) | 一种用于识别网络攻击的方法和系统 | |
CN109547294B (zh) | 一种基于固件分析的联网设备型号探测方法、装置 | |
US12001423B2 (en) | Method and electronic device for obtaining hierarchical data structure and processing log entries | |
CN112579476B (zh) | 一种漏洞和软件对齐的方法、装置以及存储介质 | |
Cao et al. | FTCLNet: Convolutional LSTM with Fourier transform for vulnerability detection | |
KR102318297B1 (ko) | 가짜뉴스 탐지와 주기적 웹 모니터링을 통한 범죄첩보 탐지 시스템 및 그 방법 | |
JP2022105474A (ja) | Cveエントリを使用するネットワークデバイスの脆弱性を検証するための方法 | |
Zhuang et al. | Discovering obscure looking glass sites on the web to facilitate internet measurement research | |
CN109194605B (zh) | 一种基于开源信息的可疑威胁指标主动验证方法和系统 | |
CN117807604B (zh) | 固件文件系统中开源组件cve漏洞检测方法 | |
KR20240013640A (ko) | 유해 url 탐지 방법 | |
KR102411383B1 (ko) | 사이버 위협 정보 처리 장치, 사이버 위협 정보 처리 방법 및 사이버 위협 정보 처리하는 프로그램을 저장하는 저장매체 | |
CN115237978A (zh) | 一种开源威胁情报聚合平台 | |
Sun et al. | Identify vulnerability fix commits automatically using hierarchical attention network | |
CN115587364B (zh) | 基于前后端关联性分析的固件漏洞输入点定位方法及装置 | |
Yang et al. | Information System Information Security Hidden Danger Monitoring Tool | |
CN115033883B (zh) | 一种基于策略型Fuzzer的智能合约漏洞检测方法及系统 | |
CN111930545B (zh) | Sql脚本处理方法、装置和服务器 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |