セキュリティ ウォッチセキュリティに関する 10 の鉄則再考 : 第 2 部

Jesper M. Johansson

目次

鉄則 4: 悪意のある攻撃者にあなたの Web サイトに対して自由にプログラムをアップロードさせてしまうのなら、もはやそれはあなたの Web サイトではない
鉄則 5: セキュリティが強力であっても、パスワードが弱ければ台無しである
鉄則 6: コンピュータのセキュリティが守られているかどうかは、その管理者が信頼できるかどうかにかかっている
鉄則 7: 暗号化されたデータのセキュリティが守られているかどうかは、解読キーのセキュリティにかかっている
まとめ

先月号の TechNet Magazine で、有名なエッセイ「セキュリティに関する 10 の鉄則」の再考 3 部作に着手しました。その目的は、これらの鉄則を提示から 8 年を経たところで評価し、現在でも有効であるかどうか、つまり本当に "鉄則" であるかどうかを確認することです (このシリーズの第 1 部は、microsoft.com/technet/archive/community/columns/security/essays/10imlaws.mspx で公開されています)。

最初の 3 つの鉄則は、有効性をかなり維持していることがわかりました。この記事では、さらに 4 つの鉄則を吟味したいと思います。来月の最終回では、最後の 3 つの鉄則を取り上げるほか、8 年を振り返ることで得られる新たな洞察もいくつかご紹介します。

鉄則 4: 悪意のある攻撃者にあなたの Web サイトに対して自由にプログラムをアップロードさせてしまうのなら、もはやそれはあなたの Web サイトではない

鉄則 4 は少し奇妙に聞こえると思われているかもしれません。結局、これ以外の鉄則は非常に概念的で、具体的なサービスではなく一般的な機能について述べたものです。最初の 3 つの鉄則はどれも、あなたのコンピュータがあなたのコンピュータではなくなるシナリオについての法則です。そして鉄則 4 は、Web サイトについての法則です。

鉄則 4 を理解するには、歴史的背景が非常に重要です。この鉄則が最初に公開されたのは 2000 年のことです。この時代は、Web はまだかなり新しく、成熟していませんでした。Amazon や eBay のようなサイトはまだ開発中でした。Web サイト上で任意のコマンドを実行する攻撃は日常茶飯事でしたが、それを修正することはまれでした。

そのような背景からマイクロソフトは鉄則 4 を、Web サイトが提供するサービスについてはそのサイトの所有者が責任を取る必要があるという必須の公式声明として考えたものと思われます。この点については、2001 年 9 月の Nimda 攻撃の折に、かなり手痛く思い知らされることになりました。Nimda は、さまざまな感染手段を持つネットワーク ワームで、感染手段の 1 つは、脆弱な Web サイトを感染させてそのサイトがワームを媒介するように変更することでした。

鉄則 4 が提示された時代は、Web サイト改変の時代でもありました。Attrition.org では、この時期のさまざまな改変のミラーを提供しています (attrition.org/mirror/attrition/months.html)。このような改変は数多く行われ、著名なサイトに対して仕掛けられるのが一般的でした。著名なセキュリティ トレーニング組織の SANS Institute でさえも、ホームページが改変されたことがあります。図 1 は 1998 年 10 月のアリゾナ州の Web サイトが改変されたときの状態です。

fig01.gif

図 1 アリゾナ州の Web サイトの改変 (画像をクリックすると拡大表示されます)

問題は、その当時、Web サイトが改変された場合、一般には実際に何が起きるかということが理解されていなかったことです。問題のあるページを削除して、運営を続けるというのが大多数の意見でした。抜かりない人は、悪意のある攻撃者が使用したセキュリティ ホールを (見つけられた場合は) 修正しました。

人々は全体像を見ていませんでした。鉄則 4 は、Web サイトが改変された場合に、何が起きなかったかではなく、何が起こり得たかについて、人々に考えてもらうためのものでした。

残念ながら、鉄則 4 は完全な成功を収めたわけではありません。鉄則 4 にもかかわらず、2004 年までに「ハッカーに改変された Web ページを削除するだけで、後は通常どおり業務を続けることはできませんか」という質問にうんざりしていた私は、おとなしい男ではないので、「ヘルプ : ハッキングされたらどうするか」(technet.microsoft.com /en-us/library/cc512587.aspx) という記事を書いてこのような考えを追い散らそうとしました。

