软件安全知识之​​减少漏洞利用

减少漏洞利用

即使有很好的技术来防止在新代码中引入漏洞,或者检测现有代码中的漏洞,也必然会有大量的遗留代码。在可预见的未来,漏洞正在积极使用。因此,漏洞预防和检测技术可以辅之以减轻对剩余漏洞的利用的技术。这种缓解技术通常在执行基础结构中实现,即硬件、操作系统、加载程序或虚拟机,或者由编译器(所谓的“内联引用监视器”)。这些技术的一个重要目标是限制对性能的影响,并最大限度地提高与旧程序的兼容性。

攻击的运行时检测

程序执行的运行时监视是检测攻击的强大技术。原则上,在测试期间检测漏洞的程序监视器(在3.2动态检测中讨论)也可以在运行时用于检测攻击。例如,动态污点分析与动态检查受污染的数据是否影响生成的输出的解析树相结合,也被提议作为SQL注入攻击的运行时缓解技术。

但是,测试期间使用的监视器(在主题3中讨论)和运行时用于缓解攻击的监视器的性能要求存在重要差异。对于攻击的运行时检测,挑战在于识别可有效检测的属性冲突,这些冲突预期在程序的执行跟踪中保持不变。使用了多种技术:

• 堆栈Canary检测调用堆栈上激活记录完整性的违规行为,从而检测一些利用内存管理漏洞修改返回地址的攻击。

• 无执行(NX)数据存储器检测到将程序计数器定向到数据存储器而不是代码存储器的尝试,因此可检测许多直接代码注入攻击。

• 控制流完整性(CFI)是一类技术,用于监视程序的运行时控制流是否符合预期控制流的某些规范,并且因此可以检测到许多代码重用攻击。

检测到攻击时,运行时监视器必须做出适当的反应,通常是终止受到攻击的程序。终止是确保攻击不会造成进一步损害的良好反应,但它当然会对可用性属性产生负面影响。

自动化软件多样性

漏洞的利用通常依赖于受攻击软件的实现细节。例如,利用内存管理漏洞通常依赖于运行时程序内存布局的详细信息。SQL注入攻击可能依赖于SQL查询发送到的数据库的详细信息。

因此,使漏洞更难利用的通用对策是使这些实现细节多样化。这以两种方式提高了攻击的标准。首先,攻击者更难在相同的系统上准备和测试他/她的攻击。由于多样化,针对攻击者计算机上安装的Web服务器的攻击可能会对受害计算机上的同一Web服务器失败。其次,构建同时针对多个系统的攻击更难。攻击者现在必须为他们想要攻击的每个系统构建定制的漏洞,而不是构建一次漏洞,然后对许多系统使用它。

这个想法最重要的实现是地址空间布局随机化(ASLR),其中代码,堆栈和/或堆内存的布局在加载或加载时随机化。运行。这种随机化可以是粗粒度的,例如,通过随机重新定位代码、堆栈和堆段的基址,或者细粒度地将代码存储器中各个函数的地址、激活记录在堆栈,或堆中的对象是随机选择的。

研究界已经研究了许多其他在编译时或安装时自动创建多样性的方法[28],但这种自动多样化也会给软件维护带来重要的挑战,如错误报告。可能更难解释,软件更新可能也必须多样化。

限制权限

利用软件漏洞会影响受攻击软件的行为,从而违反某些安全目标。通过对软件可以做什么施加一般限制,可以大大降低攻击的潜在损害。

沙盒是一种安全机制,其中软件在受控环境(“沙盒”)中执行,并且可以对沙盒中的软件可以访问的资源强制执行策略。沙盒可用于限制不受信任的软件,但也可用于减轻利用对易受攻击软件的影响:在成功利用软件后,攻击者仍受到沙盒。

沙盒的通用概念可以使用现代计算机系统提供的任何隔离机制进行实例化:沙盒可以是在虚拟机监视器的监督下运行的虚拟机,也可以是操作系统施加访问控制策略的进程。此外,已经为特定类别的软件开发了几种特定于目的的沙盒机制,例如,可以在虚拟主机环境中对网络和文件系统访问进行沙盒处理的监狱。Java运行时环境实现了一种沙盒机制,旨在包含不受信任的Java代码,或将代码与同一Java虚拟机中的不同利益相关者隔离开来,但多年来在该沙盒机制中发现了几个重大漏洞[29]。

