linux - 进程何时需要同时具有写入和执行权限的内存页

标签 linux security mprotect data-execution-prevention

我正在尝试了解如何隔离和保护程序。

当进程需要在内存页上使用 PROT_WRITE |PROT_EXEC 时,是否存在任何有效的情况?这可以避免吗?

这似乎与 NX 位或 W^X 或 DEP 试图实现的目标相反。

Libre office 似乎正在使用它并在加固的 Linux 上制造了很多麻烦。

https://github.com/nning/linux-pax-flags/pull/3

最佳答案

只有当您编写相当于加载程序的内容时才需要这种情况——它会使用自己的机制按需引入额外的代码——或者 JIT 编译器,或者非常 很少有其他合法情况允许应用程序修改自己的代码。即使在那里,通常做的是控制这些权限的持续时间,让页面仅在加载时可写,然后将其切换为仅可执行,这样就无法在此后踩踏。

我不明白为什么 Libre Office 会认为它需要此功能。您必须在其开发人员社区中解决这个问题。

关于linux - 进程何时需要同时具有写入和执行权限的内存页,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22093789/

相关文章:

linux - 在 centOS 上,大量 float 的字符串流序列化比序列化 block 的 4 个 pthread-ts 更快。 std::threads 在 Windows 上更快

java - 如何解决 java.security.NoSuchProviderException

c# - .net 成员(member)提供商使用什么加密算法?

java - BlazeDS : what ARE those standard security fault codes?

c++ - mprotect:如何获取导致保护违规的指令?

c - 为什么在使用 mmap 时会附加额外的字符 ^@?

linux - 为 x64 系统调用编译的 x32 ASM(使用 NASM)不起作用

linux - 使用 pipe 和 tee 命令获取在后台运行的命令的返回值

linux - 保护 : how is memory protection implemented

c - 如何编写信号处理程序来捕获 SIGSEGV?