首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何对所有应用程序全局启用ld.so安全执行模式?

如何对所有应用程序全局启用ld.so安全执行模式?
EN

Security用户
提问于 2020-11-20 08:29:57
回答 1查看 784关注 0票数 1

报价https://manpages.debian.org/buster/manpages/ld.so.8.en.html#Secure-execution_模式

出于安全原因,如果动态链接器确定二进制文件应该在安全执行模式下运行,则某些环境变量的影响将被作废或修改。(有关详细信息,请参阅下面对单个环境变量的讨论。)如果辅助向量中的AT_SECURE条目具有非零值,则二进制将以安全执行模式执行。由于各种原因,此条目可能具有非零值,包括:

  • 进程的实际有效用户ID不同,或者真实有效的组ID不同。这通常是执行set-user-ID或set-group-ID程序的结果.
  • 具有非根用户ID的进程执行授予该进程能力的二进制文件。
  • Linux安全模块可能设置了非零值。

如何在全球范围内启用安全执行模式,比如说,所有从有限的linux用户帐户user启动的应用程序?

EN

回答 1

Security用户

发布于 2021-05-13 00:57:05

没有标准的方法可以做到这一点。您可以编写/使用LSM,它为用户下的所有进程设置bprm->secureexec = 1,也可以用如下方式对动态链接器进行修补:

代码语言:javascript
复制
--- 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一样。我没有测试这个补丁,因为它是如此琐碎,但它应该做你想做的。您需要为在安全执行模式下运行的任何用户设置该环境变量。请注意,这很可能破坏许多应用程序。

不过,我不得不质疑这样做是否有用。安全执行模式旨在保护跨权限边界执行另一个进程的进程。它不是一个通用的安全特性。你应该考虑你的威胁模型,并试图找出你到底在保护什么。

票数 2
EN
页面原文内容由Security提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://security.stackexchange.com/questions/241063

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档