SQL Server

大変遅くなりましたが、Jeff JonesさんのSQL Serverに関するブログ記事の翻訳です。
Microsoft Security - Home

先週、あるウェブニュースが気になった。それによると、SQLサーバは「去年、商用データベースのうちもっとも脆弱性があった。」という。そこで著者は事実確認を行うことにし、SQL脆弱性について本当の(本当に良い)ことや、商用データベースで去年もっとも脆弱性があったのは何かを文書化する価値があると考えた。

Microsoftのセキュリティ掲示板の検索ツールを使用したところ、公開後2年半経つSQL Server 2005についての掲載が、サポート期間を通して1件もない。
 →SecuniaのSQL Server 2005に関するページでも、この製品のアドバイザリがサポート期間を通して1件もない。・Microsoftのセキュリティ掲示板の検索ツールを使用したところ、4年間(2004年1月〜)SQL Server 2000に関する掲載が1件もない。
 →SecuniaのSQL Server 2000に関するページでは、この製品の最新アドバイザリは2004年1月に公開されている。
・著者はNational Vulnerability Database (NBD) http://nvd.nist.govで"Microsoft"と"SQL"を検索したが、2003年7月以降たった3件の問題を発見したにすぎない。(4年半で3件のみ)3件の内1件のみがSQLに関係することがわかったが、それにしてもクライアントサイドの問題であった。
 →CVE-2004-1560 これは2004年9月に発表され、SQL Server 7にのみ影響する。
 →CVE-2007-5090 これは2007年9月に発表されたが、実際はIBM Rational ClearQuestの問題だった。
 →CVE-2007-4814 これは2007年9月に発表されたが、これはクライアントサイドのsqldmo.dll 2000.085.2004.00の問題だった。はっきりとはいえないが、SQL 2000コンポーネントがこのバージョンに基づいているようである。
・最後に、Symantecのwww.securityfocus.comのサイトをチェックしようと思い、脆弱性検索ページで調査した。
 →"SQL Server"で検索すると、2004年9月のものが最新として出てきた。これはSQL 7に影響するものである。
 →"SQL Server 2005"で検索すると、クライアントサイドのCVE-2007-4814が結果として出てきた。また、XMLコアサービスに影響した2006年の問題2件が出てきた。
 → "SQL Server 2000"で検索すると、ページが2007年に改編されたこともあり、2002年の問題が最新として出てきた。それ以前は2006年のXMLコアサービスのものが出てきていた。

一方、私は2007年のOracle Critical Patch Update(CPU)も調べてみた。

Critical Patch Update-2007年1月  データベースの脆弱性は17件 うち13件が10bに影響
Critical Patch Update-2007年4月  データベースの脆弱性は16件 うち13件が10bに影響
Critical Patch Update-2007年7月  データベースの脆弱性は18件 うち16件が10bに影響
Critical Patch Update-2007年10月 データベースの脆弱性は30件 うち16件が10bに影響

よって、初歩的な調査から明らかになったことは、SQL Serverは商用データベースのうち去年もっとも脆弱性があったとは到底いえないということである。

実際、SQL Server 2000は2003年までの間さんざんな成績だったが、SQLチームはそこから大きく変わり、SQL Server 2005は商用データベースの中でもセキュリティ面が優れている。

最後に、David Litchfieldの論文「どちらのデータベースが安全か?Oracle vs. Microsoft」を引用する。これは著者が数年前に取り上げたものである。

「2002年以降、SQL Serverに発見されたバグはなぜこんなにも少ないのだろうか?
答えは3単語:セキュリティ開発ライフサイクル、SDLである。SDLはもっとも重要な要因である。SDLを採用することで得られる主な利益は、脆弱性発見し修正した後、学んだ知識が失われないことである。その代わり、その知識はサイクルに組み込まれる。これは他のところで同じ過ちは起きず、新しいコードが、完全にセキュアではなかったとしても古いコードよりはセキュアであるということだ。」

SQL Server脆弱性が1つもないとは言わないし、絶対に壊れないともいえないが、SQL Serverチームは顧客を守るため大きく進歩している。

Internet ExplorerとFirefoxの脆弱性分析(最終報告)

Microsoftは公式に、ブラウザセキュリティの強化とアタッカーに対する防御レベル引き上げが必要があると強調している。Microsoftの努力は、Windows Server 2003におけるInternet Explorerの強化されたセキュリティ機能や、Windows XP SP2向けInternet Explorer 6でのセキュリティ改善、そして最近ではInternet Explorer 7における新セキュリティ機能や設計改善に現れている。

