关于网络漏洞的动态污点分析

     2006年首次提出漏洞传播分析技术。一开始,该技术证明了网站运行过程中澄清数据流的传输过程。污点传播技术主要分为静态和动态污点传播技术。污点分析技术作为静态污点传播的分析技术,是对一些特殊数据结构的数据进行静态污点标记,然后跟踪这些标记,记录标记在指令控制过程中的状态,直到污点数据不再传播。动态污点分析技术是一种动态运行和数据流分析的方法。通过在代码程序中输入不可信的数据流,跟踪数据流,发现代码程序中的不安全区域和行为。

outputo-20211122-102834-084-cgqw.png

近年来,我国对动态污点分析技术的研究很多,包括:基于虚拟化动态污点分析和基于类型的动态污点分析;基于AOP和动态污点分析的SQL注入行为检测方法解决了传统SQL检测方法执行效率低、检测精度低的缺点。在提出动态污点分析技术后,国外Newsome对该技术进行了分析和利用,成功解决了攻击探测问题。Fireeye设计制造了网络APT漏洞攻击分析沙箱,研究利用动态污点分析技术,检测软件在分析协议或文件过程中是否受到缓冲区溢出的漏洞攻击。通常,动态污点分析主要分为以下步骤:污点源标记、污点传播和污点检查。

污点标记:将来自非内部,网络的外部数据作为source源数据标记为污点源数据。通常采用影子内存技术标记污点源数据,影子内存会产生污点源索引,与污点源数据对应。污点传播:对于标记为污点的数据,如果在程序执行过程中复制和操作污点数据,其他内存数据将成为不可信的数据,这些数据将被标记为污染数据。污点检查:污点标记和传播后,在执行程序时需要检查污点数据的合法性。通常,非法操作包括:缓冲区溢出、地址跳转(CALL、JMP、RET等指令)、格式化字符串等。如果检测到非法操作,程序将终止并报告漏洞。

分享: