インターネットへの常時接続が一般化する時代の流れの中で,インターネットからの脅威が強調されるようになりました。私たちWindowsユーザーは公開される修正パッチを適用し,ファイアウオールやウイルス対策ソフトを導入すれば,自分たちのシステムのセキュリティがある程度向上することは理解しています。
しかし,顕在化した脅威への対処法ではなく,脅威とはそもそも何なのか,それはどのような過程を経て発生するものなのか,といった基本的な問いへの回答が用意されているわけではありません。少なくとも,分かりやすく説明されているとは思えません。そこで今回は,米Microsoft技術陣の考えている脅威を検討し,「そもそも脅威とは何か」を考えてみることにします。
脅威のモデル化
Microsoft社は,こちらのサイトで,「Threat Modelling Tool」(以後ツール)という名称の,システム外部からの脅威をモデル化するツールを公開しています。2004月6月15日現在,ダウンロードできるツールのバージョンは1.0となっています。ダウンロード・サイズは6MB程度ですから,ダウンロードにかかる時間はそれほど負担になるものではありません。
このツールの担当開発者(以下ツール開発者)は,インターネットなどからの外部脅威を考える際には,次のような3つの視点が重要であることを強調しています。
視点1:攻撃者の視点を理解すること
視点2:システムの安全性を分析すること
視点3:脅威を分析し,緩和策を講じること
それではこれら3つの視点を順を追って,詳しくみてみましょう。
視点1:攻撃者の立場を理解すること
私たちWindowsユーザーはインターネット側からの攻撃を受ける立場にあります。攻撃者から自分のWindowsマシンを守りたい場合,攻撃者の行動パターンを予測することはたいへん重要なことです。ツール開発者は,攻撃者の行動パターンを次のように一般化しています。
「攻撃者は,ユーザー・システムのEntry Points経由でシステム内のAssetsを自分の意のままにしようと企む」
この文章に含まれるEntry Pointsは,攻撃者が攻撃時に利用するものであり,次のような具体例が紹介されています。
- オープン・ソケット
- RPCインタフェース
- Webサービス・インタフェース
ご覧のように,Entry Pointsというのは,基本的に,コンピュータとコンピュータ間のインタフェースや異種プラットフォーム間のインタフェースのすべてを指しているといってよいと思います。ご承知のように,インタフェースは本来,外部からのアクセスを可能とする技術と機能の総称であり,脅威への対策は簡単ではありません。
Windows XP Service Pack 2(SP2)は,不要なポート(アプリケーション・レベルでのインタフェース)をデフォルトで閉じる方針が採用されるといわれますが,デフォルトというのはユーザー個人のニーズに応じて変わるものです。このため,SP2では「例外」というものを設けています。例外の設定は,あくまでも個人判断で行われるものであり,その結果責任は本人が引き受けなければなりません。日ごろの地道な学習は欠かせません。
それでは次に,Assetsの意味を考えます。ツール開発者はAssetsを,外部からの攻撃目標と定義し,次のような例を紹介しています。
- プロセス情報
- データの整合性
プロセス情報に関してはなんとなくお分かりになると思いますが,データの整合性と脅威の関係はかなり漠然としています。ツール開発者は,文字列クラスを例に挙げています。文字列クラスは,文字列の大きさを自分自身で管理しています。もし文字列の大きさがシステム外部から変更されてしまった場合,それは得体の知れない文字列(整合性を欠いたデータ)となり,最悪の場合,バッファーオーバーラン(BOR)発生の原因となります。
このように,データの整合性というのは,私たちのAssets(技術資産や知的資産)の一部と考えられるものなのです。本連載ですでに触れたように,BORはプログラミング時のちょっとした不注意で発生してしまいます。この意味では,脅威モデルが無事完成したからといって,システム全体のデータの整合性が確保されたり,保証されることにはなりません。Microsoft社が公開する最新のセキュリティ情報への注意を怠ることはできません。それでは次に,システムの安全性をどのように分析するかを考えてみましょう。
視点2:システムの安全性を分析すること
ツール設計者は,システムの安全性を分析する際には,次の3つの視点が重要であると述べています。
視点1:ユース・シナリオの作成
視点2:前提と依存の確認
視点3:システムのモデリング
図1●Fabrikam Phone 1.0のシナリオ |
図2●Entry Points(インタフェース)のデータの流れを分析 |
図3●Phone 1.0での脅威の分析 |
右側のペインを見ると分かるように,ユース・シナリオは分かりやすく簡潔に記述されています。このシナリオは次の2点を伝えようとしています。
- Phone 1.0は信頼できない人々がいる環境に設置される可能性がある
- そのような環境では,Phone 1.0のアクセス制御機能を活用することが大切である
Phone 1.0の場合,ユース・シナリオは「Background Information」(一般背景情報)カテゴリに分類されていますから,製品の使い方を超えた情報も記述されているようです。視点2の前提と依存の確認は,「External Dependencies」と「Implementation Assumptions」カテゴリとしてそれぞれ分析されています。カテゴリ分類は開発製品に応じて決める性質を持っていますから,Phone 1.0例を参考にしながら,お時間のあるときに気軽に挑戦してみてはいかがでしょうか。
視点3のシステムのモデリングは,Entry Points(インタフェース)のデータの流れを分析し,その分析内容を図2[拡大表示]のようにVisioで表現しています。
筆者はVisioを使用した経験がほとんどありませんが,Visioユーザーの方はステンシルなどを組み込んでみるとよいと思います。それでは最後に,脅威をどのように分析するかをみてみましょう。
視点3:脅威を分析すること
一口に脅威といっても,その影響度に応じていろいろな種類の脅威があります。何らかの対策を事前に講じる場合,脅威そのものをより詳しく分析しておく必要があります。Phone 1.0サンプルでは,図3[拡大表示]のような分析を行っています。
Phone 1.0は電話機のようですから,通話盗聴という脅威が考えられます。このため,この例では,通話盗聴を「情報漏えい」と「権限昇格」に分類しています。そして,悪用されるインタフェースとして,「電話回線」と「受話器」を定義しています。
脅威の分析作業の基本的な流れは,脅威を具体的に分析しながら,その過程で,各種の情報を関連付けていくというものです。分析と関連付けの精度を高めていけば,脅威の緩和策を事前に打ち出すことができるかもしれません。Phone 1.0サンプルにはその他の脅威分析例も載っていますから,お時間のあるときにぜひ目を通してください。
今回取り上げた脅威のモデル化ツールは,私たちWindowsユーザーが直接使用するという性質のものではありません。しかし,脅威モデリングに関するちょっとした知識を身に付けておけば,例えば,バッファの未チェックが原因で発生したBORへの理解がかなり深まります。
本文で触れたように,BORは「データの整合性の喪失」という意味を持っています。データの整合性が失われれば,その後,どのような問題が発生するか分かりません。「データの整合性」は,脅威のモデル化作業だけではなく,コンパイラ・オプション,ライブラリ,コード・レビュー,テストなどさまざま技術要素と作業分担の上に成立するものです。BORは今後も発生する,と筆者は予想しています。
今回のまとめ
- インターネットからの脅威をモデル化するツールが公開された
- 脅威をモデル化するときには,攻撃者の視点分析が重要である
- 脅威には影響度に応じていろいろな種類がある
今回は以上で終了です。次回またお会いいたしましょう。ごきげんよう!