11. セキュリティ上の考慮事項 (Security Considerations)
近隣探索は、ネットワーク運用を妨害したり、トラフィックをリダイレクトしたりする可能性のある攻撃の対象となります。このセクションでは、近隣探索に対する脅威を分析し、それらを軽減するメカニズムについて説明します。
11.1. 脅威分析 (Threat Analysis)
11.1.1. リンク上の脅威 (On-Link Threats)
近隣探索の主なセキュリティ上の懸念は、同じリンク上のノードが偽装メッセージを送信して他のノードを攻撃できることです。可能な攻撃には以下が含まれます:
リダイレクト攻撃 (Redirect Attacks):
- 攻撃者が被害者に Redirect メッセージを送信し、被害者が正当なファーストホップルータではなく攻撃者を経由してトラフィックを送信するようにします。
- 攻撃者は、リダイレクトされたトラフィックを傍受、変更、またはドロップできます。
Router Solicitation/Advertisement 攻撃:
- 攻撃者が以下を含む Router Advertisement を送信してルータになりすまします:
- 無効なプレフィックス情報、ホストに誤ったアドレスを設定させる
- 短い Router Lifetime 値、ホストに利用可能なルータがないと信じさせる
- 変更されたホップリミット、MTU、または到達可能性パラメータ
Neighbor Solicitation/Advertisement 攻撃:
- 攻撃者が偽装された Neighbor Advertisement を送信して、被害者ノードの Neighbor Cache を汚染します。
- これにより、別のノード宛てのトラフィックを攻撃者にリダイレクトできます。
- 攻撃者は、実際には別のノードに属する IP アドレスを所有していると主張できます。
重複アドレス検出 (DAD) 攻撃:
- 攻撃者がすべての DAD Neighbor Solicitation に応答し、どのノードもアドレスを設定できないようにします。
- これはアドレス設定に対するサービス拒否攻撃を構成します。
11.1.2. サービス拒否攻撃 (Denial-of-Service Attacks)
近隣探索のいくつかの側面は、サービス拒否のために悪用される可能性があります:
キャッシュ枯渇 (Cache Exhaustion):
- 攻撃者が多数の偽装アドレスからのパケットでノードをフラッディングし、ノードに Neighbor Cache エントリを作成させ、Neighbor Solicitation を送信させます。
- これによりメモリとネットワーク帯域幅が消費されます。
近隣探索メッセージフラッディング (Neighbor Discovery Message Flooding):
- 攻撃者が近隣探索メッセージでリンクをフラッディングし、帯域幅と処理リソースを消費します。
Router Solicitation フラッディング:
- 複数の攻撃者または多数の偽装アドレスを持つ単一の攻撃者が Router Solicitation でルータをフラッディングします。
- これにより、応答の負担でルータを圧倒する可能性があります。
11.1.3. オフリンク脅威 (Off-Link Threats)
近隣探索メッセージはリンクローカルであり、ルータによって転送されるべきではありませんが、物理媒体へのアクセス権を持つ攻撃者(例:侵害されたインフラストラクチャを通じて)は、ターゲットリンクに直接接続されていなくても攻撃を開始できます。
11.2. 近隣探索メッセージの保護 (Securing Neighbor Discovery Messages)
11.2.1. SEcure Neighbor Discovery (SEND)
SEcure Neighbor Discovery (SEND) [RFC3971] は、近隣探索に暗号化セキュリティを提供します。SEND は以下を使用します:
- 暗号生成アドレス (Cryptographically Generated Addresses, CGA): 公開鍵を IPv6 アドレスに暗号的にバインドするアドレスで、送信者がアドレスを所有していることを確認できます。
- RSA 署名 (RSA Signatures): すべての重要な近隣探索メッセージは、送信者の秘密鍵で署名されます。
- タイムスタンプオプション (Timestamp Options): リプレイ攻撃を防ぎます。
- Nonce オプション: solicitation/advertisement 交換の鮮度を提供します。
- 認証委任 (Authorization Delegation): ルータがプレフィックスのルータとして機能することを許可されていることを証明できます。
SEND は、以下を含むほとんどの近隣探索攻撃に対して強力な保護を提供します:
- リダイレクト攻撃
- Neighbor/Router Advertisement 偽装
- プレフィックス情報の操作
SEND の制限事項:
- SEND は公開鍵インフラストラクチャを必要とし、計算量が多いです。
- すべてのサービス拒否攻撃(例:メッセージフラッディング)から保護するわけではありません。
- 複雑さのため、展開は限られています。
11.2.2. リンク層セキュリティ (Link-Layer Security)
リンク層セキュリティメカニズムは、近隣探索の保護を提供できます:
IEEE 802.1X ポートベース認証:
- ネットワークアクセスを許可する前にデバイスを認証します。
- 不正なデバイスが近隣探索メッセージを送信するのを防ぎます。
MACsec (IEEE 802.1AE):
- リンク層の暗号化と認証を提供します。
- 近隣探索を含むすべてのトラフィックを盗聴と改ざんから保護します。
ワイヤレスセキュリティ (WPA2/WPA3):
- ワイヤレストラフィックを暗号化し認証します。
- 攻撃者がワイヤレスリンク上で偽装された近隣探索メッセージを注入するのを防ぎます。
リンク層セキュリティの利点:
- 上位層プロトコルに対して透過的です。
- SEND よりも効率的である可能性があります。
- より広範囲の攻撃から保護します。
制限事項:
- 常に利用可能ではありません(例:共有イーサネットセグメント上)。
- 正当なリンクアクセスを持つ侵害されたデバイスからの攻撃から保護しません。
11.2.3. Router Advertisement Guard (RA Guard)
RA Guard [RFC6105] は、Router Advertisement メッセージをフィルタリングするスイッチ/ルータベースのメカニズムです:
- スイッチは、どのポートが正当なルータに接続されているかを識別するように設定されます。
- 他のポートからの Router Advertisement はドロップされます。
- 不正なルータ攻撃から保護します。
制限事項:
- 不正な Router Advertisement からのみ保護します。
- IPv6 拡張ヘッダーを使用してバイパスできます(RFC 7113 によって緩和されます)。
- ネットワークインフラストラクチャの適切な設定が必要です。
11.2.4. 送信元アドレス検証 (Source Address Validation)
送信元アドレス検証の実装は、一部の攻撃を軽減できます:
入力フィルタリング (Ingress Filtering):
- ルータは、偽装された送信元アドレスを持つパケットがネットワークに入るのを防ぐために、入力フィルタリング(BCP 38 / RFC 2827)を実装すべきです。
リバースパスフォワーディング (RPF) チェック:
- 一部の形式のアドレス偽装を検出および防止するのに役立ちます。
制限事項:
- 主にオフリンク攻撃から保護します。
- オンリンク偽装に対してはあまり効果的ではありません。
11.3. 実装に関する考慮事項 (Implementation Considerations)
11.3.1. レート制限 (Rate Limiting)
実装は以下に対してレート制限を実装すべきです (SHOULD):
- 近隣探索メッセージの処理
- 新しい Neighbor Cache エントリの作成
- トラフィックに応答した Neighbor Solicitation の送信
これにより、リソース枯渇に基づくサービス拒否攻撃を軽減します。
11.3.2. Neighbor Cache 管理 (Neighbor Cache Management)
実装は以下を行うべきです (SHOULD):
- Neighbor Cache エントリの枯渇を防ぐためにガベージコレクションを実装する。
- キャッシュスペースが制限されている場合、古いまたは不完全なエントリよりも到達可能なエントリを優先する。
- 信頼できないソースからの Neighbor Cache エントリ作成のレートを制限する。
11.3.3. Router Advertisement 処理 (Router Advertisement Processing)
ホストは以下を行うべきです (SHOULD):
- 疑わしいパラメータを持つ Router Advertisement を無視する(例:極端に短いライフタイム、無効なプレフィックス長)。
- Router Advertisement から学習したプレフィックス、ルート、およびその他の情報の数に制限を実装する。
- 異常な Router Advertisement パターンを管理者レビュー用にログに記録する。
11.3.4. Redirect メッセージ検証 (Redirect Message Validation)
ホストは以下を行わなければなりません (MUST):
- Redirect メッセージが現在のファーストホップルータから来ることを検証する。
- ターゲットアドレスがオンリンクであることを確認する。
- トラフィックをオフリンクにリダイレクトしようとする Redirect メッセージを処理しない。
11.4. 運用上の考慮事項 (Operational Considerations)
ネットワーク管理者は以下を行うべきです (SHOULD):
-
リンク層セキュリティの展開: 可能な場合、802.1X、MACsec、またはワイヤレスセキュリティを使用して近隣探索を保護します。
-
RA Guard の実装: スイッチとルータ上で、不正な Router Advertisement を防ぎます。
-
異常の監視: ネットワーク監視ツールを使用して、近隣探索トラフィックの異常なパターンを検出します。
-
ネットワークのセグメント化: VLAN やその他のセグメント化技術を使用して、潜在的な攻撃の範囲を制限します。
-
SEND の検討: 高セキュリティ環境では、複雑さにもかかわらず SEND の展開を評価します。
-
システムの最新化: 近隣探索の脆弱性に対処するセキュリティパッチと更新を適用します。
-
ユーザー教育: ネットワークスタッフに近隣探索攻撃を認識し対応するようにトレーニングします。
11.5. 将来の方向性 (Future Directions)
IETF での継続的な作業は、近隣探索セキュリティを改善し続けています:
- 軽量 SEND 代替案
- 強化された RA Guard メカニズム
- ネットワークアクセス制御システムとの統合
- 改善されたサービス拒否保護
ネットワーク管理者は、これらの開発について最新情報を入手し、標準化され利用可能になった新しいセキュリティメカニズムを展開すべきです。