しかしここでの問題は、鉄則 4 は現在でも有効かどうかということです。悪意のある攻撃者がプログラムをあなたの Web サイトにアップロードできた場合、本当に攻撃者がそのサイトを所有することになるのでしょうか。さらに細かく言うと、攻撃者は、あなたのサイトまたはサイトの訪問者、またはその両方を所有することになるでしょうか。鉄則 4 は、実際にはその対象が明確ではありませんので、ここではサイトと訪問者の両方について分析します。

サイトを所有することについては、答えはイエスです。悪意のある攻撃者がプログラムをあなたのサイトに混入できた場合、そのサイトは攻撃者に所有されます (ただし、後述しますが、いくつかの例外があります)。通常の Web サイトでは、プログラムをアップロードすることで悪意のある攻撃者が実行できることは 2 つあります。また、攻撃者があなたのサイトにアップロードできるという事実から暗示される非常に大きな問題が 1 つあります。

悪意のある攻撃者が実行できることの 1 つ目は、自分のニーズを満たすようにあなたのサイトを利用することです。児童ポルノなど違法なコンテンツを提供しようともくろんでいる場合、それを行う場所として、ハッカーを追跡できないようなサイトをやはり選ぶのではないでしょうか。犯罪者は、自分自身のサイトではなく、あなたの Web サイトからこのようなコンテンツを提供しようとするでしょう。

サイトにプログラムをアップロードすることで悪意のある攻撃者が実行できることの 2 つ目は、そのサイトの背後にあるシステムの制御です。これは、もちろん、Web サーバー上でプログラムを実際に実行できるかどうかによります。プログラムがアップロードされただけで、何もしないのであれば、役には立ちません。しかし、悪意のある攻撃者がプログラムを実行できた場合は、間違いなくあなたのサイトは所有され、攻撃者のニーズを満たすようにサーバーが利用されるだけでなく、他のものを乗っ取るためにも利用されます。

前述の暗示については、これらの具体的な問題よりもさらに重要です。「ヘルプ : ハッキングされたらどうするか」の記事で、ハッキング後は悪意のある攻撃者がどのようなことを実行しているかについて正確には把握できないということを指摘しようとしました。悪意のある攻撃者が自分のコンテンツをあなたのサイトに混入できた場合、他にどのようなことがなされる可能性があるかを考える必要があります。

その答えには、多くのことが当てはまる可能性があります。これが、この問題の本当に重要な部分です。悪意のある攻撃者があなたの Web サイトの背後にあるサーバー上でプログラムを実行できる場合、サイトとこのサイトの機能は攻撃者に完全に所有されます。まさに、あなたの Web サイトはあなたのものではなくなります。

サイトの訪問者を侵害するかどうかについては、答えはさらに出しにくくなります。1990 年代後半のブラウザはセキュリティ ホールだらけでした。この状況が劇的に好転したのは、2004 年ごろのことです。現在の主要ブラウザである Internet Explorer と Firefox は、どちらもセキュリティの面では非常に安定しています。実際、1990 年代のブラウザと比較すると、現在のブラウザは本当にセキュリティの要塞と言えます。

悪意のある攻撃者が訪問者を侵害できるかどうかは、主に次の 2 つのことにかかっています。1 つ目は、ブラウザに攻撃者が利用できるセキュリティ ホールが存在するかということです。存在している可能性はありますが、とうてい以前ほどの数ではありません。2 つ目は、悪意のある攻撃者は、ユーザー自身をそそのかしてユーザーを侵害できるかということです。この答えは、困るほど多くの場合、イエスです。

Web サイトから指示されたとおりにインストールしてしまうユーザーが多すぎます。これは、テクノロジを使用して解決できないため、深刻な問題です。2008 年 7 月、8 月、および 9 月の「セキュリティ ウォッチ」で、私はこの問題を取り上げました。つまり、鉄則 4 に関していえば、残念ながら、悪意のある攻撃者が訪問者を侵害できる可能性は非常に高いと言えます。

