基于负选择算法的固件漏洞关联检测文献综述
2020-05-01 08:50:35
随着物联网设备的普及和物联网技术的成熟,智能设备在日常生活中得到了越来越广泛的使用。手机、打印机、家用路由器、智能摄像头、网络摄像机、PLC都是常见的智能终端联网设备,它们的出现极大地方便了人们的生活。但网络和设备本身具有的安全问题也随着智能设备的普及日益突出。智能终端联网设备更多的是采用嵌入式固件系统,系统和设备本身在开发过程中存在着研产分离的问题,厂商普遍采用客制化(即第三方定制的方式)来进行固件的开发。因此,同一个固件漏洞问题大范围波及其他设备的概率大大增加。据统计,2012 年开始,嵌入式设备漏洞数量呈快速激增态势。因此,及早发现嵌入式设备漏洞并及时补救,已经是刻不容缓的工作。
目前,国内外安全研究人员(尤其是硬件安全研究人员)对固件漏洞的检测、处理、修复等问题进行了大量的研究,也提出了大量的固件漏洞检测方法,主要有静态漏洞检测方法和动态漏洞检测方法两种。静态检测方法是对固件的源代码进行分析,从而找出其中可能存在的漏洞和弱点;而动态检测方法就是在不改变源代码甚至是二进制代码的情况下,通过修改固件的执行环境和情况进行漏洞检测的方法。无论是静态漏洞检测法还是动态漏洞检测法,都需要专业的安全研究人员跟随系统进行调试,这无疑大大增加了安全研究人员和开发人员的工作量。基于此,如果能够利用某种机制,使程序自动读取固件的二进制文件流,自动对其中可能出现的漏洞进行检测,则可以大大减少重复劳动,降低开发和应用过程中的工作量。
负选择算法是一种仿生智能算法,1994年由美国新墨西哥大学的Forrest等人提出。其模仿人体的淋巴系统机制,将人工免疫系统(Artificial ImmuneSystem)AIS应用到IDS的研究,从而提出负选择思想用于计算机病毒检测的思路。随着近几十年来智能算法的不断发展,负选择算法理论及相关内容也得到了完善,许多学者围绕免疫原理在入侵检测领域中的应用问题做了大量研究,由此衍生了许多基于负选择算法的使用案例。由于适应性强,负选择算法被广泛应用于许多领域,如入侵检测、异常诊断、模式识别、数据挖掘、机器学习和故障诊断等。
利用传统的数据挖掘方法进行固件的漏洞检测过程中,需要大量的正负样本进行模型的训练,而由于基选集程序漏洞的特殊性,程序是否存在漏洞的正负样本往往需要人工进行辨别筛选。同时,受限于人力工作效率的限制,人工收集的漏洞样本数量较少,如果采用通常的算法则需要付出大量的时间采集足够多的数据样本,这样导致研究人员工作量加大,工作时间增长。而利用人工免疫算法(如负选择算法)进行漏洞检测可以在样本量少的情况下进行,这样就很好的解决了漏洞检测方面样本量小的问题,使得漏洞检测更加高效、便捷,降低工作量。
综合固件漏洞检测工作的特点和负选择算法的优点,开发一套基于负选择算法的固件漏洞检测程序。利用负选择算法高效、稳定、准确、快速的特点,对已知的固件进行漏洞的快速检测,提高漏洞检测工作的效率和准确性,降低工作成本。
2. 研究的基本内容与方案
{title}
基本内容:结合负选择算法的相关知识,针对常见固件中存在的一些如堆栈溢出、字符串格式化等漏洞,设计一套能够利用已知固件漏洞的特征检测给定的第三方固件是否存在类似漏洞的程序。负选择算法的实现需要基于部分已知的漏洞进行样本集的训练和模拟,搜集相关资料和数据并利用数据调整优化参数,编制出能够快速识别漏洞特征的程序。
目标:对固件漏洞的检测机制进行研究,比较目前常见的固件漏洞检测方法的优劣,利用实验找出较为合适的固件漏洞检测方法。尝试将固件漏洞检测方法和负选择算法进行结合,开发出一套能针对指定固件中存在的0day漏洞进行快速检测的程序。通过实际的固件漏洞检测对程序性能、效率、准确度等参数进行评价。
技术方案:利用IDA等反编译工具提取常见的固件特征,找出固件中常见的漏洞函数的二进制特征、结构特征、指令序列特征等特征性数据,研究并探索相关的数据特点,获取常见的固件漏洞特征函数的样本集合,为程序的编写和算法的训练构建数据源集合。对得到的固件漏洞样本数据进行分析和处理,构建相应标准的数据使之能够用于负选择算法的模型训练中并最终针对某一固件漏洞训练相应的模型。利用python语言,结合固件漏洞的相关特征数据编制基于负选择算法的能够对固件漏洞特征函数的样本进行识别的程序,并对参数进行训练和调优,使其能够在较高的正确率和较低的误报率下对固件漏洞中的特征函数进行识别。对最终得到的检测程序利用样本固件漏洞进行评价和分析,评估程序的效率和准确度。