基于软件多样性的Web主动防御关键技术研究
【摘要】:Web服务随着互联网的高速发展而迅速增长,对Web服务安全的分析与研究变得日益重要。基于已知漏洞检测和打补丁的传统防御在受到攻击时显得极为被动,并且单一软件的大规模分发及部署为大规模漏洞利用提供了可能。而Web服务软件栈包含多个层面,可由不同可重用组件构成。任一层面任一软件的任一漏洞被攻击者利用成功都可能导致大量的用户敏感数据泄露,存在极大的安全风险。软件多样化可以丰富中间件的多样性,迫使攻击者逐一攻破软件,攻击成本将大大增加。为提升Web服务的安全性,本文在Web服务软件栈的多个层面选取不同的组件,组合不同的中间件,构成不同的软件栈及攻击面,辅以动态调度的机制,并通过软件多样化丰富中间件的多样性,实现了一种有效的Web服务主动防御机制。针对多样性难以评估的难题,基于信息熵和软件复杂度提出一种新的评估的方法。主要研究内容和创新点如下:1.提出了一种基于自然软件多样性的Java Web服务主动防御机制,根据Web服务体系中现有软件的多样性,主要在操作系统层和服务软件层选取不同的中间件组成不同的软件栈,辅以输入分发、输出表决、动态调度机制。通过对系统层、软件层、应用层不同类型的5个漏洞进行安全性对比测试,验证了自然软件多样性可以有效提升Java Web服务的安全性。2.提出了一种基于自动软件多样性的Web服务主动防御机制,对Web服务软件应用多样化编译方法,实现了异构变体的生成,丰富了Web服务软件的多样性,辅以输入分发、输出表决、动态调度机制。提出了逃逸概率计算模型,对协同逃逸攻击的可能性进行了分析,验证了多样性能够带来安全性增益。通过安全对比测试案例验证了自动软件多样性可以有效提升Web服务的安全性,并通过性能对比测试验证了实用性,所有编译方法性能损耗最大不超过6.2%。3.提出了一种基于信息熵与软件复杂度的软件多样性评估方法,选取了5个典型的软件复杂度属性作为评估指标,并依据信息熵理论给出了计算软件多样性的方法。通过对典型排序算法代码应用4种不同的软件多样化方法并进行综合比较评估,验证了评估方法的有效性。该评估方法对多样化软件的实际部署具有较好的参考价值。