前述の例外については明白でしょう。現在の Web サイトでは、1990 年後半に予想されていたことよりも多くのことを実行できます。たとえば、Microsoft SharePoint など、内部コラボレーション サイトが普及しています。適切なアクセス許可があるユーザーは、このようなサイトにプログラムをアップロードできますが、これはサイトやそのサイトにアクセスするユーザーが侵害されないことを意味しています。これこそ、このようなサイトが目的とするところです。サイトへのアクセスに必要なアクセス許可を持っているということだけで、そのユーザーはある程度まで信頼できると見なされます。

また、シェアウェア サイトというものもあります。これまでこのようなサイトに発行されたマルウェアもありますが、シェアウェア サイトはソフトウェアを共有するためのものです。このこと自体は、ユーザーが侵害されることを意味するものではありません。つまり、このようなサイトはすべて、安全な状態を保ち、サイトにアクセスするだけでユーザーが自動的に侵害されることがないようにする対策がとられています。私は、これらの例外はこの鉄則を裏付けるものだと考えます。したがって鉄則 4 は、良かれ悪しかれユーザーにプログラムのアップロードを許可するサイトも一部にはありますが、少なくとも概念的には現在も有効です。

鉄則 5: セキュリティが強力であっても、パスワードが弱ければ台無しである

パスワードは、私が長年にわたり熱心に取り組んできたことの 1 つです。パスワード (より広い意味では共有シークレット) は、対象を認証する優れた方法です。パスワードには、1 つだけ小さな問題があります。つまり、人間の習性の前では、完全に崩れてしまうという問題です。

コンピューティングが始めて考案されたころのコンピューティングの平穏な時代に、ユーザーを区別するための手段の必要性が明らかになりました。システムは、たとえば Alice のデータと Bob のデータを区別する手段を必要としていました。 理想的には、厳しくない要件であるとはいえ、Bob は Alice が彼のデータを読み取れないようにできる必要がありました。

そのためのソリューションが、ユーザー アカウントとパスワードでした。以前は、1 台のコンピュータ システムにつき 1 つのアカウントが使用されていました。また、基本的にパスワードも 1 つで、通常は次のいずれかが使用されていました。

  • 子供の名前
  • 配偶者の名前
  • ペットの名前
  • "God" (スーパー ユーザーの場合)

約 30 年が経ち、現在では、数百のアカウントをインターネット上のあらゆる Web サイトや数台のコンピュータで使用しています。これらのシステムはすべて、他のシステムで使用しているものと同じパスワードは使用しないようにユーザーに求めています。強力なパスワードにして、これを書き留めないことのほか、30 ~ 60 日おきに変更することが推奨されています。

普通の人間は毎日 4 つのパスワードの変更などできず、実際にパスワードを覚えていることなどないので、結果として、残念ですがすべてのシステムで同じパスワード (または可能性としては 2 種類のパスワード) を使用しています。また、通常は、次のものがパスワードに使用されます。

  • 数字の 1 を子供の名前の末尾につなげたもの
  • 数字の 1 を配偶者の名前の末尾につなげたもの
  • 数字の 1 をペットの名前の末尾につなげたもの
  • "GodGod11" (スーパー ユーザーの場合のみ)

人間は、この 30 年間で望まれたほどには、まだまだ進化していません。研究者は、現在もパスワード クラックは有益な研究分野であることを示しています。詳細については、『PC World』の記事「問題はパスワードが多すぎるのか、頭が足りないのか」(pcworld.com/businesscenter/article/150874/too_many_passwords_or_not_enough_brain_power.html) を参照してください。

明らかに、通常使用されているパスワードは、セキュリティとしては非常に弱いものです。それでも、パスワードを安全に使用する方法はあります。たとえば、強力なパスワードを作成して、これを書き留めます (これはまったく悪いことではありません)。しかし、あらゆる場所であらゆる人から誤ったセキュリティについてのアドバイスをいやというほど聞かされているため、ユーザーは実際には、パスワードを書き留めるよりも、どのシステムでも同じパスワードを使用した方がよいと考えています。

実は、すべてのセキュリティは 1 つの弱点に行き着きます。たとえば、企業の仮想プライベート ネットワーク (VPN) アクセスを考えてみましょう。これまで私は、さまざまな VPN テクノロジについての話題や、信じられないほど強力ですが信じられないほど低速な暗号化のメリットについてベンダが説明するベンダ評価、攻撃者がパケットを傍受してその暗号化を解除することを確実に防ぐための暗号化キーの変更方法など、数多くの話題にかかわってきました。

