Linux 内核 W^X 安全机制深度实战:从 NX bit 到内存保护与利用缓解

在 modern exploit 对抗中,"No-eXecute"(NX)技术是最坚固的防线之一。Linux 内核的 W^X(Write XOR Execute)策略——内存页要么可写要么可执行,不可同时具备二者——构筑了防止代码注入攻击的核心屏障。本文将从硬件 NX bit 出发,穿越 x86 PAE/XD、ARM64 PXN/PAN、内核页表管理、vm_flags 控制到生产环境调优,全面拆解 W^X 的实现机制与工程实践。

一、硬件基石:NX/XD bit 与分页架构

1.1 x86 的 Execute Disable Bit

AMD 在 2003 年率先引入 NX(No-eXecute)bit,Intel 随后推出等效的 XD(eXecute Disable)bit。在 x86-64 长模式下,NX 位于 page table entry(PTE)的第 63 位(即最高位)。当 NX=1 时,该页不可执行;当 NX=0 时允许执行。

// arch/x86/include/asm/pgtable.h
#define _PAGE_BIT_NX         63  // No-Execute bit (AMD) / eXecute Disable (Intel)

#define _PAGE_PRESENT        (_AT(pteval_t, 1)                        
                    
点赞(0) 打赏

评论列表 共有 0 条评论

暂无评论
立即
投稿

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部