版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
自动化软件供应链污染检测技术
0研究问题与文献综述近年来,磺软件供应链(csc)安全问题频发。虽然它给用户的隐私和财产损失带来了巨大的损失,但仍对软件供应链的安全问题提出了新的考验和挑战。有别于传统的针对软件自身程序漏洞进行的攻击,软件供应链攻击者侧重利用软件供应链上的安全漏洞,在合法软件的开发编译、分发交付以及安装使用等环节中进行劫持或篡改,借助用户和软件供应商之间的信任关系,在合法软件的外衣下,突破安全产品的防线,获得用户的信任,悄然实施攻击目前关于软件供应链安全的研究刚刚起步,文献文献自动化程序逆向分析技术一直是信息安全领域研究的热点和重点问题之一,已有大量工作对程序逆向分析和恶意代码检测技术进行了研究。在基础程序分析方法方面,文献本文主要关注针对二进制程序的软件供应链的污染检测技术,在软件供应链下游发现供应链中存在的污染问题。本文主要工作及贡献包括:1)对软件供应链污染检测问题进行了深入剖析和阐述;2)指出了软件供应链污染检测问题与传统恶意程序分析和检测问题的联系和区别;3)介绍了目前使用的程序逆向分析方法及其在软件供应链污染检测中的应用;4)展望了软件供应链污染检测中亟待解决的问题及若干可行并值得进一步研究的课题。针对上述问题,本文详细分析了22个软件供应链污染事件;对97篇高水平论文进行了分析和介绍,文献主要来自中文核心期刊以及中国计算机学会(ChinaComputerFederation,CCF)A类会议、期刊;内容涵盖了程序分析技术以及软件供应链污染研究前沿研究。论文搜索关键词包括(中英文的)程序分析、逆向工程、静态分析、动态分析、符号执行、污点分析、软件供应链、软件供应链污染等。绝大多数论文下载自谷歌学术、知网、百度学术等知名学术搜索平台,内容涵盖了信息学科下主流数据库,包括国际计算机协会(AssociationforComputingMachinery,ACM)、电气和电子工程师协会(InstituteofElectricalandElectronicsEngineers,IEEE)、爱思唯尔、斯普林格等。1软件供应链污染检测1.1软件供应链污染检测软件供应链是指软件从软件供应商到达用户手中并被用户使用的整个过程中相关环节的连接,从软件设计开始,到代码编写与软件生成,再到软件分发与用户下载,并最终由用户使用的一个软件供应商与软件用户之间,紧密围绕软件,由开发环节(上游)、交付环节(中游)和使用环节(下游)三大环节所组成的链状结构主动防御和被动检测是保障软件安全的两种重要手段。其中,主动防御侧重于阻断攻击者的攻击,主要包括针对软件开发商、开源软件管理平台、软件发布平台和用户终端的安全防护,旨在从源头上遏制恶意代码的植入和扩散。文献被动检测是假定可能有攻击存在,在生成的软件中检测是否存在污染。软件供应链污染检测属于被动检测,主要包括对开源代码、开源软件包、软件安装包和软件可执行程序的安全性检测。这其中,安全性检测又包括恶意代码检测和漏洞挖掘,检测对象包括程序源代码和程序可执行文件。程序逆向分析技术是安全性检测的基础,文献1.2污染检测目标软件供应链下游的污染检测是针对软件的可执行文件或提供的服务进行的污染检测。检测目标是表1中“污染位置”列所示的软件形态。由于软件供应链污染检测涵盖内容过于繁杂,涉及不同编程语言、编译环境、运行环境等,后文主要针对传统的C/C++语言编写、编译得到的程序进行阐述。1.2.1软件供应链下游的污染检测软件供应链上游的软件厂商和中游的分发平台可能受到成本、效率和利润等因素的制约,不可避免地遗留一些安全漏洞。这些漏洞可能被攻击者利用,导致软件供应链的污染,因此软件供应链的污染源很难被完全消除,仍需要在软件发布之后,即在软件供应链下游对发行的软件进行污染检测。同时,在软件供应链下游的污染检测能够发现上游、中游的所有污染。从表1中很容易看出,软件供应链污染的代码最终必须要在下游用户端执行才能发挥其效用,因此,软件供应链下游的污染检测能够极大弥补主动防御的不足,对软件进行更加全面的扫描。再者,软件供应链下游的软件样本比较容易获取。研究人员可以更加容易地获取软件样本进行研究。1.2.2软件供应链污染检测更为复杂软件供应链下游的软件供应链污染检测问题与恶意代码检测问题没有本质区别,都是对程序是否恶意的判定。检测流程是,首先搜集软件特征,之后对特征进行结果判定。目前主流的人工智能(ArtificialIntelligence,AI)技术完全可以实现高精度的结果判定,但是,其前提条件是要能够搜集到完整的或者关键的软件特征。如果无法搜集到污染代码或污染行为,即使是最先进的AI技术也无法作出准确的判断。然而,在搜集软件特征方面,软件供应链污染检测比传统的恶意代码检测更加复杂,表现在如下几方面。首先,软件供应链下游的污染检测比传统的恶意代码更为隐蔽,被植入的代码常与正常程序代码混淆在一起,当软件供应链上游被污染时,恶意代码还可能带有合法的软件厂商的签名。由于多数安全防护软件使用白名单机制过滤掉可信任厂商发布的软件,因此其中的污染代码比传统恶意代码更难被发现。其次,很多被污染的软件会提示用户在使用过程中关闭安全防护软件从而实施攻击,导致程序难以被安全防护软件集成的云查杀系统发现,导致被污染软件可以长期在网络上传播。再次,软件供应链上的安全检测目标不仅包括软件的可执行程序,还包括软件的安装程序,然而软件的安装过程往往需要借助用户交互来完成;同时,很多软件厂商使用自定义的打包工具发布软件安装包,且不支持静默安装,对于大量存在的此类安装包,现有方法很难实现自动化的用户交互并完成软件安装过程,因此导致其中的污染代码难以被发现。最后,攻击者还可能在软件中植入恶意代码,这些代码可能隐藏在软件程序的任何角落中,只有当用户通过用户界面(UserInterface,UI)使用软件的特定功能,这些代码才能被触发。此时,这些恶意代码极难被分析人员发现。1.2.3程序逆向分析技术传统的恶意代码分析技术使用的特征主要分为语法特征和语义特征两大类。程序的语法特征需要通过解析程序的二进制执行,并转换为高级语言(反汇编、反编译)。程序的语义特征主要包括应用程序接口(ApplicationProgrammingInterface,API)调用和执行过程中的系统状态改变情况。然而由于代码混淆技术的广泛使用,恶意代码经常主动识别当前的运行环境,或者设置触发条件来执行恶意行为。传统的单纯依靠被动监控程序执行的方法很难搜集到恶意代码的真实语义,所以,对于带有反分析技术的恶意代码,无论搜集其语法特征还是语义特征,都需要用到程序逆向分析技术。又由于软件供应链下游的污染检测目标主要为可执行程序,因此,需要用到程序逆向分析技术对其进行分析。后文将首先介绍当前程序逆向分析技术在软件供应链下游的污染检测中的应用,并分析当前技术在解决软件供应链污染检测问题时仍存在的具体问题,最后提出了若干可行的解决思路。2)动态分析技术现有的程序分析方法主要包括静态分析、动态分析、符号执行和污点分析。静态分析和动态分析是检测代码安全的基本方法,两者的区别在于获取信息的方式不同:静态分析方法的数据源是可执行文件中的数据,动态分析的数据源是动态执行过程中获取的运行时数据。符号执行和污点分析技术是应用最广泛的二进制程序分析技术,静态分析方法和动态分析方法均可以实现这两种技术。本文总结了近十年来国内外发生的百余起软件供应链安全事件,标注了安全人员在分析事件样本时使用的程序分析方法,部分结果如表2所示。传统的静态分析方法在目前软件供应链污染检测中起到了非常重要的作用,分析人员在事件的分析过程中无一例外地使用了交互式反汇编器专业版(InteractiveDisassemblerProfessional,IDAPro)2.1不同平台下的反汇编语言特点静态分析以静态反汇编静态分析的最大优势是能够对整个程序的指令进行全面的分析。表2中所示几乎所有软件供应链安全分析工作都使用了静态反汇编或静态分析工具。这些静态分析工具均除提供反汇编功能外,还提供了基于反汇编指令的进一步分析结果,包括可执行文件结构解析、控制流分析可执行文件结构包含了大量有利于逆向分析的信息,不同平台的可执行文件结构的不同,以WindowsPE结构为例,其中的段属性信息指示了数据的类型,反汇编方案只需要针对可执行属性的数据进行分析;导入表信息指示了程序使用的动态链接库及动态链接函数。控制流分析主要是识别函数中的基本块以及基本块间的流转关系。数据流分析主要识别指令操作数间的依赖关系,一般基于控制流分析实现。数据依赖分析是现在应用最广泛的数据流分析方法,程序切片库函数识别是静态分析方法优势的重要体现。静态链接库函数体嵌入在程序代码中,由于二进制程序中没有符号表信息,静态链接库函数需要用特定的方式进行识别。目前通用的方法是通过对已知静态链接库函数建模得到唯一的特征,并在程序分析时分析各个库函数,查看其特征是否与已知静态链接库函数的特征一致。例如在CCleaner事件反编译是将汇编代码翻译成高级语言的过程,目前主流反编译工作需识别不同的处理器架构,仅支持一部分架构的汇编语言。高级语言能够帮助分析人员更好地理解程序逻辑,极大地提高了人工分析样本的效率;但是,恶意程序常在运行过程中动态解密、释放指令或数据2.2当前主流动态分析平台的实践动态分析以动态跟踪技术为核心。在动态跟踪过程中获取原始数据,之后再利用这些数据进行后续分析。动态跟踪可以获得不同语法语义级别的数据,跟踪过程中可以按照指令、基本块、函数等不同粒度搜集程序本身的语法信息,也可以在程序运行过程中搜集系统信息,根据系统状态的变化来表征程序行为;或在运行时搜集系统调用信息,用来刻画程序行为;或者监控内存权限变化,例如先写后执行(execute-after-write)目前主流的动态分析平台主要采用三种方式构建运行环境。第一种是基于QEMU第二种方式是使用代码插桩的方式进行动态跟踪,包括动态插桩和静态插桩两种方式。动态代码插桩是在程序运行过程中插入分析代码。IntelPin第三种方式是使用硬件特性记录程序的执行序列。典型工作是IntelProcessorTracing(PT)绝大多数软件供应链安全威胁检测都需要借助动态分析方法来完成,表2中标注了各个事件的分析过程中具体涉及的动态分析方法,包括了在动态执行过程中对程序本身以及各种系统资源,如系统资源、服务、驱动、流量信息等的监控。此外,表2中标注的“动态字符串提取”和“监控代码动态释放”是指污染代码会在动态执行过程中从数据段解密出敏感API名称字符串和敏感操作指令,从而对抗静态分析;“溯源分析”和“系统日志分析”是指利用攻击者在系统或软件中留下的痕迹定位污点源的过程,常用于软件供应链污染源头定位工作。动态分析方法的瓶颈在于分析覆盖率有限,很容易受到恶意程序作者的恶意干扰。例如“隐魂”木马使用多种反分析技术,防止分析系统搜集到程序恶意行为。对此,研究者们提出了路径探索2.3基于路径探索的执行策略动态符号执行又称混合符号执行(concolicexecution)。其核心思想是在程序执行过程中搜集路径约束程序执行路径的路径约束可以在程序执行过程中获取,如S2E符号执行技术依靠路径探索策略选择下一个需要分析的路径及需要求解的路径约束。根据不同应用,符号执行引擎会选择不同的路径探索策略,例如:在恶意程序分析和模糊测试应用中,广度优先和深度优先策略应用最为广泛;而在漏洞挖掘应用中,敏感操作优先策略应用更多。具体应用可以定义自己的敏感操作规则,从而使能够引导控制流至敏感操作的路径被优先分析。例如S2E提出了一种面向符号化数据(data-basedselection)的路径探索策略,优先执行对污点进行操作的路径。由于符号执行会造成较大的时间开销,文献符号执行的两大难题是路径空间爆炸和约束求解,程序切片符号执行是实现路径探索、提高动态分析覆盖率的主要技术。表2中标注了符号执行的事件均需要借助路径探索技术才能搜集到表达程序真实意图的执行路径。在现有软件供应链污染分析报告中,绝大多数还依靠人工分析实现对程序执行路径的探索。Sun等2.4动态点火分析动态污点分析的主要流程是选择程序的某些输入标记为污点,在程序运行过程中根据污点传播规则标记数据依赖于污点的内存或寄存器。如果从程序中的敏感操作涉及到的数据被标记为污点,则需要对该操作进行进一步分析。污点分析的一般步骤如下:首先,污点分析系统需要根据实际需求确定污染源。一般以程序外部输入作为污点源,包括程序命令行输入、网络输入、I/O、API返回值、系统状态(如注册表、进程控制块、线程控制块)等。文献动态污点分析系统需要克服污点传播过程中可能发生的欠污染和过污染问题,文献随着技术的发展,污点分析和符号执行工作的界限越来越模糊,因为符号执行中对路径约束的搜集和求解在本质上也是数据依赖分析,并且例如上述Yadegari的几个工作,利用污点分析帮助符号执行技术完成路径约束的搜集。此外,符号执行和污点分析都可以通过前向或后向的方式实现。文献污点分析的思想在软件供应链污染检测中使用非常广泛,特别是在存在信息泄露的事件中。将敏感数据标注为污点源,如果污点数据被网络发送,则说明发生了信息泄露。表2中标注了污点分析的事件多数发生了信息泄露。同样的,目前类似问题仍多数由人工检测完成。2.5实现高水平期刊、会议的分析平台现有二进制程序逆向分析工作或在上述某一方面进行了深入研究,或设计实现统一的分析平台,提供各种技术的调用接口。表3中列举了10余个经典的或近年来发表在高水平期刊、会议的二进制程序分析工具,总结了这些工作的适用场景、测试数据集以及对比方法。研究人员可以有针对性地在这些平台上进行软件供应链污染检测工作研究。3仍存在的问题1.2.2节对软件供应链下游的污染检测问题进行了分析,本章聚焦于程序逆向分析方法,分析现有技术在解决软件供应链下游的污染检测问题中仍存在的问题及挑战。3.1代码或行为的检测在对程序的逆向分析时,准确识别程序中所有代码或行为至关重要,只有在获取程序中所有代码的基础上,才能进一步实现恶意代码检测工作;然而现有技术在这方面仍存在一些局限性。3.1.1传统的逆向分析技术的局限性首先,文献此外,文献其次,虽然符号执行、路径探索技术能够提高动态分析的覆盖率,恶意程序依然可以通过隐藏路径约束3.1.2静态间接控制流转移识别为缓解上述问题,研究人员提出了大量缓解技术,以提高程序逆向分析技术的能力;但是这些技术仍然不能完全解决传统程序逆向分析技术在分析混淆代码时的问题。首先,动静结合的分析方法能够从很大程度上克服动态分析覆盖率不足的缺点。传统的基于特征码的恶意代码检测、基于熵的分析方法以及静态间接控制流转移识别能够辅助恶意代码检测或指导动态分析朝着目标区域进行动态执行和分析。其中,基于特征码的方法能够从程序代码中找出包含恶意行为特征的字节序列,从而快速完成已知恶意代码的扫描;基于熵的方法能够帮助分析系统标注可能存在加壳行为的代码片段,动态分析应该尽量朝着能够加载或者执行这些数据或代码的方向运行;间接控制流转移指令指示了静态分析的分析盲区,动态分析方法需要对这些指令的位置作定向分析,以确定控制流转移目标,弥补静态分析的不足。文献在API识别方面,文献在控制流图恢复方面,文献然而这些工作也都各自存在一些局限,只有恶意代码满足其提出的模型时才能取得较高的准确性。例如文献综上所述,现有的程序逆向分析技术在对混淆代码的检测中仍存在诸多局限,恶意程序作者可以利用这些局限对抗分析,造成分析系统的漏报。特别是在软件供应链污染场景下,被测样本规模远大于恶意程序,给程序逆向分析技术带来了更多挑战。3.2程序模拟分析系统传统的恶意代码检测方案多仅针对单一可执行文件进行分析,导致使用程序分析方法进行软件供应链下游的污染检测时存在诸多挑战。首先,从表1可知,软件供应链污染的目标包括软件安装包和软件可执行程序,但是大型软件的发布形式十分多样。为了检测可能存在的捆绑安装、内置后门等问题,分析系统需要能够处理任何一种软件发布形式,并从中提取相应的程序进行分析。例如,大多数官方的Windows软件发布为一个独立的安装程序,需先运行安装程序,将软件运行所需要的所有文件释放到指定目录,并在系统中注册相关软件信息,才能使用该软件。同时一些软件也会以绿色压缩版的形式发布,即将所有程序运行所需文件打包在一个压缩包中,用户只需解压这些文件即可使用软件。这种绿色免安装的方式极易被攻击,但是由于使用方便无需安装,仍有大量用户使用。分析系统需要能够自动执行或解压缩安装包,成功释放程序可执行文件,并监控整个安装和程序执行过程。目前尚未有工作能够实现自动、稳定的大规模软件安装方法来获取程序分析的二进制文件。第二,商用软件往往包含多个模块、多个组件以及多种语言编写的代码,需要提出高效和统一的分析框架用于深入程序分析。此外,市场上的防病毒软件多使用白名单机制,如果程序的签名在白名单中则不再对其进行分析,而在软件供应链开发环节中植入的恶意代码,在下游程序签名发布之后往往会逃避防病毒软件的检测。由于无法保证软件供应链上游代码的安全性,传统的基于黑白名单的启发式分析策略在软件供应链安全研究中并不适用,需要对整个程序中所有的代码深入分析。第三,商用软件多包含多种程序输入,例如配置文件、UI交互、网络通信、与操作系统交互等。这将导致动态分析方法将很难自动发现并提供有效的程序输入,从而引起与程序输入相关的代码无法正常执行,最终造成动态分析方法的分析覆盖率很难提升,进而导致恶意代码检测或漏洞挖掘方法出现漏报。同时,异步处理机制是常用的编程技术,而尚未有静态分析方法工作能够做到自动理解各种异步编程模型,并准确还原程序逻辑或控制流转移关系。第四,现有工作多处于语法分析层面,鲜有工作能够自动准确理解程序语义,而程序语义理解在恶意代码检测和软件逻辑漏洞检测方面非常重要。基于机器学习和AI技术的恶意代码分析和检测工作能够部分缓解语义理解补充的问题,但是该方法依赖大量样本,而除C/C++语言外,其他编程语言的恶意代码样本量均达不到模型训练要求。在漏洞挖掘领域,针对逻辑漏洞的挖掘大多依靠人工完成,尚未有可靠的自动化方法完成该任务。在具有多模块的大型软件中,逻辑漏洞的挖掘变得更加困难,目前没有较为理想的解
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 26年晚期PFS获益评估实操指南
- 医学26年:CAR-T治疗后随访管理 查房课件
- 评估指南教育过程阅读分享
- 急诊患者健康教育
- 班队活动课教案设计规范
- 口才表演动态课件
- 公众号版头设计规范
- 2026成人癌性疼痛护理团标解读
- 小班劳动教育案例
- 交房流程课件
- 2025年7月陕西省普通高中学业水平合格性考试语文试题及答案
- 工商管理硕士就业前景分析
- 2025年申论国考真题试卷及答案
- 工业园区规划方案策划
- 高强度焊接质量检验制度
- GB/T 46410-2025风险管理风险预警
- 本科合格评估学院汇报
- 修眉毛课件教学课件
- 实施指南(2025)《JB-T2599-2012铅酸蓄电池名称、型号编制与命名办法》
- 狂犬病的护理课件
- 小学生脊柱健康知识讲座
评论
0/150
提交评论