しかし、そのどれも、完全に的はずれです。攻撃者は、現在利用可能なコンピューティング テクノロジを使用して 1 千万年もかかるような、パケット ストリームの暗号化解除を試みたりはしません。クラックに 1 億年もかかるような暗号化を行うために、桁違いにネットワークを低速にすることに本当に価値があるのでしょうか。正直なところ、だれかが今から 1 億年 (または今から 1 千万年でも) かけて、私の仕事上の電子メールの暗号化を何とか解除したとしても、特に気になりません。

暗号化は、実に興味深い弱点ではないでしょうか。攻撃者は、おそらく、この簡単な脆弱性、つまりユーザー パスワードは前述のようなパスワードの 1 つであることが多いという事実を利用するでしょう。

すべてのユーザーが 6 ~ 8 文字のパスワードを使用していれば、信じられないほど強力な暗号化は、実際にはそれほど重要ではありません。したがって、現在は、スマート カードやワンタイム PIN コード ジェネレータなど、より強力な認証方法を使用する方向へと向かっています。

これらは、大幅な改善につながりますが、必ずしもセキュリティが強化されるとは限りません。たとえば、スマート カードは、紛失したり自宅に忘れる可能性が高くなります。ワンタイム PIN コード ジェネレータは、バッジ ホルダーにぴったり収まり、首から提げてもおしゃれです。次回通りの向かいにあるコーヒー ショップにコーヒーを買いに行くときに、あなたの現在のワンタイム PIN を確認し、バッジからあなたのユーザー名を読み取り、後は会社のネットワークにあなたを偽装して接続するために必要なものは実に細かいランダム度だけですが、これを推測しようとする人を見つけられるかどうか確認してみてください。

鉄則 5 は、まず間違いなく現在でも有効ですし、今後も有効であり続けるでしょう。しかし、これはかなり一般化できると思います。強力なセキュリティを台無しにするのは、弱いパスワードだけではありません。より一般的には、"弱い認証" や、さらには "弱点" により、強力なセキュリティが台無しになると言うことができます。

大半の IT セキュリティの専門家は、一歩引いて、より広い視野で物事を見ていないという罪を犯しています。私たちは問題の細部、特に強力なセキュリティによって楽に解決できるものにこだわりがちです。実装しているすべてのテクノロジを台無しにするような、対処されていない、または考えられてさえいない体系的な弱点があることに気が付けずにいることが多すぎます。

たとえば、どれほど多くの組織が、ユーザーが使用できるリムーバブル デバイスを規制しようとしながら、Secure Shell (SSH) や暗号化電子メールの送信接続は許可しているか考えてみてください。暗号化を使用してデータを読み取ることさえできない状態でデータ送信を許可している場合に、リムーバブル デバイスを規制することで、実際にどれほどのデータ損失リスクを緩和できるでしょうか。これは、私たちセキュリティの専門家が、生き延び、繁栄することになっているのなら、解決する必要がある最大の問題の 1 つです。

鉄則 #6:コンピュータのセキュリティが守られているかどうかは、その管理者が信頼できるかどうかにかかっている

現在でも、管理者に対してのみ機能する攻撃や、さらには、既に管理者でなければ機能しない攻撃についての報告が続いていることに驚きます。この記事は、Black Hat 2008 カンファレンスからの帰路に空港で座って執筆しています。このカンファレンスでも、「ルート アクセスがある場合、システムを乗っ取る方法はこれだ」ということを前提としたプレゼンテーションを見ました。

一方、より人目を盗んだやり方ですが、既にシステムを変更できる権利がある場合に、システムを変更できる方法が、一部の人が思いつく最悪のことであることを知りほっとしました。その一方で、人々がそれがいかに意味のないことであるかを理解できず、攻撃の新しい方法を考案しようと取り組み続け、さらに重要なことに攻撃からの保護にかけられる貴重な時間とエネルギーが失われているのを見て、フラストレーションを感じました。

事実は非常に単純です。管理者 (ルート、スーパー ユーザー、または何かしら管理者と呼ばれるその他の役割) であるユーザーは、そのシステムの世界では全能であるということです。このユーザーはどんなことでもできるのです。

