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

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

Linuxサーバー管理者の技術を2日で学べる「初心者向けリナックスセミナー」
30日掛かって覚えるプロの技術を、たった2日間で学習できます。
リナックスマスター2日間集中セミナー【CentOS7版】
 (今すぐ↑をクリックしてください。)

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



■CentOS7.1サーバー構築マニュアルを無料プレゼント
 「CentOS7.1」のサーバー構築手順、「VMware Player」の
 ダウンロードとインストール手順をまとめたマニュアルを
 無料でプレゼントしています。


 詳しくは↓のページで説明していますので、今すぐクリックしてダウンロードしてください。
 無料マニュアルをダウンロードする  無料マニュアルをダウンロードする