Linux GNU Cライブラリ(glibc)に深刻なセキュリティホール「GHOST」(CVE-2015-0235)

HOMEリナックスマスター.JP 公式ブログLinux情報・技術・セキュリティ > Linux GNU Cライブラリ(glibc)に深刻なセキュリティホール「GHOST」(CVE-2015-0235)

図解60p「Linuxサーバー構築入門マニュアル」無料
登録10秒/自動返信でDL/合わなければ解除3秒

Linux GNU Cライブラリ(glibc)に深刻なセキュリティホールが発見され、
この脆弱性を利用すると、ハッカーはIDやパスワードを知らなくても
システムをリモートから乗っ取ることができます。
glibcのアップデート手順を紹介します。

■関連情報
Linuxに深刻なセキュリティホール「GHOST」、今すぐパッチが必要
Linuxの脆弱性「GHOST」、管理者は落ち着いて対処を
glibcライブラリに脆弱性、多数のLinuxディストリビューションに影響か
glibcのgethostbyname関数に存在するCVE-2015-0235(GHOST)脆弱性について
「GHOST」(CVE-2015-0235)

今回アップデート手順を実施した環境は、CentOS6.5になります。

[root@Tiger ~]# cat /etc/redhat-release
CentOS release 6.5 (Final)


現在のシステムにglibcの脆弱性が含まれているか確認します。
例ではrootで実行していますが、この作業はroot権限ではなくても問題ありません。

■glibc脆弱性確認手順
1.GHOST.cファイルを編集します。
[root@Tiger ~]# vi GHOST.c
下記内容をGHOST.cファイルに入力します。
Qualys Security Advisory CVE-2015-0235 - GHOST: glibc gethostbyname buffer overflow から引用
------------------------以下入力内容------------------------
#include <netdb.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <errno.h>

#define CANARY "in_the_coal_mine"

struct {
char buffer[1024];
char canary[sizeof(CANARY)];
} temp = { "buffer", CANARY };

int main(void) {
struct hostent resbuf;
struct hostent *result;
int herrno;
int retval;

/*** strlen (name) = size_needed - sizeof (*host_addr) - sizeof (*h_addr_ptrs) - 1; ***/
size_t len = sizeof(temp.buffer) - 16*sizeof(unsigned char) - 2*sizeof(char *) - 1;
char name[sizeof(temp.buffer)];
memset(name, '0', len);
name[len] = '\0';

retval = gethostbyname_r(name, &resbuf, temp.buffer, sizeof(temp.buffer), &result, &herrno);

if (strcmp(temp.canary, CANARY) != 0) {
puts("vulnerable");
exit(EXIT_SUCCESS);
}
if (retval == ERANGE) {
puts("not vulnerable");
exit(EXIT_SUCCESS);
}
puts("should not happen");
exit(EXIT_FAILURE);
}
------------------------以上入力内容------------------------
入力後、保存終了します。

2.GHOST.cファイルをコンパイルします。
[root@Tiger ~]# gcc -o GHOST GHOST.c

3.GHOSTを実行します。
[root@Tiger ~]# ./GHOST
vulnerable

vulnerable(脆弱)か not vulnerable(脆弱でない)かが表示され、
vulnerableであればアップデートが必要となります。

■glibcアップデート手順
1.glibcのバージョンを確認します。
[root@Tiger ~]# rpm -qa | grep glibc
compat-glibc-2.5-46.2.i686
glibc-headers-2.12-1.132.el6.i686
compat-glibc-headers-2.5-46.2.i686
glibc-common-2.12-1.132.el6.i686
glibc-2.12-1.132.el6.i686
glibc-devel-2.12-1.132.el6.i686

2.パッケージ管理システムのキャッシュをクリアします。
[root@Tiger ~]# yum clean all

3.glibcのアップデート実施
[root@Tiger ~]# yum update glibc

4.アップデート後のglibcバージョンを確認します。
[root@Tiger ~]# rpm -qa | grep glibc
compat-glibc-2.5-46.2.i686
glibc-common-2.12-1.149.el6_6.5.i686
compat-glibc-headers-2.5-46.2.i686
glibc-2.12-1.149.el6_6.5.i686
glibc-headers-2.12-1.149.el6_6.5.i686
glibc-devel-2.12-1.149.el6_6.5.i686

5.アップデート後の環境確認
[root@Tiger ~]# ./GHOST
not vulnerable

not vulnerable(脆弱でない)が表示されれば問題ありません。

6.再起動します。
脆弱性の影響を受ける可能性のあるアプリケーションは全て再起動が必要です。
しかし、今回は相当数のアプリケーションが対象となるため、サーバーの再起動をしてください。
[root@Tiger ~]# shutdown -r now



無料プレゼント
図解60p「Linuxサーバー構築入門マニュアル」
独学で詰まる前に、“型(手順書)”で最初の環境構築をサクッと終わらせましょう。
登録10秒/自動返信でDL/合わなければ解除3秒
無料で受け取る ※メールアドレスだけでもOK(必須項目は最小限)

宮崎 智広

この記事を書いた人

宮崎 智広(みやざき ともひろ)

株式会社イーネットマーキュリー代表。現役のLinuxサーバー管理者として15年以上の実務経験を持ち、これまでに累計3,100名以上のエンジニアを指導してきたLinux教育のプロフェッショナル。「現場で本当に使える技術」を体系的に伝えることをモットーに、実践型のLinuxセミナーの開催や無料マニュアルの配布を通じてLinux人材の育成に取り組んでいる。

関連記事



図解60pのLinux無料マニュアル
登録10秒/自動返信でDL
無料で受け取る