3. The Internet Threat Model (インターネット脅威モデル)
3. The Internet Threat Model (インターネット脅威モデル)
THREAT MODEL (脅威モデル) は, 攻撃者がリソースに対して展開できると仮定される能力を記述する. 攻撃者が情報, 計算能力, システムの制御の観点で利用できるリソースなどを含めるべきである. 脅威モデルの目的は二つある. 第一に, 関心のある脅威を特定したい. 第二に, 一部の脅威を明示的に範囲外としたい. ほぼすべてのセキュリティシステムは, 十分に献身的で資源のある攻撃者には脆弱である.
インターネット環境にはかなりよく理解された脅威モデルがある. 一般に, プロトコル交換に関与するエンドシステム自体は侵害されていないと仮定する. エンドシステムの一方が侵害されているときの攻撃から保護することは, 並外れて困難である. しかし, そのような状況下で被害の程度を最小化するプロトコルを設計することは可能である.
対照的に, 攻撃者はエンドシステムが通信する通信チャネルをほぼ完全に制御していると仮定する. これは, 攻撃者がネットワーク上の任意の PDU (Protocol Data Unit) を読み, 検知不能に除去, 変更, または偽造パケットを回線へ注入できることを意味する. 信頼できる機械から見えるパケットを生成できることを含む. したがって, 通信したいエンドシステム自体が安全でも, インターネット環境はそのシステムからのパケットが実際にそうであるという保証を提供しない.
PDU の意味はレベルごとに異なることを理解することが重要である. IP レベルでは PDU は IP パケットである. TCP レベルでは TCP セグメントである. アプリケーション層では, ある種のアプリケーション PDU である. たとえば電子メールのレベルでは, RFC-822 メッセージまたは単一の SMTP コマンドを意味し得る. HTTP レベルでは, リクエストまたはレスポンスを意味し得る.
3.1. Limited Threat Models (限定的脅威モデル)
述べたとおり, 資源のある献身的な攻撃者は通信チャネル全体を制御し得る. しかし, より少ないリソースの攻撃者によって実施され得る攻撃は多数ある. 現在知られている攻撃の多くは, ネットワークに限定的な制御しかない攻撃者によって実施され得る. たとえばパスワード盗聴攻撃は, 任意のパケットを読めるだけの攻撃者によって実施され得る. これは一般に PASSIVE ATTACK (受動的攻撃) [INTAUTH] と呼ばれる.
対照的に, Morris のシーケンス番号推測攻撃 [SEQNUM] は, 任意のパケットを書き込めるが読めない攻撃者によって実施され得る. 攻撃者がネットワークに書き込むことを要する攻撃はすべて ACTIVE ATTACK (能動的攻撃) として知られる.
したがって, 攻撃を整理する有用な方法は, 攻撃の実施に必要な能力に基づいて分類することである. 本節の残りはこれらのカテゴリを記述し, 各カテゴリの例をいくつか示す.
3.2. Passive Attacks (受動的攻撃)
受動的攻撃では, 攻撃者はパケットをネットワークから読むが書き込まない. そのような攻撃を実施する最も簡単な方法は, 単に被害者と同じ LAN 上にいることである. Ethernet, 802.3, FDDI を含む最も一般的な LAN 構成の多くでは, 回線上の任意の機械が同一 LAN 上の他の任意の機械宛てのすべてのトラフィックを読み取れる.
スイッチングハブはこの種の盗聴を実質的に困難にする. なぜなら機械宛てのトラフィックはその機械があるネットワークセグメントにのみ送られるからである.
同様に, 2 つの被害者機械間の通信経路上のホストを制御する攻撃者は, その通信に対する受動的攻撃を実施できる. ルーティング基盤を侵害してトラフィックが侵害された機械を通過するよう特に手配することも可能である. これは, 被害者機械に対する受動的攻撃を容易にするためにルーティング基盤に対する能動的攻撃を伴い得る.
無線通信チャネルは特別な考慮を要する. 特に 802.11 等を用いる無線 LAN の近年の普及と成長により. データは周知の電波周波数で単にブロードキャストされるため, 攻撃者はそれらの伝送を受信できればよい. そのようなチャネルは受動的攻撃に特に脆弱である. 多くのそのようなチャネルは暗号保護を含むが, しばしば質が非常に悪くほぼ無用に近い [WEP].
一般に, 受動的攻撃の目標は, 送信者と受信者が秘匿したい情報を得ることである. この私的情報には, 電子世界で有用な資格情報や, 機密の事業情報など外部世界で有用なパスワードや資格情報が含まれ得る.
3.2.1. Confidentiality Violations (機密性侵害)
受動的攻撃の古典的例は, 本質的に私的なデータを回線から盗聴することである. たとえば SSL が広く利用可能だが, 多くのクレジットカード取引は依然として平文でインターネットを横断する. 攻撃者はそのようなメッセージを盗聞しクレジットカード番号を回復でき, 詐取に利用できる. さらに, 機密の事業情報は電子メールで平文でルーチン的に送信される.
3.2.2. Password Sniffing (パスワード盗聴)
受動的攻撃の別の例は PASSWORD SNIFFING (パスワード盗聴) である. パスワード盗聴は, リソースの不正使用を得ることを目指す. [TELNET], [POP], [NNTP] を含む多くのプロトコルは, クライアントをサーバーに認証するために共有パスワードを用いる. しばしばこのパスワードは通信チャネル上を平文でクライアントからサーバーへ送信される. このトラフィックを読める攻撃者はパスワードを捕捉し REPLAY (再生) できる. 言い換えれば, 攻撃者はサーバーへの接続を開始し, 捕捉したパスワードを用いてクライアントを装いログインできる.
ログイン段階の攻撃は能動的だが, 実際のパスワード捕捉段階は受動的であることに注意せよ. さらに, サーバーが接続の発信元アドレスを検査しない限り, ログイン段階はネットワークの特別な制御を要しない.
3.2.3. Offline Cryptographic Attacks (オフライン暗号攻撃)
多くの暗号プロトコルは OFFLINE ATTACK (オフライン攻撃) の対象となる. そのようなプロトコルでは, 攻撃者は被害者の秘密鍵で処理されたデータを回復し, その鍵に対する暗号解析攻撃を実施する. パスワードは典型적으로エントロピーが低いため特に脆弱な標的である. 人気のあるパスワードベースのチャレンジ応答プロトコルの多くは DICTIONARY ATTACK (辞書攻撃) に脆弱である. 攻撃者はチャレンジ応答のペアを捕捉し, 正しい応答を生成するパスワードが見つかるまで一般的な語のリスト (辞書ファイルなど) のエントリを試す.
ローカルネットワークで NIS が用いられる場合, 同様の攻撃が実施され得る. Unix パスワードは一方向関数で crypt されるが, そのような crypt 済みパスワードを破るツールが存在する [KLEIN]. NIS が用いられると crypt 済みパスワードがローカルネットワーク上を送信され, 攻撃者はパスワードを盗聞して攻撃できる.
歴史的に, 小さなオペレーティングシステムのセキュリティ上の穴を悪用して能動的攻撃によりパスワードファイルを回復することも可能であった. その穴は前述のオフライン・パスワード回復技法を用いて実アカウントへブートストラップされ得る. したがって低レベルの能動的攻撃とオフライン受動的攻撃を組み合わせる.
3.3. Active Attacks (能動的攻撃)
攻撃がネットワークへのデータ書き込みを伴うとき, これを ACTIVE ATTACK (能動的攻撃) と呼ぶ. IP を IPsec なしで用いると送信者アドレスの認証がない. その結果, 攻撃者は選んだ送信元アドレスでパケットを作成することは容易である. これを SPOOFING ATTACK (スプーフィング攻撃) と呼ぶ.
一定の状況では, そのようなパケットはネットワークによってフィルタされ得る. たとえば多くのパケットフィルタリング・ファイアウォールは, 内部ネットワークの送信元アドレスを持つパケットが外部インターフェースに到着するのをすべて除外する. しかしながら, ファイアウォール内の攻撃者に対する保護は提供しないことに注意せよ. 一般に, 設計者は攻撃者がパケットを偽造できると仮定すべきである.
しかし, パケットを偽造する能力は, 任意のパケットを受信する能力と必ずしもセットではない. 実際, 偽造パケットを送れるが応答を受信できない能動的攻撃がある. これらを BLIND ATTACK (ブラインド攻撃) と呼ぶ.
すべての能動的攻撃がアドレス偽装を要するわけではないことに注意せよ. たとえば TCP SYN サービス拒否攻撃 [TCPSYN] は送信者のアドレスを隠さずに成功し得る. しかし, 攻撃が発見された場合に身元を隠すためにアドレスを偽装するのは一般的である.
各プロトコルは特定の能動的攻撃に脆弱だが, 経験によれば, 多数の共通パターンの攻撃が既知のプロトコルに適用され得る. 次の節はそのパターンのいくつかを記述し, 既知のプロトコルに適用した具体例を示す.
3.3.1. Replay Attacks (再生攻撃)
REPLAY ATTACK (再生攻撃) では, 攻撃者は一連のメッセージを回線から記録し, もともとそれらを受信した相手へ再生する. 攻撃者がメッセージを理解する必要はないことに注意せよ. 捕捉して再送すればよい.
たとえば S/MIME メッセージがクレジットカード購入や株式取引などのサービスを要求するために用いられる場合を考えよ. 攻撃者は被害者を困らせるためだけにサービスを 2 回実行させたいと望み得る. メッセージを読めなくても捕捉して再生でき, 取引が 2 回実行される原因となり得る.
3.3.2. Message Insertion (メッセージ挿入)
MESSAGE INSERTION (メッセージ挿入) 攻撃では, 攻撃者は選んだ性質の集合を持つメッセージを偽造しネットワークへ注入する. しばしばこのメッセージは攻撃者の身元を隠すために偽造された送信元アドレスを持つ.
たとえばサービス拒否攻撃は, 対象ホスト向けの偽の TCP SYN パケットの列を挿入することで実施され得る. 対象ホストは自らの SYN で応答し新しい接続のためのカーネルデータ構造を割り当てる. 攻撃者は 3 ウェイ・ハンドシェイクを完了せず, 割り当てられた接続エンドポイントはカーネルメモリを占有したままである. 典型的な TCP スタック実装はこの「半開」状態の接続を限られた数に制限し,
この上限に達すると正当なホストからの接続であってもこれ以上開始できない. この攻撃はブラインド攻撃であることに注意せよ. 攻撃者は被害者の SYN を処理する必要がないからである.
3.3.3. Message Deletion (メッセージ削除)
MESSAGE DELETION (メッセージ削除) 攻撃では, 攻撃者はメッセージを回線から除去する. Morris のシーケンス番号推測攻撃 [SEQNUM] はしばしばメッセージ削除攻撃を成功させるために要する. このブラインド攻撃では, 偽装されているアドレスのホストは, 攻撃対象ホストから偽の TCP SYN パケットを受信する. この SYN の受信は RST を生成し, 不正な接続を破棄する. 攻撃を成功させるためにこのホストが RST を送らないようにするには, Morris はこのホストをフラッドしてキュー溢れを起こし SYN パケットが失われ応答されないようにすることを述べる.
3.3.4. Message Modification (メッセージ改変)
MESSAGE MODIFICATION (メッセージ改変) 攻撃では, 攻撃者はメッセージを回線から除去し, 変更し, ネットワークへ再注入する. 攻撃者がメッセージの一部のデータを送りたいが一部を変えたい場合, この種の攻撃は特に有用である.
攻撃者がインターネット越しに注文した商品を攻撃したい場合を考えよ. 被害者のクレジットカード番号を持たないので, 被害者が注文するのを待ち, 配送先住所 (と商品説明の可能性) を自分のものに置き換える. この特定の攻撃は CUT-AND-PASTE (切貼り) 攻撃として知られる. 攻撃者が元メッセージからクレジットカード番号を切り取り新メッセージに貼り付けるからである.
切貼り攻撃の別の興味深い例は [IPSPPROB] が提供する. IPsec ESP を MAC なしで用いると, 攻撃者は同一機械上の被害者向けに暗号化されたトラフィックを読み取り得る. 攻撃者は暗号化された IP パケットに自分が制御するポートに対応する IP ヘッダを付加する. パケットがホストで受信されると自動的に復号され攻撃者のポートへ転送される. 類似の技法でセッション・ハイジャック攻撃が実施され得る. 暗号を用いるときは常にメッセージ認証を用いればこれらの攻撃は避けられる. この攻撃は (1) 損傷パケットを生成するこの攻撃のため MAC 検査が用いられていないこと, (2) ホスト間 SA が用いられていること, ユーザー間 SA では SA に関連付けられたポートと宛先ポートの不一致が生じるため, の両方が成り立つ場合にのみ機能することに注意せよ. 受信機がシングルユーザであればこの攻撃は実行不可能である.
3.3.5. Man-In-The-Middle (中間者)
MAN-IN-THE-MIDDLE (中間者) 攻撃は上記の技法を特別な形で組み合わせる: 攻撃者は送信者として受信者に, 受信者として送信者に装うために通信ストリームを侵害する:
Alice と Bob が考えていること: Alice <----------------------------------------------> Bob
実際に起きていること: Alice <----------------> Attacker <----------------> Bob
これは上記の形態の攻撃とは根本的に異なる. データストリームではなく通信当事者の同一性を攻撃するからである. したがって, 通信ストリームの完全性を提供する多くの技法は中間者攻撃に対して不十分である.
中間者攻撃は, プロトコルが PEER ENTITY AUTHENTICATION (ピア実体認証) を欠くとき可能である. たとえば攻撃者が TCP ハンドシェイク中にクライアントの TCP 接続をハイジャックできれば (サーバーより先にクライアントの SYN に応答することで), 攻撃者はサーバーへの別接続を開き中間者攻撃を開始できる. ローカルネットワークでは ARP スプーフィングにより中間者攻撃を容易に実施でき, 攻撃者は被害者の IP アドレスと自分の MAC アドレスで ARP を偽造する. この種の攻撃を実施するツールは容易に入手できる.
取引の一方だけを認証すれば中間者攻撃を防ぐのに十分であることに注意せよ. そのような状況ではピアは一方のピアだけが認証される関連付けを確立できる. そのようなシステムでは, 攻撃者は未認証のピアを装って関連付けを開始できても, 正当な接続で送られるデータを送受信したりアクセスしたりはできない. サーバーだけを認証すればよい (またはクライアントがクレジットカード番号など非暗号の仕組みで独立に認証される) Web 電子商取引のような文脈では許容可能である.
3.4. Topological Issues (トポロジ上の論点)
実務では, 攻撃者がすべてのパケットを等しく容易に読み生成できるという仮定は偽である. インターネットは完全接続ではないからである. これには主に 2 つの含意がある.
3.5. On-path versus off-path (経路上対経路外)
1 つのホストから別のホストへデータグラムを送信するには, 一般にいくつかの中間リンクとゲートウェイを横断しなければならない. そのようなゲートウェイは, その経路に沿って送信される任意のデータグラムを自然に読み, 変更し, 除去できる. 経路上にいれば幅広い攻撃を実施することがはるかに容易になる.
経路外ホストはもちろん任意のホストから来たように見える任意のデータグラムを送信できても, 他のホスト向けのデータグラムを必ずしも受信できない. したがって, 攻撃がデータを受信できることに依存する場合, 経路外ホストはまずトポロジを侵害して自らを経路上に置く必要がある. 不可能ではないが, たやすいことではない.
アプリケーションプロトコルの設計者は, すべての攻撃者が経路外であると仮定してはならない (MUST NOT). 可能ならば, 攻撃者がネットワークを完全に制御する攻撃に耐えるようプロトコルを設計すべきである (SHOULD). しかし, 設計者は経路外および経路上の攻撃者の両方が実施し得る攻撃により重みを置くことが期待される.
3.6. Link-local (リンクローカル)
経路上の特別なケースの 1 つは同一リンク上にいることである. ある状況では, ローカルネットワーク上のホストとそうでないホストを区別したい. その標準的技法は IP TTL 値の検証である [IP]. TTL は各フォワーダによってデクリメントされなければならないため, プロトコルは TTL を 255 に設定することを要求し, すべての受信者が TTL を検証することを要求できる. 受信者は適合パケットが同一リンクから来たと信じる一定の理由を持つ. トンネリングシステムの存在下では TTL をデクリメントせずにパケットを通すことがあるため, この技法は注意して用いなければならないことに注意せよ.