MozillaFirefoxの最初のバージョンを2004年11月に発表しているが、その主な売りはセキュリティとされている。その後Mozillaは「セキュリティ最高責任者」Window Snyderを雇用し、コミュニティ内で更なるセキュリティの改善を行っている。

データの傾向から見て、Internet ExplorerFirefoxも最新版ではセキュリティ品質が向上されているが、一般的に信じられていることに反して、Internet ExplorerFirefoxよりも脆弱性が少ない。

Internet Explorer脆弱性のほうが少ないという、この研究の結果に驚く人もいるだろう。しかし他の人にとっては、セキュリティ改善は誠心誠意尽くしても難しい仕事であることの裏づけになる。また、この結果は、献身と努力によって、ベンダがソフトウェア製品のコンピュータセキュリティを進化させられることを示している。過去5年にわたりMicrosoftのセキュリティ向上の努力に深く関わった者として、私はInternet Explorerが実現したセキュリティ品質は、Microsoftセキュリティ開発ライフサイクル(SDL)と、信頼できるコンピューティングイニシアティブを通じてのセキュリティへの献身の結果であると考えている。

Internet ExplorerとFirefoxの脆弱性分析(未修正の脆弱性)

ベンダが修正した脆弱性について、著者が以前分析結果を発表した時に感じたことだが、修正されていない脆弱性についても分析しなければ、全体観を得ることはできない。未修正の脆弱性は修正済みのものより、列挙し分析するのが難しい。なぜなら、後者については、ベンダのアドバイザリが修正済みの脆弱性を列挙したものを見ることができるからだ。しかし、多くの手作業を持っていすれば、未修正脆弱性の分析は可能である。

ForefoxとInternet Explorerの最新版の未修正脆弱性リストを作るため、著者は下記のプロセスを踏んだ。

