我正在编写一个Linux / Unix程序,该程序在插件中有很多实现,这些插件由程序按需处理。
我想阻止这些插件库使用一些混乱主机进程的全局状态的libc函数(例如操纵信号处理程序等)。
最好的方法是什么?
据我所知,我不能在这里使用经典的LD_PRELOAD
技巧,因为libs已经过时了。
答案 0 :(得分:0)
实际上,你不能。从库运行的代码使用宿主应用程序的完全权限运行。不要加载你不信任的图书馆,不要做愚蠢的事情。
您可以想象在加载库之前检查库,并且(例如)拒绝具有意外依赖性的库,或者具有它们不应该使用的函数的重定位。 (例如,这可以使用ldd
或readelf
来完成。)但是,这永远不会完全可靠;恶意库可以通过多种方式隐藏其对各种功能的使用。