报价https://manpages.debian.org/buster/manpages/ld.so.8.en.html#Secure-execution_模式
出于安全原因,如果动态链接器确定二进制文件应该在安全执行模式下运行,则某些环境变量的影响将被作废或修改。(有关详细信息,请参阅下面对单个环境变量的讨论。)如果辅助向量中的AT_SECURE条目具有非零值,则二进制将以安全执行模式执行。由于各种原因,此条目可能具有非零值,包括:
如何在全球范围内启用安全执行模式,比如说,所有从有限的linux用户帐户user启动的应用程序?
发布于 2021-05-13 00:57:05
没有标准的方法可以做到这一点。您可以编写/使用LSM,它为用户下的所有进程设置bprm->secureexec = 1,也可以用如下方式对动态链接器进行修补:
--- a/elf/dl-support.c
+++ b/elf/dl-support.c
@@ -316,7 +316,7 @@ _dl_aux_init (ElfW(auxv_t) *av)
}
if (seen == 0xf)
{
- __libc_enable_secure = uid != 0 || gid != 0;
+ __libc_enable_secure = uid != 0 || gid != 0 || !!getenv ("LD_SECURE");
__libc_enable_secure_decided = 1;
}
}这个补丁增加了对一个新的环境变量LD_SECURE的支持,如果设置了这个变量,链接器就会像在它的辅助向量中设置AT_SECURE一样。我没有测试这个补丁,因为它是如此琐碎,但它应该做你想做的。您需要为在安全执行模式下运行的任何用户设置该环境变量。请注意,这很可能破坏许多应用程序。
不过,我不得不质疑这样做是否有用。安全执行模式旨在保护跨权限边界执行另一个进程的进程。它不是一个通用的安全特性。你应该考虑你的威胁模型,并试图找出你到底在保护什么。
https://security.stackexchange.com/questions/241063
复制相似问题