Linuxで脆弱性が見つかった場合の対応方法 まとめ

470件のシェア(そこそこ話題の記事)

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

はじめに

先日、Amazon Linuxで脆弱性が見つかった際に弊社のAWSチームのメンバーが以下の記事を公開していました。私は最近までクライアントサイドの開発案件を主に担当していたので自分の業務にはあまり関わりはないのですが、どのような手順でLinuxの脆弱性に対応しているのか興味があったので社内の人に聞いたり調べてみたことをまとめます。

[AmazonLinux] OpenSSLの脆弱性(CVE-2015-1793)について

1.脆弱性の情報を得る

まずは脆弱性が見つかった情報はどこから得るのでしょうか?脆弱性に関する情報は以前から以下のサイトのRSSなどから情報を得ることができますが最近はTwitter見てたら知った、なんてこともあるそうです。

Japan Vulnerability Notes
JPCERT コーディネーションセンター

以下はTwitterのアカウントです。

JVN 脆弱性レポート
JPCERTコーディネーションセンター

他にもここ見るといいよ、みたいなものがありましたら教えて下さい。

2.脆弱性の内容を確認する

次に脆弱性の影響範囲や重要度などの情報を得る必要があります。脆弱性には以下の様にCVE-XXXX-XXXXのようなIDがつけられていますので、これを使って調べていきます。

  • POODLE (CVE-2014-3566)
  • GHOST(CVE-2015-0235)
  • OpenSSLの脆弱性(CVE-2015-1793)

このIDはCVE識別番号と言います。CVEとはなんなのか調べてみたところ、非営利団体のMITRE社が管理している脆弱性情報データベースのことのようです。正式にはCommon Vulnerabilities and Exposuresといいます。CVE識別番号は「CVE-西暦-連番」のような形式になっています。CVEは以下のサイトになります。

CVE - Common Vulnerabilities and Exposures (CVE)
cve20150721_3

左のメニューでCVE ListのグループにあるSearch NVDというリンクをクリックすると以下の画面に遷移し、CVE識別番号などで詳細情報などを見ることができます。

cve20150721_4

上のNVDのサイトで影響範囲やバージョンなどの脆弱性情報を見ることができますが、最初に紹介したJVN(Japan Vulnerability Notes)のサイトの方が日本語なので見やすいかと思います。以下はJVNのCVE-2015-0235のページです。ベンダサイトへのリンクがあるので便利そうです。

cve20150721_8

CVEや共通の脆弱性タイプを示すCWEに関してはIPAのサイトにも詳しく書いてありますので、興味のある方はご覧ください。

共通脆弱性識別子CVE概説
共通脆弱性タイプ一覧CWE概説

3.脆弱性に対応する

ここからはディストリビューション別の対応になります。今回はRed Hat LinuxとAmazon Linuxを例に挙げ対応手順を見てみます。

Red Hat Linuxの場合

以下はRed Hat LinuxのサイトにあるCVEデータベースになります。以前、見つかったGHOST(CVE-2015-0235)という脆弱性を探してみましょう。右上のFilterにCVE-2015-0235を入れると絞り込まれますので、CVE-2015-0235というリンクをクリックします。

access.redhat.com | CVE Database
cve20150721_2

CVE-2015-0235 の詳細情報が表示されます。下の方にRed Hatセキュリティアラータという項目があります。対応したいプラットフォームのリンクをクリックします。今回はRed Hat Enterprise Linux version 7を選択してみます。RHSAというのはRed Hat Security Advisoryの省略形だそうです。

cve20150721_6

ここのページを見ると脆弱性に対応したglibcパッケージのバージョンを確認することができます。

cve20150721_7

パッケージのバージョンを確認するのは以下のコマンドになります。

$ sudo yum list installed | grep glibc

脆弱性のバージョンを確認しアップデートが必要な場合はアップデートします。アップデートする場合は依存するパッケージも更新されますので、どのパッケージが更新されているのかを見て影響がないかを確認しましょう。

$ sudo yum update glibc

パッケージを更新した後はrpmコマンドのchangelog オプションで内容を確認することも可能です。

$ rpm -q --changelog glibc | head
* Mon Jan 19 2015 Carlos O'Donell <carlos@redhat.com> - 2.17-78
- Fix ppc64le builds (#1077389).

* Mon Jan 19 2015 Siddhesh Poyarekar <siddhesh@redhat.com> - 2.17-77
- Fix parsing of numeric hosts in gethostbyname_r (CVE-2015-0235, #1183545).

「CVE-2015-0235」というのが対応した脆弱性のCVE識別番号になります。

Amazon Linuxの場合

次はJVNのサイトにリンクが張られていないAmazon Linuxでの対応方法を調べてみました。Amazon Linuxの場合は以下のサイトから脆弱性の対応方法を知ることができます。

Amazon Linux AMI Security Center
cve20150721_1

リストの中で先日、見つかったCVE-2015-1793 のある行のALAS-2015-564というリンクをクリックしてみましょう。ALASはAmazon Linux Security Advisoriesの省略形になります。ここを見れば脆弱性への対応方法が分かると思います。この例ではopenssl-1.0.1k-10.86 からopenssl-1.0.1k-10.87に更新する必要があるようです。

ALAS-2015-564
cve20150721_5

Red Hat Linuxの例と同様に影響を受けるバージョンであるかどうかを確認し、影響を受けるようであればパッケージを更新します。パッケージを更新するコマンドなどもRed Hat Linuxと同様になります。

最後に

他のディストリビューションの場合はJVNの詳細ページのリンクからたどっていけばいいと思いますので省略させて頂きます。今回はパッケージを更新するだけで対処できる脆弱性でした。実際には他に作業が必要になる脆弱性もあり大変な作業だと思いますが全体の流れはなんとなく掴めた気がします。脆弱性レポートを見ているとCVSSのような脆弱性の影響範囲を見る指標もあり興味が湧いたのでこれから勉強していきたいと思いました。