基于动态污点跟踪的敏感信息泄露检测方法

(整期优先)网络出版时间:2022-09-27
/ 2

基于动态污点跟踪的敏感信息泄露检测方法

兰雨点

广西大学国际学院  530004

摘要:为了解决网络应用程序引起的服务器敏感信息泄露问题,提出了基于动态污点跟踪的敏感文件泄露检测方法,该方法先标记敏感文件的读写缓冲区为污点源,然后实时跟踪文件缓冲区的处理流程,监测污染源是否传播到其他内存位置,或者写入其他文件,最后检测发送缓冲区是否包含污点数据,以确定是否发生敏感文件的泄露。实验结果表明:提出的方法不仅能够监控用户指定的敏感文件,还能防止应用程序将敏感信息写入其他文件或者发送到网络上。

关键词:动态污点跟踪;敏感信息泄露;文件泄露;敏感文件;目录遍历漏洞

当前,敏感信息泄露检测技术主要有静态分析和动态分析两种方式.静态分析方面的主要代表当属CoverityInc研发的CoverltyScan系统。该系统利用人工提取的危险特征来识别软件潜在的危险漏洞,该系统在某些情况下能够有效地检测出Heartbleed漏洞。静态分析的方法不能实时监控应用程序的执行程序的状态,因此无法实时检测应用程序发生的敏感信息泄露。动态分析主要采用动态污点跟踪技术(dynamictracking,DTT)分析应用程序的潜在漏洞或者可能引起的敏感信息泄露,不仅可以辅助离线分析应用程序的漏洞,而且可以用于实时的在线检测。该方法直接面向数据,可以跟踪应用程序的数据流。动态分析技术在离线分析和在线监测应用程序安全方面得到亡泛应用。

1系统框架

在基于动态污点跟踪敏感文件泄露检测方法基础上构建了原型系统,根据各功能的实现,该原型系统大致划分成三个模块,即内存污点跟踪模块、文件污点跟踪模块和网络行为处理模块[1]。系统的整体框架如图1所示,其中包括了各个模块的主要功能模块。

内存污点跟踪模块主要负责实现内存中的污点初始化、指令级的污点传播以及提取应用程序在内存中的敏感信息,文件污点跟踪模块主要实现内存与文件之间的污点传播,网络行为处理模块主要负责网络相关的行为处理,通过插桩接收网络数据的函数,将外部网络报文标记为污点源;通过插桩发送网络数据的函数,检测应用程序发送到网络的数据,防止应用程序将敏感信息泄露到网络。

图1 感文件泄露检测系统框架

2敏感文件泄露检测方法

本系统是对文系统的改进,原系统采用二进制插装平台,实现了Lmux系统的内存敏感信息泄露检测。本系统在原有系统上增添了敏感文件检测功能,敏感文件指的是信息不能被泄露的文件,例如Llnux系统中的passwd文件和shadow文件,内存的敏感信息可能写入到文件,这些文件同样不能被泄露,检测敏感文件的泄露也具有重要意义,它是内存敏感信息泄露检测的补充,是本文所提的基于动态污点跟踪的敏感文件检测方法的重要部分。确定的敏感文件有两种:一种是由系统用户指定的敏感文件;另一种是写入了敏感数据的文件,前者须要用户在启动敏感信息泄露检测系统前指定敏感文件的文件名,后者出现在污点传播的过程中,当有敏感污点数据写入文件时,污点跟踪系统会将该文件加入敏感文件库中,检测系统将实时监控这些指定文件,以防止其被应用程序泄露到网络中,即使应用程序先通过拷贝操作泄露敏感文件也会被检测到。下面将从污点源标记、污点传播以及污点检测三方面介绍本文的敏感文件泄露检测方法,其流程如图2所示:


图2感文件泄露检测方法流程

污点源标记是将从敏感文件读取的缓冲区标记为污点源,可以实时地跟踪文件内容的处理流程,通过文件的z—nodenumber(z为节点编号)判断当前处理的文件是否为敏感文件,当用户启动检测系统监控目标应用程序时,检测系统会从离线的敏感文件库中读取用户指定的敏感文件以及之前保存的敏感文件的信息,建立敏感文件的z—nodenumber集合,当应用程序以文件名为参数打开文件或者以文件描述符为参数读取文件时,可以根据文件名或者文件描述符获取文件的状态信息,其中包括文件的z-nodenumber,从而查看文件是否在敏感文件集合中,当Pm启动时,文件污点跟踪模块加载敏感文件库中离线存储的敏感文件z—nodenumber和用户指定的敏感文件z—nodenumber到集合tainted—modes,

由于用户指定的是敏感文件的文件名,因此须要根据文件名获取文件的z-nodenumber,利用

污点传播除了内存中指令级的污点传播之外,还须要考虑污点写入文件时的情况,解决文件间污点传播的方法是,当应用程序将包含有污点的数据写入到文件时,该文件的z-nodenumber被添加到污点文件集合中,用以标记该文件为污点文件;当读取某个文件时,根据该文件的z—nodenumber是否在污点文件集合中来判断它是否为污点文件,若为污点文件,则将读人的数据标记为污点源,用于内存的污点传播。当应用程序写文件时,查看写缓冲区中是否有污点数据,若有污点数据,则将该文件标记为污点文件,将该文件的z—nodenumber添加到tamted—modes集合中,当应用程序读文件时,首先在tamted—modes集合中查看该文件的z—nodenumber,若该文件为敏感文件,则标记读缓冲区中的数据为敏感文件污点源,根据打开的文件描述符,使用fstat函数获得该文件的2一nodenumber,在tainted—inodes中查找判断该文件是否为敏感文件.由于write和read函数也可以操作套接字文件,因此在文件间污点传播时,须要根据文件描述符判断文件的类型,若当前文件描述符是套接字,则调用网络行为处理模块中相应的处理函数,判断是否发生了污点泄露。

3结论

提出的基于动态污点跟踪的敏感文件泄露检测方法,在测试Smbd默认配置目录遍历漏洞时,够有效地监控系统敏感文件和用户指定的敏感文件,检测Smbd的泄露行为;同时也表明离线记录文件污点信息的方法可以弥补污点无法离开内存传播的不足,可以有效地实现文件间的污点传播,实验结果也表明所提方法和检测系统还存在些许不足之处,文件敏感文件泄露检测方面[2]。首先须要更加细粒度地记录污点在文件内容中的偏移位置,其次须要细化文件污点信息存储的粒度;动态污点跟踪方面,动态污点跟踪的效率和稳定性还须进--步提高。

参考文献

[1] 黄锐聪. 面向安卓平台的多层次隐私保护系统的设计与实现[D]. 江苏:南京航空航天大学,2020.

[2] 王代斌. 面向安卓平台的权限增强机制研究[D]. 湖北:华中科技大学,2017. DOI:10.7666/d.D01313642.