2015年7月22日

RHELセキュリティ情報の入手と適用

修正が作成されるまで

一般にプログラムに問題があるときは、プログラムのソースコードを修正して対応します。RHELのほどんとのパッケージではアップストリームのソースコードを直接変更せずそのままにしておき、修正は複数の「パッチ(修正用の差分情報)」を追加することでおこなっています。
RHELで利用されているrpm(RPM Package Manager)では、元のソースコードとパッチ、さらにそれらを処理して実際に実行されるプログラムに変換するための情報を「ソースrpm」とよばれるパッケージにまとめます。
ソースrpmから「バイナリrpm」を作成します。これは実際に実行できるプログラムなどが入ったパッケージで、通常「rpmパッケージ」という場合にはこのバイナリrpmのことをさしています。
通常1つのソースrpmから、複数のバイナリrpmが作成されます。動作するCPUアーキテクチャや利用するライブラリ、オプションなどによって、同じソースrpmから異なるバイナリrpmが作成されます。

errataとアドバイザリ

このように作成されたソースrpmおよびバイナリrpmを公開するデータベースがerrataです。
errataに含まれている、修正を公開する単位が「アドバイザリ」です。アドバイザリは、1つまたは複数のソースrpmの修正に対応したアナウンスで、以下のような情報を含みます。
  • アドバイザリのID (RH?A-XXXX:YYYY というフォーマットです。 ?はS,B,Eのいずれか、XXXX,YYYYは数字です)
  • 修正された問題の要約
  • 発行日、最終更新日
  • (セキュリティ修正のみ)重要度
  • (セキュリティ修正のみ)関連する脆弱性情報
  • 影響をうける製品
  • 更新されたパッケージとそのバージョン
  • 関連するbugzillaエントリ(通常は複数の修正が含まれています)

errataはそれぞれのアドバイザリがレコードとしてならんだデータベースになっています。
重要な特徴として、errataではそれぞれのアドバイザリに順序関係があり、同じ製品であれば新しいアドバイザリには、それ以前のアドバイザリで提供された修正が全て反映されています。
たとえばfirefoxがアドバイザリ A, B, Cの順に3回修正されたとすると、Aに含まれている修正は全てB,C にも含まれ、Bに含まれている修正はCにも含まれています。
つまり、常に最新のパッケージを適用することで、全ての既知の問題に対応できます。「Bで修正された部分は利用するがAとCの問題はそのまま放置する」というような選択肢をなくすことで、管理がシンプルになっています。

アドバイザリの種類は?

アドバイザリには3種類の分類があり、それぞれIDが以下の4文字ではじまります。
  • RHSA セキュリティ上の脆弱性を修正したアドバイザリ
  • RHBA バグを修正したアドバイザリ
  • RHEA 機能拡張したアドバイザリ
RHSAおよびRHBAでは、基本的に対応する問題を修正するだけで、新しい機能が追加されることはありません。機能拡張は基本的にRHEAだけで行われます。

errata情報の入手

errataの情報は公開されており、以下のwebページから参照することができます。


また、通知を受ける方法としてRHELでは3通りの方法を提供しています。
1. yum-updatesd によるメール送信、log出力
RHELに同梱されている yum-updatesd は定期的にカスタマーポータルに接続して更新情報を取得し、更新パッケージがあれば通知します。
通知方法にはe-mail, log出力, dbusが選択でき、デフォルト設定ではdbusによる通知を利用して、GUI環境でアップデートの通知を画面表示させます。この設定を変更することでメールやログの形でアップデートの通知を受けとることができます。
詳しくは、「man yum-updatesd.conf」としてマニュアルを参照してください。
2. Red Hat カスタマーポータルからのメールによる通知
カスタマーポータルのErrata notifications設定により、errata出荷時にメールで通知を受けとることができます。
3. メーリングリスト、RSSフィードによる通知
errataの更新についての通知を、RSSフィードおよびメーリングリストでおこなっています。

脆弱性のCVE numberから対応するerrataアドバイザリを確認

RHSA には、Common Vulnerabilities and Exposures (CVE)の関連する脆弱性情報へのリンクが含まれています。以下のサイトで、CVE numberからerrataのアドバイザリを逆引きすることができます。ニュースサイト等で見た脆弱性が製品への影響しているかの確認や、既に出荷され ていればerrataのIDを確認することができます。