1.National Vulnerability Database (NVD) (http://nvd.nist.gov)を利用して、それぞれのブラウザ(ForefoxとInternet Explorer)に影響を与えるとされている脆弱性をリスト化する。
2.ベンダのアドバイザリが修正済みとした脆弱性や、NVDがアドバイザリを確認し修正済みとした脆弱性をマークする。ベンダのアドバイザリは必ずしもCVE識別番号で修正した問題を発表しないため、NVDが修正済みとした脆弱性をチェックすることは必要である。例えばMFSA2005-50は、どの脆弱性もCVE識別番号で示していない。しかし、 NVDのCVE2005-2265のエントリは、MFSA2005-50をパッチアドバイザリとしている。(ちなみに、このステップはFirefoxにだけ役立つ。)
3.リストから、NVDが不適である、重複していると認めたものや、ブラウザが間違ってリストアップされていたもの及び、実際に脆弱性があったのはブラウザではなかったものを排除した。例えば、CVE-2007-3657はFirefox 2に影響があるとされていたが、他の研究者はこれを否定していた。そこで、著者はこれをFirefox脆弱性としてカウントしなかった。同様に、CVE-2007-1377はFirefoxに影響があるとされていたが、実際にはAdobe plug-inに問題があった。よって、著者はこれをカウントしなかった。
4.他にも様々な参考文献を調べ、分析対象としたブラウザのバージョンに各々の脆弱性が関係するか調査した。

未修正脆弱性のリストには、いくつか注意していただきたい点がある。NVDのリストにはFirefox 2以前にリリースされたFirefox 1.0およびFirefox 1.5の脆弱性で、ベンダにより修正されたか確認できないものが含まれている。これらの脆弱性はまだFirefox 2に残っているかもしれないし、後発バージョンのリリースの一部としてひっそりと直されているかもしれないため、筆者にはわからない。同じように、NVDのリストにはInternet Explorer 7以前にリリースされたInternet Explorer 6やその前のバージョンの脆弱性が含まれており、Internet Explorer 7のリリースで解決されたかもしれないし、解決されていないかもしれない。Internet Explorer 6の問題がInternet Explorer 7に残っていると研究者が指摘しているもの以外は筆者にはわからない。よって、筆者はこれらの脆弱性をリストに含めている。おそらく、このレポートはブラウザの脆弱性に関する研究に拍車をかけるだろう。

Firefox 2とInternet Explorer 7の脆弱性で、NVDのリストに含まれているがベンダのパッチがリリースされていないものを下図に示す。

実際には、Internet Explorer 7の脆弱性のうち2つはWindows XPプラットフォームでのみ影響し、1つはWindows Vistaプラットフォームでのみ影響する。よって、プラットフォーム別の全体数は少し少なくなるだろう。
しかし、著者はFirefox脆弱性をプラットフォーム別に分けることがでいないため、単に全体数を図とするのがよいと考えた。

Internet ExplorerとFirefoxの脆弱性分析(FFの傾向)

Mozillaは2004年11月にFirefox 1.0を発表し、2006年4月にサポートを終了した。17ヶ月のサポート期間中、MozillaFirefox 1.0の脆弱性を88個修正している。―緊急度高は36個、中程度は33個、低は19個で、月平均は5.2個である。

Mozillaは2005年11月にFirefox 1.5発表し、2007年5月(当初予定の1ヵ月後)にサポートを終了した。18ヶ月のサポート期間中、MozillaはFirefox1.5の脆弱性を107個修正した。―緊急度高は46個、中程度は53個、低は8個で、月平均は6個である。

Mozillaは2006年10月にFirefox 2.0を発表し、現在までに12ヶ月経っている。(本レポート作成時点)12ヶ月のサポート期間中、MozillaFirefox 2.0の脆弱性を56個修正している。―緊急度高は13個、中程度は42個、低は1個で、月平均は3.75個である。


図は、2004年以降発表された3つのFirefoxについて、リリース後1年間の脆弱性修正を表している。Mozillaは、セキュリティがFirefox 2.0のフォーカスエリアの1つであると述べている。(もう1つはユーザエクスペリエンス)

図からわかるように、各バージョンの未修正の問題が同一のものと考えれば、Firefox 2.0はセキュリティ品質の点で前のバージョンから進歩している。

Internet ExplorerとFirefoxの脆弱性分析(IEの傾向)

Microsoftは2004年8月にInternet Explorer 6 SP2を公開し、それから3年間で79個の脆弱性を修正した。―重大性の高いものは50個、中程度のものは24個、低いものは5個で、月平均は2.1個である。

MicrosoftInternet Explorer 7のWindoes XP SP2向けを2006年10月に、一部のWindows Vista向けを2006年11月に公開した。それから約1年間で、MicrosoftInternet Explorer 7の脆弱性を17個修正している。―重大性の高いものは14個、中程度のものは3個で、月平均は1.4個である。17個の脆弱性のうち、14個のいがVista版に関連するため、Vista版の脆弱性保有率はわずかに少ない。


図は、Internet Explorer 6およびWindows XP SP2版とWindows Vista版のInternet Explorer 7について、リリース後の1年間の脆弱性修正を表している。旧バージョンを比べて脆弱性が少ない最新バージョンのInternet Explorerの、そしてXP SP2版よりVista版の方の、セキュリティが高いことが、データから読み取れる。

Internet ExplorerとFirefoxの脆弱性分析(ブラウザ脆弱性の3年間)

これまでブラウザのライフサイクルについて学んだことを踏まえ、Firefoxが登場してからの2年間のブラウザユーザの状況を考えてみよう。FirefoxInternet Explorer、2種類のユーザが考えられる。
 ・できるだけ早く、アップグレードするユーザ
 ・できるだけ長く、1つのバージョンを使い続けるユーザ

前述のライフサイクルタイムラインを用いて、シナリオを作ることができる。
 1.FFa (すぐにアップグレードするユーザ)
  Firefox 1.0を2004年11月〜205年11月、Firefox 1.5を2005年11月〜2006年10月、Firefox 2.0を2006年10月〜2007年10月に使用。
2.FFb (すぐにアップグレードしないユーザ)
  Firefox 1.0を2004年11月〜2006年4月、Firefox 1.5を2006年4月〜2007年5月、Firefox 2.0を2007年5月〜2007年10月に使用。
3.IEa (すぐにアップグレードするユーザ)
  Internet Explore SP2を2004年11月〜2006年10月、Internet Explorer 7を2006年10月〜2007年10月に使用。
4.IEb (すぐにアップグレードしないユーザ)
  Internet Explore SP2を2004年11月〜2007年10月に使用。


図が示すとおり、Firefoxユーザにとっては、セキュリティ脆弱性の点で、新しいバージョンにすぐアップグレードするか、サポートが切れるまで古いバージョンを使うかで、大きな差はない。(0.5%)一方、Internet Explorerユーザにとっての差も比較的小さい(8%)が、Internet Explorer 7にすぐアップグレードした場合、重大性の高い脆弱性は4つ少ない。

この図が顕著に示すことは、Internet Explorerのどちらのシナリオでも、トータルの脆弱性Firefoxの重大性の高い脆弱性よりも少ないということだ。これは、「Firefox脆弱性は少ない」という前述の意見に相反することである。

IEとFirefoxの脆弱性分析(ライフサイクルサポートポリシー2/2)

Internet ExplorerとFirefoxの脆弱性分析 (ライフサイクルサポートポリシー 2/2)

ライフサイクルが存在するのは、サポート対象外となったバージョンにはパッチが開発されないからである。これはすべてのベンダーで同じである。しかし、ライフサイクルが短ければ、その分多くのユーザがサポート対象外のバージョンを使い続け、脅威にさらされることとなる。MicrosoftInternet Explorer 6 SP2を例にとって、詳しく説明してみよう。2006年10月、Internet Explorer 6のサポート終了を1ヵ月後に控え、 Internet Explorer 7がリリースされた。1ヶ月以内にすべてのユーザがアップグレードを行うだろうか?6ヶ月以内ではどうだろうか?6ヶ月の猶予期間でアップグレードしない消費者や企業はないだろうか?

Enterprise Unixディストリビューションに関しても、ライフサイクルの問題がある。Ubuntu 6.06 LTSはFirefox 1.5を取り入れ、2009年までのセキュリティサポートを約束している。Novell SUSE Linux Enterprise Desktop 10 (SLED10)もFirefox 1.5を採用し、2013年までセキュリティサポートを行うことになっている。Red HatRed Hat Enterprise Linux Desktop 5 (RHEL5)にFirefox 1.5を搭載し、2007年5月に発売しており、セキュリティサポートは2014年までである。

しかし、Mozillaは2007年5月でFirefox 1.5のサポートを終了している。これはRHEL5が発売されてから僅か2ヵ月後のことである。Mozillaのウェブサイトには、下記のように書かれている。
Firefox 1.5はサポート対象外であり、最終アップデートであるFirefox 1.5.0.12で見つかった脆弱性は、新しいバージョンで修正されています。Firefoxの最新バージョンにアップグレードすることを推奨します。」
このように、Firefox 1.5はMozillaのサポート対象外であり、セキュリティ上の修正が行われない。しかし、ディストリビューションユーザはサポートポリシーを維持するためにFirefox 1.5を使い続けねばならないかもしれないのである。ここでディストリビューションベンダーはセキュリティにおけるジレンマに直面する。彼らにはいくつかの選択肢がある。1つはセルフサポートを行い、ディストリビューション専用のパッチを発行することである。Red HatUbuntuは2007年7月にFirefox 1.5のパッチをリリースしている。Red Hatのアドバイザリによると、Red Hatのパッチにはバックポートパッチが含まれているという。これはおそらく、Firefox 2.0からバックポートされたものだろう。しかし、各々のベンダーから出される脆弱性パッチは、部分的にしか重なっていないことに注意が必要である。

Ubuntu 6.06 LTS : CVE-2007-3089, CVE-2007-3285, CVE-2007-3656, CVE-2007-3734, CVE-2007-3735, CVE-2007-3736, CVE-2007-3737, CVE-2007-3738, CVE-2007-3844, CVE-2007-3845,
Red Hat EL 5   : CVE-2007-3089, CVE-2007-3656, CVE-2007-3734, CVE-2007-3735, CVE-2007-3736, CVE-2007-3737, CVE-2007-3738

このレポートを執筆している時点で、National Vulnerability Databaseによると、Red HatはCVE-2007-3844について調査中であり、今後のアップデートでパッチを公開する可能性がある。他の2つについては何のコメントも載っていない。

他の選択肢は、Mozillaがサポートしているバージョンにアップグレードさせることである。Novellはこの方法をとっている。2007年5月、NovellはSLED10のアップグレードパッケージをリリースし、これにはFirefox 1.5.0.10が含まれていた。このFirefoxのバージョンでは、脆弱性がいくつか修正されていた。次のFirefox「パッチ」はFirefox 2.0.0.4へアップグレードするリプレイスメントパッケージで、6月にリリースされた。過去にはRed Hatもこの方法をとっている。Firefox 1.0から1.5へのアップグレードに焦点をあて、Red Hat RHEL4が2006年7月にリリースされている。

ライフサイクルを考慮することは、企業にとってはより重要なことだろう。顧客向けWebアプリケーションを有している場合があり、メジャーなリリースの間に頻繁にアップグレードを行うことを嫌い、移行期間も比較的長くかかるためである。

脅威にさらされずにアップグレードを行えるようサポート終了がいつかをきちんと把握しておきさえすればよい、という点で、ホームユーザにとっては別の問題である。繰り返しになるが、これはどのようなソフトウェア製品でも同じだがライフサイクルが短ければ、「もっとサポート期間が長ければ。。。」とユーザは思うかもしれない。