gpt4 book ai didi

libc - 如何阻止 LD_PRELOAD 或 ld.so.preload 配置?

转载 作者:行者123 更新时间:2023-12-02 22:11:06 24 4
gpt4 key购买 nike

由于许可证问题,少数库无法静态链接。

那么是否可以通过 LD_PRELOAD 环境变量或通过/etc/ld.so.preload 配置来阻止/检测预加载库?

前面的可以通过getenv()来检测。但我不知道其他方法。

我认为可能有一个通用的方法来做到这一点,是吗?

最佳答案

is it possible to prevent/detect preloaded library, either through LD_PRELOAD environment variable or through /etc/ld.so.preload configuration?

您似乎正在尝试实现某种反黑客保护。如果是这样,那么就值得您花时间研究现有的防裂技术。 This book描述了一些。

请注意,除了 LD_PRELOAD 之外,还有许多其他技术可以将“外部”代码注入(inject)到您的应用程序中。和/etc/ld.so.preload 。立即想到的一对是:LD_AUDIT ,在调试器下运行,并重命名/替换 libc.so .

您几乎没有希望阻止中等复杂的攻击者。在 Linux 上,我可以构建自己的 libc.so.6 ,我可以重命名 LD_PRELOAD到别的东西。我还可以构建自己的内核,并让它自动注入(inject) myhack.so进入您的进程,而不会产生任何用户空间可见的影响。或者我可以简单地让系统调用在您的应用程序执行时执行其他操作。

... the LD_PRELOAD ... can be detected through getenv()

这只会阻止最不成熟的攻击者,原因有两个:

  • 预加载的库本身可以插入 getenv() ,并且可以隐藏LD_PRELOAD来自您的申请,并且
  • LD_PRELOAD仅在进程启动时才重要。该过程启动后,预加载的库可以轻松删除 LD_PRELOAD在您的应用程序有机会检查环境之前从环境中获取信息。

关于libc - 如何阻止 LD_PRELOAD 或 ld.so.preload 配置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20584977/

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