yumコマンドによるセキュリティ修正の確認・対応

インターネット接続が可能であるか、Red Hat Satelliteが利用可能な環境では、yumコマンドによりセキュリティ対応をおこなうことが可能です。
サマリの表示
# yum updateinfo
Loaded plugins: langpacks, product-id, subscription-manager
Updates Information Summary: available
    3 Security notice(s)
        2 Critical Security notice(s)
        1 Important Security notice(s)
    2 Bugfix notice(s)
    2 Enhancement notice(s)
updateinfo summary done
適用可能なerrataの一覧
# yum updateinfo list available
Loaded plugins: langpacks, product-id, subscription-manager
RHSA-2015:1443 Important/Sec. bind-32:9.9.4-18.el7_1.2.x86_64
RHSA-2015:1443 Important/Sec. bind-libs-32:9.9.4-18.el7_1.2.x86_64
RHSA-2015:1443 Important/Sec. bind-libs-lite-32:9.9.4-18.el7_1.2.x86_64
RHSA-2015:1443 Important/Sec. bind-license-32:9.9.4-18.el7_1.2.noarch
RHSA-2015:1443 Important/Sec. bind-utils-32:9.9.4-18.el7_1.2.x86_64
RHSA-2015:1207 Critical/Sec.  firefox-38.1.0-1.el7_1.x86_64
RHSA-2015:1229 Critical/Sec.  java-1.7.0-openjdk-1:1.7.0.85-2.6.1.2.el7_1.x86_64
RHSA-2015:1229 Critical/Sec.  java-1.7.0-openjdk-devel-1:1.7.0.85-2.6.1.2.el7_1.x86_64
RHSA-2015:1229 Critical/Sec.  java-1.7.0-openjdk-headless-1:1.7.0.85-2.6.1.2.el7_1.x86_64
RHBA-2015:1192 bugfix         openssl-1:1.0.1e-42.el7_1.9.x86_64
RHBA-2015:1192 bugfix         openssl-libs-1:1.0.1e-42.el7_1.9.x86_64
RHBA-2015:1474 bugfix         python-chardet-2.2.1-1.el7_1.noarch
RHEA-2015:1473 enhancement    python-urllib3-1.10.2-1.el7_1.noarch
RHEA-2015:1476 enhancement    redhat-access-insights-1.0.4-0.el7_1.noarch
updateinfo list done
アドバイザリ詳細の確認
# yum info-sec --advisory RHSA-2015:1443
Loaded plugins: langpacks, product-id, subscription-manager

===============================================================================
  Important: bind security update
===============================================================================
  Update ID : RHSA-2015:1443
    Release :
       Type : security
     Status : final
     Issued : 2015-07-20 00:00:00
       Bugs : 1237258 - CVE-2015-4620 bind: abort DoS caused by uninitialized value use in isselfsigned()
       CVEs : CVE-2015-4620
Description : The Berkeley Internet Name Domain (BIND) is an implementation of
            : the Domain Name System (DNS) protocols. BIND
            : includes a DNS server (named); a resolver library
            : (routines for applications to use when interfacing
            : with DNS); and tools for verifying that the DNS
            : server is operating correctly.
            :
            : A flaw was found in the way BIND performed DNSSEC
            : validation. An attacker able to make BIND
            : (functioning as a DNS resolver with DNSSEC
            : validation enabled) resolve a name in an
            : attacker-controlled domain could cause named to
            : exit unexpectedly with an assertion failure.
            : (CVE-2015-4620)
            :
            : Red Hat would like to thank ISC for reporting this
            : issue.
            :
            : All bind users are advised to upgrade to these
            : updated packages, which contain a backported patch
            : to correct this issue. After installing the
            : update, the BIND daemon (named) will be restarted
            : automatically.
   Severity : Important
updateinfo info done
CVE IDを指定してのアップデート
# yum update --cve CVE-2015-4620
アドバイザリIDを指定してのアップデート
# yum update --advisory RHSA-2015:1443

RHELのバージョンによりyumコマンドで利用するオプションが変わります。以下のナレッジベースでRHELの5,6,7それぞれでの操作をご案内しています。

参考情報

セキュリティガイド 第3章 システムを最新の状態に保つ