首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何防止LD_PRELOAD或ld.so.preload配置?

如何防止LD_PRELOAD或ld.so.preload配置?
EN

Stack Overflow用户
提问于 2013-12-14 15:23:02
回答 1查看 5.1K关注 0票数 2

由于许可证问题,很少有库不能静态链接。

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

可以通过getenv()检测到前面的内容。但我不知道另一种方法。

我想可能有一种通用的方法,对吧?

EN

回答 1

Stack Overflow用户

发布于 2013-12-15 18:17:33

是否可以通过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,并且
  • LD_PRELOAD只在进程启动时起作用。进程启动后,预加载库可以轻松地从环境中删除LD_PRELOAD,然后应用程序才有机会检查它。
票数 12
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20584977

复制
相关文章

相似问题

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