gpt4 book ai didi

linux - 为什么linux进程地址空间的栈权限是执行的?

转载 作者:太空狗 更新时间:2023-10-29 11:23:27 26 4
gpt4 key购买 nike

linux内核设置进程的statck权限为可执行。正如我们所知,堆栈通常包含数据而不是指令,所以我想知道 kenel 这样做的原因。特别是缓冲区溢出攻击,一般会将恶意代码存储在堆栈中,并在成功利用系统后执行。如果stack的权限不是executive,应该可以避免攻击,对吗?所以在我看来,将堆栈的权限设置为执行权限是有害的,即使它面临缓冲区溢出攻击的风险,linux 这样做的真正目的是什么?

最佳答案

Linux 内核确实在具有它的 CPU 上支持 NX 位。自 2004 年以来一直提供支持。

一些 发行版 附带的内核不启用使用 NX 所需的选项,但这更多是因为设置这些选项(特别是使用 PAE模式)将导致操作系统无法在某些硬件上启动。

这就是为什么我倾向于重新编译我的内核而不是采用发行版中提供的默认值。这样一来,我确定它针对我的硬件进行了优化,而不仅仅是一般情况。

关于linux - 为什么linux进程地址空间的栈权限是执行的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15424140/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com