Java 是否容易受到 Linux 中的 glibc GHOST 漏洞的影响?

信息安全 linux 爪哇 脆弱性 glibc
2021-08-17 05:44:42

我在我们的 RedHat Linux 平台上看到“java”进程依赖于 glibc 库:

[root@hpproliant1 ~]# ldd /usr/bin/java
linux-gate.so.1 =>  (0xffffe000)
libpthread.so.0 => /lib/libpthread.so.0 (0xf7f77000)
libjli.so => /usr/java/32bit/jre1.6.0_26/bin/../lib/i386/jli/libjli.so (0xf7f6e000)
libdl.so.2 => /lib/libdl.so.2 (0xf7f69000)
libc.so.6 => /lib/libc.so.6 (0xf7e11000)
/lib/ld-linux.so.2 (0xf7f97000)

Java API 是否会间接调用有问题的 glibc 函数?如果是这样,jvm 是否以易受攻击的方式使用易受攻击的函数?

1个回答

可能。

glibc 中易受攻击的两个函数是 gethostbyname 和 gethostbyname2。您注意到 java 与 glibc 相关联,但即使可能易受攻击,它也必须链接到这些特定函数。

可以使用程序 readelf 扫描 ELF 二进制文件并查看链接库。

最近发现 procmail 易受攻击,让我们检查一下这种方法是否适用于已知易受攻击的程序。

readelf --dyn-syms /usr/bin/procmail |grep gethostbyname
    46: 0000000000000000     0 FUNC    GLOBAL DEFAULT  UND gethostbyname@GLIBC_2.2.5 (2

确实如此!

如果您可以执行 jvm 可执行文件,您将找不到对 gethostbyname 的引用。

如果您扫描 java 中包含的库,您将:

readelf --dyn-sym libdt_socket.so |grep gethostbyname
    19: 0000000000000000     0 FUNC    GLOBAL DEFAULT  UND gethostbyname@GLIBC_2.2.5 (4)

这是否可利用需要进一步分析。但除非另有证明,否则您应该更新您的 glibc 库。