Windows中的数据执行预防被认为是通过“监视您的程序以确保它们安全地使用计算机内存”来抵御恶意代码的防线。然而,我也知道,并不是所有的程序都是为DEP而设的,如果一个“安全”应用程序被阻塞并被认为是不安全的,就会导致崩溃和其他问题。
在DEP设置面板(下面的屏幕截图)中,我能够为我的计算机上安装的所有程序启用此服务。

DEP真的能防止攻击(假设我已经有了一个好的AV和防火墙),还是不值得冒这种兼容性风险?
发布于 2014-02-23 00:56:21
要了解DEP的功能,首先需要了解内存是如何在进程中布局的。关键的概念是代码( CPU可以执行的指令)和数据(堆栈和对象)存在于单独的内存区域。用户输入、文件、程序数据等都生活在内存的数据区域。
DEP允许通过将内存中的代码页标记为“可执行文件”来强制执行这种分离。通过类似地不标记数据页,处理器现在可以识别内存区域何时用于CPU指令,何时不是。作为一种保护,CPU将出现故障,允许操作系统在DEP启用时终止进程,并且处理器发现自己试图从数据内存运行代码。
总之,这意味着用户不能简单地输入包含可执行代码的数据,并且通过漏洞指向处理器指向该数据的指令指针,并开始执行代码,就像在广泛采用DEP之前可能的那样。
作为一种安全机制,这是一种减少在系统上运行任意/恶意代码的攻击的策略。然而,现代的功绩是典型的打败DEP的能力。
我从来没有遇到过一个不能处理DEP的程序,而且自从Windows SP2首次提供它以来,我就启用了它。这并不是说没有程序可能会被它破坏,但是现代程序,即使是非常复杂的程序,如网页浏览器,也可以在DEP启用时运行。
鉴于对DEP的硬件支持(如上面的屏幕截图所示)和对DEP的广泛现代应用程序支持(以及更高级的缓解措施,如ASLR),您不应该注意到启用DEP后的性能差异,并且在禁用DEP之后还提供了一些额外的安全性。考虑到这一点,我认为只为系统服务运行DEP是没有意义的:为所有事物运行DEP没有坏处。如果您遇到由于DEP而崩溃的东西,您可以将这个单独的程序添加到黑名单中,尽管我也会考虑找到一个更最新的产品,而且我绝对不会允许一个面向Internet的应用程序在没有启用DEP (和所有其他可用的漏洞缓解措施)的情况下运行。我不知道在全球范围内启用DEP所带来的风险:我断言您接受风险是因为不这样做。
https://security.stackexchange.com/questions/52072
复制相似问题