如何防止LD_PRELOAD或LD.so.PRELOAD配置



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

那么,是否可以通过LD_PRELOAD环境变量或/etc/LD.So.PRELOAD配置来阻止/检测预加载的库?

上一个可以通过getenv()检测到。但我对另一种方法一无所知。

我认为可能有一个通用的方法,是吗?

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

你似乎在试图实现某种反黑客保护。如果是这样的话,研究一下现有的防裂技术是值得的。这本书描述了一些。

请注意,除了LD_PRELOAD/etc/ld.so.preload之外,还有许多其他技术可以将"外来"代码注入到应用程序中。马上想到的两个是:LD_AUDIT,在调试器下运行,以及重命名/替换libc.so

你几乎没有希望阻止一个适度老练的攻击者。在Linux上,我可以构建自己的libc.so.6,也可以将LD_PRELOAD重命名为其他内容。我还可以构建自己的内核,并让它自动将myhack.so注入到您的进程中,而不会产生任何用户空间可见的效果。或者,当应用程序执行系统调用时,我可以简单地让系统调用做其他事情。

LD_PRELOAD。。。可以通过getenv() 检测

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

  • 预加载的库本身可以插入getenv(),并可以对应用程序隐藏LD_PRELOAD,以及
  • CCD_ 11仅在进程启动时才重要。在该过程开始后,预加载的库可以在应用程序检查LD_PRELOAD之前轻松地将其从环境中删除

最新更新