如何调查哪些服务和程序正在使用 glibc?

如何调查哪些服务和程序正在使用 glibc?

glibc由于,我计划对几台服务器进行升级CVE-2015-7547

https://googleonlinesecurity.blogspot.jp/2016/02/cve-2015-7547-glibc-getaddrinfo-stack.html

在升级之前glibc,我想粗略估计一下涉及哪些服务和程序,glibc这样就不会把事情搞砸。

有什么好方法可以做到这一点吗?

答案1

*nix 系统上的几乎每个二进制文件都使用它,但如果您想运行一些特定的检查,您可以执行以下操作:

$ for i in sort dig nc httpd nginx postfix tail head named awk sed; do ldd $(which $i) | grep -qw libc && echo $i; done
sort
dig
nc
httpd
nginx
postfix
tail
head
named
awk
sed

输出将只是引用 libc 的二进制文件,正如您所见,在我上面选择的简短列表中,包含所有内容。

通常,这样的升级需要重新启动所有服务。对于像这样的大型图书馆,我通常会尽可能安排完全重新启动系统,但我意识到这可能是不可能的,在某些情况下,可能不需要(通常重新启动服务就足够了)。

仅供参考,上述脚本之所以有效,主要是因为:

$ ldd /usr/bin/dig | grep -w libc
    libc.so.6 => /lib64/libc.so.6 (0x00007f2b1158a000)
$ rpm -q --whatprovides /lib64/libc.so.6
    glibc-2.12-1.166.el6_7.7.x86_64

相关内容