このような悪意のあるユーザーがたくらむことは何であれ、それを実行するための方法は大胆なものも気付かれにくいものも含め確かにあります。しかし、根本的な事実はまったく変わりません。悪意のある管理者が検出されたくないと思うことを、効果的に検出することはできないということです。このようなユーザーは、自分の形跡を隠し、どのような操作でも他のユーザーが実行したように見せかける手段を手にしています。

したがって、鉄則 6 は、少なくともあるレベルでは、現在も有効です。コンピュータに対する絶対的な力を付与された個人が悪意のあるユーザーであった場合、そのコンピュータは完全にあなたのものではなくなっています。まさしく、コンピュータのセキュリティが守られているかどうかは、その管理者が信頼できるかどうかにかかっているのです。

ただし、いくつか考慮すべき点があります。まず、コンピュータの観点からすると、管理者という概念は、その役割が付与された個人というだけではありません。その役割のセキュリティ コンテキストで実行されるソフトウェアも含まれます。また、ひいては、管理者の役割には、このようなソフトウェアの作成者も含まれます。

このことは重要です。鉄則 6 で、コンピュータのセキュリティが守られているかどうかは、その管理者が信頼できるかどうかにかかっているというとき、一見したよりもはるかに大きな意味があります。コンピュータに関する限り、管理者は、管理ユーザーのセキュリティ コンテキスト内で実行するあらゆるプロセスであることを決して忘れないでください。そのユーザーが実際にコードの実行を意図しているかどうかと、そのコードを使用して損害を与えることを意図しているかどうかは、関係ありません。

一般ユーザーが管理者としてではなく Windows ベースのコンピュータを現実的に操作できるようになったのはごく最近のことなので、このことは非常に重要です。これが、Windows Vista のユーザー アカウント制御 (UAC) の主な目的の 1 つです。それでも、ユーザーの管理者コンテキストと非管理者コンテキスト間にセキュリティ上の境界はありません。その結果、その時点で管理者であるユーザーだけでなく、管理者になる可能性があるユーザーすべてに、鉄則 6 が当てはまります。

結果として、鉄則 6 を回避できる唯一の方法は、完全に管理者にはならず、完全な標準ユーザーとして操作を行うことです。残念ながら、これは Windows Vista でも既定の構成ではなく、実際には、多くの OEM は完全に UAC を無効にしています。

ただし、UAC は今後の展望を多少示しています。UAC の最も目につく機能は、図 2 に示す昇格プロセスです。ただし、最も重要な戦略上のメリットは、管理者への昇格ではなく、そもそも管理者にならなくても有効にコンピュータを操作できることにあります。Windows Vista では、これを実現するためのいくつかの機能強化が施されています。たとえば、それまでのバージョンの Windows と異なり、管理者でなくてもタイム ゾーンを変更できるため、旅行者を非管理者にできます。さらに、このような機能強化が導入されると予想されます。

fig02.gif

図 2 最も目立つが最も重要でない可能性がある UAC の機能の昇格時のプロンプト (画像をクリックすると拡大表示されます)

鉄則 6 は現在でも有効ですし、将来も有効でしょう。ただし、ユーザーがコンピュータを非管理者として操作できる世界へ切り替えることが、鉄則 6 を緩和できる主要因の 1 つです。もう 1 つの要因は非常に新しいもので、必須のアクセス制御システムです。

必須のアクセス制御システムでは、オブジェクトにラベルが付けられ、オブジェクトのラベルを変更できる方法について、厳格な規則が用意されます。管理者の直接制御とは別に、ソフトウェアが、オブジェクトのラベルに従ってオブジェクトにセキュリティを適用します。厳密に言えば、現在の実装では、通常、管理者はさまざまな裏技を使用してこのような制御を上書きできます。

しかし、基本原理は見込みのあるもので、いつの日か管理者が実行できる操作を制限できるようになる可能性があります。ただし、管理者が実行できる操作を制限できるようになった場合でも、このようなユーザーが本当の意味で管理者ではなくなったかどうかについては議論があるところです。したがって、鉄則 6 は明らかに不変です。

鉄則 7: 暗号化されたデータのセキュリティが守られているかどうかは、解読キーのセキュリティにかかっている

鉄則 7 は、すべての鉄則の中で最も議論の余地がないものである可能性があります。暗号化は、多くのセキュリティの問題に対する万能薬だと見られることが多すぎます。しかし、実際には、暗号化はセキュリティの世界では価値のあるツールですが、私たちが直面する大半の問題に対して単独のソリューションではありませんし、今後もそうなることはないでしょう。

