论文部分内容阅读
全局函数指针具有生命周期长,在内存中的位置易于获取等特点,使得针对全局函数指针的攻击成为了一种常见的攻击手段。这类攻击能够改变程序的执行流程,转而执行攻击者所期望的恶意代码,从而对系统安全造成严重威胁。
采用监测的方式,在目标程序运行时周期性地监测全局函数指针,能够有效地检测函数指针攻击。但是,现有的方法存在两方面的问题:(1)将指针是否指向程序中某个函数的入口地址视为合法,无法检测出将指针指向函数入口地址的攻击(本文称为函数入口攻击);(2)缺乏制定监测周期的有效机制。人工制定的周期不能反映目标程序真实的安全状况;(3)采用统一周期对所有指针进行监测,没有考虑到指针在访问频率上的差异性,随着差异性的增大,将难以平衡安全性和系统开销。
本文针对现有方法的不足,提出了一种非统一周期的函数指针监测方法,主要工作包括:(1)以指针是否指向与其类型相匹配的函数作为检测标准,用于检测函数入口攻击;(2)建立细粒度的监测周期计算模型,为监测周期的制定提供理论依据;(3)根据实际的运行状况,为不同的指针制定独立的监测周期。在此基础上,设计并实现了一个全局函数指针攻击检测工具NuGFPM,能够在应用程序运行时,对全局函数指针进行监测。实验表明,NuGFPM能够正确地检测函数入口攻击;同时,与采用统一周期的方法相比,能够在保持较高安全性的同时,有效降低系统开销,从而验证了本文方法的有效性。