为了避免将所有共享库和配置文件复制到chroot文件夹中,我计划在加载所有共享库和配置文件后立即调用chroot("path/to/folder");
。
先前加载的库中的缓冲区溢出漏洞会在chroot外部提供攻击者访问吗? (因为它们是在chrooting之前加载的。)
与程序执行前的chroot相比,这种延迟chroot方法有什么缺点吗?
答案 0 :(得分:2)
共享库被加载到可执行文件的进程空间中,并具有与可执行文件一样多的权限。一旦您的可执行文件被chroot,他们也是如此。
延迟chroot对于运行setuid / setgid的可执行文件不一定是个好主意,并且意味着要加强对抗本地攻击,因为它们在chroot之前访问的东西(命令行参数,配置文件)正是可以利用的东西。我认为这也适用于共享库。但是,如果您正在减轻网络服务器进程的潜在漏洞,那么延迟chroot可以为您提供两全其美的优势。
答案 1 :(得分:0)
这是一种相对较远的可能性,但是加载的库可能会在加载它们时打开文件/目录,创建线程等(source)。这意味着可能存在对chroot
之外的事物开放的句柄,这些句子可能在被利用时被滥用。