随着技术的发展,软件的应用越来越广泛,软件的功能也越来越复杂,而市场竞争等因素造成软件的开发周期越来越短,问题也将越来越多。如何对软件产品进行安全性分析,发现相关问题,剖析安全问题机理,进而研发设计相应的防御手段,是软件安全性分析的主要目标。
典型的安全问题
当前软件安全问题可粗略分为3类
恶意软件
恶意软件就是包含恶意功能的软件,随着信息技术的不断发展,恶意软件也在不断地升级,从最早的单机传播到网络传播再到协同攻击阶段,危害的程度与范围越来越大,而且极其隐蔽很难被发现。
近些年曝光的恶意软件,越来越多的是有组织研发,采用高技术手段,具有很强的渗透能力和生存能力,比如说RSA公司遭受SecurID窃取攻击和Hacking Team遭受APT攻击,这些都是非常闻名的公司,却依然遭到了攻击,并造成了严重的损失,所以说处理软件安全问题迫在眉睫。
软件漏洞
软件漏洞是指由于程序设计实现错误造成的软件问题,攻击者利用软件漏洞往往可以造成程序崩溃,获取敏感数据或执行任意代码。
经典的JPEG漏洞就是利用数据复制时出现的越界读写,经过一系列精心的构造,诱导程序执行shellcode。
软件后门
软件后门是由软件开发人员有意设计,刻意对用户隐瞒一些功能,往往这些功能用于软件产品应用之后的一些特殊目的。一些软件开发人员将软件后门设计为软件漏洞的形式,采取这种方法更难被发现,容易操作执行并且还很难被取证。
软件安全性分析的目标
软件安全性分析一般要回答以下三方面的问题
(1)存在问题
目标软件中是否存在恶意功能,是否存在漏洞或者后门。
(2)机理问题
确定问题存在后,进一步分析其具体是如何实现的或者是什么原因造成的。
(3)对策问题
根据相关机理分析结果,提出相应的防御对策。
现在许多软件常常都无法获得源代码,而在这种情况下进行软件的逆向分析就有几大难点:对于指令代码的理解,关联关系的抽取和复杂逻辑的解析等。