首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为所有程序启用DEP (数据执行预防)是否值得冒险?

为所有程序启用DEP (数据执行预防)是否值得冒险?
EN

Security用户
提问于 2014-02-22 23:32:35
回答 1查看 13.3K关注 0票数 18

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

在DEP设置面板(下面的屏幕截图)中,我能够为我的计算机上安装的所有程序启用此服务。

DEP真的能防止攻击(假设我已经有了一个好的AV和防火墙),还是不值得冒这种兼容性风险?

EN

回答 1

Security用户

回答已采纳

发布于 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所带来的风险:我断言您接受风险是因为不这样做。

票数 21
EN
页面原文内容由Security提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://security.stackexchange.com/questions/52072

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档