数据执行保护(DEP)
数据执行保护(DEP) 是什么?
数据执行保护(DEP)DEP(又称 NX 位或 W^X)将内存页标记为不可执行,使攻击者无法运行注入到栈或堆中的 shellcode。
DEP 通常被称为 NX(No-eXecute)或 W^X(可写或可执行),它强制要求任何内存页要么可写、要么可执行,而不能两者兼具。CPU 的 NX 位会阻止从栈、堆等数据页取指执行,从而阻断经典的 shellcode 注入攻击。AMD 在 2003 年率先引入硬件 NX 位,Intel 随即跟进;Windows XP SP2 加入软件 DEP,Linux 则通过 PaX/grsecurity 提供,后并入主线内核。由于 DEP 阻止了从数据区直接执行代码,攻击者转向 return-to-libc、ROP 等代码复用技术,因此通常需将 DEP 与 ASLR、CFI、影子栈结合使用。
● 示例
- 01
栈被标记为 NX,攻击者的 shellcode 触发崩溃而非执行。
- 02
Linux 加固版本中 mmap 拒绝 PROT_WRITE | PROT_EXEC。
● 常见问题
数据执行保护(DEP) 是什么?
DEP(又称 NX 位或 W^X)将内存页标记为不可执行,使攻击者无法运行注入到栈或堆中的 shellcode。 它属于网络安全的 应用安全 分类。
数据执行保护(DEP) 是什么意思?
DEP(又称 NX 位或 W^X)将内存页标记为不可执行,使攻击者无法运行注入到栈或堆中的 shellcode。
数据执行保护(DEP) 是如何工作的?
DEP 通常被称为 NX(No-eXecute)或 W^X(可写或可执行),它强制要求任何内存页要么可写、要么可执行,而不能两者兼具。CPU 的 NX 位会阻止从栈、堆等数据页取指执行,从而阻断经典的 shellcode 注入攻击。AMD 在 2003 年率先引入硬件 NX 位,Intel 随即跟进;Windows XP SP2 加入软件 DEP,Linux 则通过 PaX/grsecurity 提供,后并入主线内核。由于 DEP 阻止了从数据区直接执行代码,攻击者转向 return-to-libc、ROP 等代码复用技术,因此通常需将 DEP 与 ASLR、CFI、影子栈结合使用。
如何防御 数据执行保护(DEP)?
针对 数据执行保护(DEP) 的防御通常结合技术控制与运营实践,详见上方完整定义。
数据执行保护(DEP) 还有哪些其他名称?
常见的别称包括: NX 位, 不可执行内存, W^X。
● 相关术语
- appsec№ 064
地址空间布局随机化(ASLR)
ASLR 在每次运行时随机化代码、栈、堆和共享库的内存地址,使攻击者无法可靠预测利用所需的目标地址。
- appsec№ 925
面向返回的编程(ROP)
ROP 是一种代码复用利用技术,通过把以 RET 结尾的短指令序列(gadget)串成链来执行任意计算,而无需注入新代码。
- appsec№ 1095
栈金丝雀
栈金丝雀是函数局部缓冲区与保存的返回地址之间放置的秘密值,用于在攻击者劫持控制流之前检测栈溢出。
- appsec№ 217
控制流完整性(CFI)
控制流完整性(CFI)将程序的间接调用和返回限制在预先计算的合法目标集合内,阻断 ROP 与 JOP 等控制流劫持利用。
- appsec№ 670
内存安全
内存安全指程序绝不读取、写入或执行未合法分配的内存,从而消除整类漏洞的属性。
- appsec№ 545
Intel CET
Intel CET(控制流强制技术)是一项 CPU 功能,结合硬件影子栈与间接分支跟踪(IBT)以阻断 ROP、JOP 和 COP 利用。
● 参见
- № 1058SMEP / SMAP