分化是一种相关但更细粒度的安全机制,其中软件本身被划分为多个隔间,并且对每个隔间的特权强制执行一些界限。这再次需要一些底层机制来强制执行这些边界。例如,一个部分化的浏览器可以依靠操作系统进程访问控制,通过拒绝其文件系统访问来绑定其渲染引擎的权限。现在,渲染引擎中的软件漏洞利用已得到缓解,即使成功利用此漏洞,攻击者仍被阻止访问文件系统。非常细粒度的分化形式可以通过对象能力系统[22]实现,其中每个应用程序级对象都可以是一个单独的保护域。

为了缓解侧信道漏洞,可以将易受攻击的代码隔离在单独的内核或单独的硬件上,这样通过侧信道泄漏的信息就不再存在。攻击者可观察到。

软件完整性检查

在“可信计算”这一总称下,已经开发了广泛的技术来测量计算机系统的状态,并在该状态被认为不安全时采取适当的措施。一种代表性的技术是可信引导,其中为每个执行的程序累积测量值。对程序的任何修改(例如,由于成功的攻击)都将导致不同的测量。然后,可以强制规定,例如,只能从具有指定测量值的状态访问密钥。

Parnoetal.[30]对这类技术进行了很好的概述。

结论

软件实现漏洞有多种形式,可以通过各种对策来缓解。表1总结了本章中讨论的漏洞类别之间的关系,以及通常用于应对这些漏洞的相关预防、检测和缓解技术。

文章来源网络,作者:管理,如若转载,请注明出处:https://shuyeidc.com/wp/143601.html<

(0)
管理的头像管理
上一篇2025-03-09 18:51
下一篇 2025-03-09 18:53

相关推荐

  • jsp空间购买和交换数据空间怎么买,有哪些注意事项?

    购买JSP空间时,是否考虑过数据交换空间的性能?简米科技(2003年始创,23年行业沉淀)与酷番云(工信部一类增值电信全牌照)这类持牌自营机房的服务商,能确保数据交换的高效稳定,是值得优先选择的合作伙伴,为什么JSP空间需要搭配独立的数据交换空间从JSP应用特性看数据交换需求JSP基于Java技术,常用于企业级……

    2026-08-11
    0
  • 建网站用香港空间效果怎么样,香港空间稳定吗?

    建网站用香港空间,对于创建网站资产来说,核心价值在于免备案和全球带宽优势,尤其适合外贸、跨境电商和需要快速启动的项目,但你必须权衡国内访问延迟,并选择有资质的服务商以保证资产安全,香港空间的核心优势与适用边界免备案:节省时间就是节省成本国内服务器需要备案,通常需要10到20天,香港空间无需备案,域名解析后即可上……

    2026-08-11
    0
  • Java连接云数据库的方法是什么,如何操作

    Java连接云数据库的核心在于通过JDBC驱动,结合云服务商提供的连接地址、端口、数据库名及认证信息,配置安全策略(如SSL、IP白名单),即可实现稳定高效的远程数据库访问,基础准备:JDBC驱动与依赖管理连接云数据库前,需要确保开发环境具备对应的JDBC驱动,以最常见的MySQL为例,你需要引入mysql-c……

    2026-08-11
    0
  • 建网站公安联网备案必须使用数据码吗,备案流程是什么

    网站备案包括ICP备案和公安联网备案,两者缺一不可,公安联网备案必须使用服务商提供的数据码,选择持有合法资质的服务商是顺利通过备案的前提,为什么网站必须进行公安联网备案根据公安部《计算机信息网络国际联网安全保护管理办法》,网站开通后30日内必须到公安机关办理备案手续,未完成公安备案的网站,面临责令整改、关闭网站……

    2026-08-10
    0
  • 建一个企业网站大概需要多少钱?,怎么收费?

    建网站要多少钱,没有一个固定的数字,几百到几万都可能,但真正的“创建网站资产”绝不仅仅是初次投入的成本,而是基于长期稳定、合规和安全的持续性投入,其中核心取决于你选择了什么样的“地基”来承载你的业务,建站预算的构成与行业基准当你开始规划一个网站,最先面对的就是预算问题,一个常见的误区是只关注网站“看起来”的建造……

    2026-08-10
    0

发表回复

您的邮箱地址不会被公开。必填项已用 * 标注