GHOST(CVE-2015-0235)刚刚弹出。如何快速检查我的系统是否安全?理想情况下,使用单行shell命令。

根据ZDNet文章“然后应该重新启动系统”。理想情况下,测试还应表明...

评论

我建议提升为“经典问题”

好问题。太糟糕了,您接受了一个答案,它不是单行的shell命令,而是需要安装完整的开发人员工具链。诸如路由器之类的关键设备大多没有gcc。有些设备甚至无法自我托管。

你说得对@BenVoigt。我用一个不需要开发工具的衬里悬赏悬赏。

在无法自我托管的设备上,uClibc和Dietlibc比glibc更有可能。拖出交叉编译器之前,请检查以确保您确实在glibc上运行。

#1 楼

看来您可以从芝加哥大学下载一个工具,该工具可以让您测试系统的漏洞。

这不会修复或重新启动任何操作,只会告诉您系统是否存在漏洞。

$ wget https://webshare.uchicago.edu/orgs/ITServices/itsec/Downloads/GHOST.c
$ gcc GHOST.c -o GHOST
$ ./GHOST
[responds vulnerable OR not vulnerable ]


在我的一台远程服务器上运行它,我得到:看起来像下一个代码块,但是无论如何您都应该先检查原始代码。正如其他人指出的那样,如果您不知不觉地在Internet上随意运行代码,则可能会发生不好的事情:

user@host:~# wget https://webshare.uchicago.edu/orgs/ITServices/itsec/Downloads/GHOST.c
--2015-01-27 22:30:46--  https://webshare.uchicago.edu/orgs/ITServices/itsec/Downloads/GHOST.c
Resolving webshare.uchicago.edu (webshare.uchicago.edu)... 128.135.22.61
Connecting to webshare.uchicago.edu (webshare.uchicago.edu)|128.135.22.61|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 1046 (1.0K) [text/x-csrc]
Saving to: `GHOST.c'

100%[============================================>] 1,046       --.-K/s   in 0s      

2015-01-27 22:30:48 (237 MB/s) - `GHOST.c' saved [1046/1046]

user@host:~# gcc GHOST.c -o GHOST
user@host:~# ./GHOST
vulnerable


编辑:如果任何人都可以使用ansible剧本,如果您要测试的系统很多,那么ansible可以让您快速完成。

另外,按照下面的讨论,如果发现服务器易受攻击并应用了可用的补丁程序,强烈建议您重新启动系统。

评论


@KasperSouren好吧,是的。如果容易受到攻击,请应用补丁/升级并重新启动。

–muru
15年1月28日,0:30

@KasperSouren坦率地说,您要问的是有点傻。该答案可以完美回答您的问题:如何检测此漏洞。这就是您要的全部。要求“一个班轮”也有点愚蠢。我在不到2分钟的时间内对他在所有服务器上发布的测试进行了测试。很简单。完成后,只需“立即关闭-r”即可。

–user7933
15年1月28日在0:38

我升级了,运行了测试,没有重启。只有当我发现必须重新启动时才回到此状态。这可能发生在相当多的人身上,尽管他们的安全意识有误,但他们的服务器可能很脆弱,甚至可能遭到黑客入侵。因此,如果可能的话恕我直言,不要太愚蠢。

–kqw
15年1月28日在0:52

GHOST.c POC源自原始的Qualys通报。

–purpur先生
15年1月28日在10:02

@KasperSouren测试可以告诉您新程序将使用安全版本的glibc。但是,您可能在升级之前在后台运行了程序,因此已经加载了旧版本。

– Davidmh
15年1月28日在14:06

#2 楼

PHP单行代码:

php -r '$e="0";for($i=0;$i<2500;$i++){$e="0$e";gethostbyname($e); }'


Python单行代码:

python -c 'import socket;y="0"*50000000;socket.gethostbyname(y)'


是的,Python segfault,一个罕见的标本),那么您很容易受到攻击。我不知道您是否将Python视为“开发人员工具”,但PHP是常见的程序。

如果目标设备是路由器,除了深入了解制造商规格和/或等待制造商咨询和固件更新外,我不知道您可以在路由器上做什么。

评论


可以将它与sudo lsof结合使用吗? grep libc- | grep DEL”?在另一条评论中提供该功能,以避免人们认为在旧的libc仍在使用时它们是安全的。为此,我将立即给出赏金。

–kqw
2015年2月3日在8:53



这是一个shell命令,因此您可以使用&&进行处理。只有在更新了glibc软件包之后,该命令才会生效。如果您已更新,则这些衬板将失败。因此,您的更新vommamd介于两者之间吗?

– Ohnana
2015年2月3日,12:34

我在SUSE 11SP3上使用了php,在修补之前或之后都没有看到segfault。有任何想法吗?

–马辛
2015年2月3日,15:49

@marcin这很有趣。我从互联网上获取了这些信息,许多人报告存在段错误。增大循环计数有什么作用吗? (就其价值而言,Python的segfault也会在某些修补的系统上发生segfault……对此一无所知。)

– Ohnana
2015年2月3日在16:10



从播放uchicago代码开始,看起来如果您尝试溢出4个以上字节左右,则gethostbyname()将返回错误(EINVAL)而不是溢出。使用C,您可以精确控制要覆盖的内容。使用PHP或Python,被覆盖的内容可能很重要且存在段错误,或者什么都没有。这将取决于系统的确切构建。对我来说,gethostbyname(“ 0” * 50000000)上的Python段错误更像是Python中的错误。 (Ghost Python?)

–詹德
15年2月4日在4:17

#3 楼

aaronfay的答案已经涵盖确定您的基础系统是否易受攻击的问题,但是它无法检测到升级后是否仍在使用旧版本的glibc运行程序。也就是说,您可以在不重新启动受影响的进程的情况下进行升级,并且即使仍在使用易受攻击的旧库,该脚本也会报告“不易受攻击”。任何仍在使用旧版本glibc的动态链接程序: 。

当然,这并不涉及静态链接glibc的情况。好消息是,很难找到以二进制形式静态链接的glibc,这不仅是因为其大小,而且还因为它带来了其他麻烦和困难。如果您的程序确实使用静态编译的glibc(几乎可以肯定没有),则需要重新编译它们。

评论


lsof + c0 -f-/usr/lib64/libc-*.so | grep“(deleted)$”更加精确,它向您显示进程的全名,并寻找到已删除文件的链接。

–马辛
2015年1月30日在16:22



#4 楼

如果您在Redhat中拥有一个帐户,则可以通过此URL访问其“ GHOST检测器”。它是一个很小的shell脚本,它将告诉您glibc是否易受攻击。请注意,在使用yum --security修补漏洞时,RHEL6.6也存在一些问题,因为根据https://bugzilla.redhat.com/show_bug.cgi?id=1186717遗漏了该漏洞。

评论


RedHat工具仅检查glibc RPM的版本,并且仅了解RedHat的版本(可能还包括派生版本)。它实际上在任何其他操作系统上均不起作用。

–chutz
15年1月28日在14:12

这也不再可供下载,可能是由于漏洞造成的。

– Shane Andrie
15年1月28日在15:47