暗号化は、あらゆるところで使用されています。Windows では、パスワード、ファイル、Web サーフィン、および認証に暗号化が使用されています。すべての暗号化が元に戻せるように設計されているわけではありませんが、元に戻せる暗号化の重要な例としては、暗号化ファイル システム (EFS) や、保存されたパスワードとユーザー名に使用される資格情報キャッシュなどがあります (図 3 参照)。

fig03.gif

図 3 Windows Vista の資格情報キャッシュの暗号化による保護 (画像をクリックすると拡大表示されます)

EFS も資格情報キャッシュも、ユーザーのパスワードを基にした暗号化キーによって保護されます。このため、いくつか暗示される問題があります。まず、ユーザーのパスワードがリセット (古いパスワードを入力せずに新しいパスワードに設定) された場合、EFS と資格情報キャッシュに保存されているデータは、回復キーが割り当てられていない限り、すべて失われます。

しかし、ここでより重要なことは、暗号化自体は非常に強力なキーとプロトコルを使用していますが、キーのセキュリティはユーザーのパスワードに依存していることです。つまり、データのセキュリティが守られているかどうかは、パスワードがどれほど強力であるかにかかっています。この場合は 2 次解読キー (別の解読キーを解読するキー) ですが、事実上、パスワードは解読キーです。

この点は、きわめて重要です。このような依存関係チェーンは、IT の世界ではあらゆるところにあります。数年前、VeriSign に対してソーシャル エンジニアリング攻撃がしかけられ、マイクロソフトの名のもとに 2 つのコード署名証明書が取得されました。コード署名証明書は、事実上、証明書に指定されているエンティテに暗号化キーがあることを確認するために使用される解読キーです。

ただし、この場合、証明書を要求したユーザーが、証明書に指定されているエンティティではありませんでした。つまり、攻撃者は、別のユーザー名での署名キーを手に入れました。これらのキーは安全であったかもしれませんが、依存関係チェーンの残りの部分を分析すると、このような致命的な欠点が見つかります。

これはすべて、次の 1 点を実証するものです。つまり、解読キーはデータのセキュリティにおいては非常に重要ですが、解読キー自体は、はるかに弱いシークレットでしか保護されていない可能性があるということです。これまで、考えられる限り最強の暗号化を組み込み、解読キーは別のセキュリティ手法を使用して保護していますが、この 2 層目に重大なセキュリティ ホールがあることに気付いていないシステムを、いやというほど見てきました。暗号化を実装するときは、確実に保護のチェーン全体を分析する必要があります。単に暗号化するだけでは、データのセキュリティは確保されません。

したがって、鉄則 7 は現在も有効です。これは、10 ある鉄則のうち、最もゆるぎのない鉄則の 1 つです。実際、この分野で物理の法則に最も近いものです。また、すべての人にとって教訓となり、機密データの保護チェーン全体を分析する必要があることを示すものでもあります。したがって、可能な限り強力に保護されていないキーを使用していてもかまいませんが、これらのキーは、そのレベルの保護しか必要としないデータの暗号化にのみ使用してください。

まとめ

これまでのところ、セキュリティに関する鉄則は、7 つのうち 7 つとも有効です。これまで確認した各鉄則は、これだけ長い年数を経た後でも有効です。また、近いうちに大きくその有効性が反証されることはないと思われます。

実際、これらの鉄則は、見事な先見の明を示しています。これまでのところで時代に合わなくなっているのは 4 番目のものですが、前述のとおり、それでもこれは鉄則と見なされるべきでしょう。

来月は、このシリーズの最終回として、鉄則 8、9、10 を検証します。また、これらの鉄則によって対処しきれていないセキュリティ分野についても取り上げます。

Jesper M. Johansson は、セキュリティ ソフトウェアの開発に取り組むソフトウェア アーキテクトで、TechNet Magazine の編集にも携わっています。管理情報システムの博士号を持ち、セキュリティ分野で 20 年以上の経験があります。また、エンタープライズ セキュリティの Microsoft Most Valuable Professional (MVP) でもあります。最新の著書には、『Windows Server 2008 Security Resource Kit』があります。