如何阻止我的docker虚拟机将debugging器附加到我的可执行文件?

我正试图自动对我们团队的应用程序进行一些testing。 我正在学习Docker,因为它看起来非常强大。

我通过运行我们的安装程序部署最新的CentOS,然后运行部署我们的应用程序的可执行文件。 但是,该可执行文件的内置可以在debugging器附加时退出。 如果我build立一个单独的交付物,允许这个附件,一切都按预期工作。

我不能为我的生活找出什么是试图附加到我的可执行文件。 有人可以帮忙吗?

Docker 不会将debugging器附加到您的可执行文件中。

但是,您的程序可能正在通过尝试ptrace()本身来testing它是否正在被debugging。 这在历史上是一种合理的方法(有点不赞成,反对一个不太能干的对手),因为只有一个进程可以一次抓取一个给定的进程。

只有在特权模式下运行Docker时才允许ptrace(); 因此,简单的答案是在这种模式下运行容器。 显然,这削弱了Docker能够提供的安全性保证,如果没有可行的解决方法,您应该只使用它。


顺便说一句 – ptrace()自己不足以防止您的可执行文件被追踪! 即使没有更多有趣的和有能力的工具(即用gdb挂钩在qemu上运行), Sysdig几乎可用于所有现代Linux发行版,并允许系统级跟踪; 同样,Linux审计框架和SystemTap都允许相对较低的挂钩function。 而且,当然,任何逆向工程师都可以仅仅调出ptrace()调用。 如果你期待这个提供任何真正的安全,你可能会重新考虑。