Network Working Group                                        S. Krishnan
Request for Comments: 5722                                      Ericsson
Updates: 2460                                              December 2009
Category: Standards Track
        
                 Handling of Overlapping IPv6 Fragments
        

Abstract

抽象

The fragmentation and reassembly algorithm specified in the base IPv6 specification allows fragments to overlap. This document demonstrates the security issues associated with allowing overlapping fragments and updates the IPv6 specification to explicitly forbid overlapping fragments.

ベースIPv6仕様で指定された断片化と再アセンブリアルゴリズムは、フラグメントが重複することを可能にします。この文書では、重複断片を可能に関連するセキュリティ上の問題を示して、明示的に重複断片を禁止するIPv6の仕様を更新します。

Status of This Memo

このメモのステータス

This document specifies an Internet standards track protocol for the Internet community, and requests discussion and suggestions for improvements. Please refer to the current edition of the "Internet Official Protocol Standards" (STD 1) for the standardization state and status of this protocol. Distribution of this memo is unlimited.

この文書は、インターネットコミュニティのためのインターネット標準トラックプロトコルを指定し、改善のための議論と提案を要求します。このプロトコルの標準化状態と状態への「インターネット公式プロトコル標準」(STD 1)の最新版を参照してください。このメモの配布は無制限です。

Copyright Notice

著作権表示

Copyright (c) 2009 IETF Trust and the persons identified as the document authors. All rights reserved.

著作権(C)2009 IETF信託とドキュメントの作成者として特定の人物。全著作権所有。

This document is subject to BCP 78 and the IETF Trust's Legal Provisions Relating to IETF Documents (http://trustee.ietf.org/license-info) in effect on the date of publication of this document. Please review these documents carefully, as they describe your rights and restrictions with respect to this document. Code Components extracted from this document must include Simplified BSD License text as described in Section 4.e of the Trust Legal Provisions and are provided without warranty as described in the BSD License.

この文書では、BCP 78と、この文書の発行日に有効なIETFドキュメント(http://trustee.ietf.org/license-info)に関連IETFトラストの法律の規定に従うものとします。彼らは、この文書に関してあなたの権利と制限を説明するように、慎重にこれらの文書を確認してください。コードコンポーネントは、トラスト法規定のセクション4.eに記載されており、BSDライセンスで説明したように、保証なしで提供されているよう簡体BSDライセンスのテキストを含める必要があり、この文書から抽出されました。

Table of Contents

目次

   1. Introduction ....................................................2
      1.1. Conventions Used in This Document ..........................2
   2. Overlapping Fragments ...........................................2
   3. The Attack ......................................................3
   4. Node Behavior ...................................................5
   5. Security Considerations .........................................5
   6. Acknowledgements ................................................5
   7. References ......................................................6
      7.1. Normative References .......................................6
      7.2. Informative References .....................................6
        
1. Introduction
1. はじめに

Fragmentation is used in IPv6 when the IPv6 packet will not fit inside the path MTU to its destination. When fragmentation is performed, an IPv6 node uses a fragment header, as specified in Section 4.5 of the IPv6 base specification [RFC2460], to break down the datagram into smaller fragments that will fit in the path MTU. The destination node receives these fragments and reassembles them. The algorithm specified for fragmentation in [RFC2460] does not prevent the fragments from overlapping, and this can lead to some security issues with firewalls [RFC4942]. This document explores the issues that can be caused by overlapping fragments and updates the IPv6 specification to explicitly forbid overlapping fragments.

IPv6パケットが宛先へのパスMTUの内側に収まらないときフラグメンテーションは、IPv6で使用されています。フラグメンテーションが行われた場合のIPv6基本仕様[RFC2460]のセクション4.5で指定されるように、IPv6ノードは、パスMTUに収まる小さな断片にデータグラムを打破するために、フラグメントヘッダを使用します。宛先ノードは、これらのフラグメントを受信し、それらを再構築します。 [RFC2460]で断片化のために指定されたアルゴリズムは、重複から破片を防ぐことはできませんが、これは、ファイアウォール[RFC4942]でいくつかのセキュリティ上の問題につながることができます。この文書では、重複断片に起因すると明示的に重複断片を禁止するIPv6の仕様を更新することができます問題を探ります。

1.1. Conventions Used in This Document
1.1. このドキュメントの表記規則

The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in [RFC2119].

この文書のキーワード "MUST"、 "MUST NOT"、 "REQUIRED"、、、、 "べきではない" "べきである" "ないもの" "ものとし"、 "推奨"、 "MAY"、および "OPTIONAL" はあります[RFC2119]に記載されているように解釈されます。

2. Overlapping Fragments
2.重複する断片

Commonly used firewalls use the algorithm specified in [RFC1858] to weed out malicious packets that try to overwrite parts of the transport-layer header in order to bypass inbound connection checks. [RFC1858] prevents an overlapping fragment attack on an upper-layer protocol (in this case, TCP) by recommending that packets with a fragment offset of 1 be dropped. While this works well for IPv4 fragments, it will not work for IPv6 fragments. This is because the fragmentable part of the IPv6 packet can contain extension headers before the TCP header, making this check less effective.

一般的に使用されるファイアウォールは、インバウンド接続のチェックを回避するために、トランスポート層ヘッダの一部を上書きしようとする悪意のあるパケットを取り除くために[RFC1858]で指定されたアルゴリズムを使用します。 [RFC1858]は1のフラグメントオフセットを持つパケットがドロップされることを推奨することにより(この場合、TCP)上位レイヤプロトコルに重複フラグメント攻撃を防止します。これは、IPv4のフラグメントに適していますが、それは、IPv6フラグメントのために動作しません。 IPv6パケットのフラグメント化部分は、このチェックはあまり効果的なもの、TCPヘッダの前に拡張ヘッダを含めることができるからです。

3. The Attack
3.攻撃

This attack describes how a malicious node can bypass a firewall using overlapping fragments. Consider a sufficiently large IPv6 packet that needs to be fragmented.

この攻撃は、悪意のあるノードが重複断片を使用してファイアウォールをバイパスする方法について説明します。断片化する必要が十分に大きいIPv6パケットを考えてみましょう。

   +------------------+--------------------//-----------------------+
   |  Unfragmentable  |                 Fragmentable                |
   |       Part       |                     Part                    |
   +------------------+--------------------//-----------------------+
        

Figure 1: Large IPv6 Packet

図1:大規模のIPv6パケット

This packet is split into several fragments by the sender so that the packet can fit inside the path MTU. Let's say the packet is split into two fragments.

パケットがパスMTU内に収まることができるように、このパケットは、送信者によっていくつかの断片に分割されます。パケットを2つの断片に分割されているとしましょう。

   +------------------+--------+--------------------+
   |  Unfragmentable  |Fragment|       first        |
   |       Part       | Header |      fragment      |
   +------------------+--------+--------------------+
        
   +------------------+--------+--------------------+
   |  Unfragmentable  |Fragment|       second       |
   |       Part       | Header |      fragment      |
   +------------------+--------+--------------------+
        

Figure 2: Fragmented IPv6 Packet

図2:断片化のIPv6パケット

Consider the first fragment. Let's say it contains a destination options header (DOH) 80 octets long and is followed by a TCP header.

最初のフラグメントを考えてみましょう。のは、それが80オクテット長の宛先オプションヘッダー(DOH)が含まれており、TCPヘッダが続いているとしましょう。

 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+<==FH
 |NextHdr=DOH(60)|   Reserved    |   FragmentOffset = 0    |Res|1|
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 |                Identification=aaaabbbb                        |
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+<==DOH
 |NextHdr=TCP(6) | HdrExtLen = 9 |                               |
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+                               +
 |                                                               |
 .                                                               .
 .                            Options                            .
 .                                                               .
 |                                                               |
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+<==TCP
 |        Source Port            |       Destination Port        |
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 |                       Sequence Number                         |
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 |                    Acknowledgment Number                      |
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 | Offset| Reserved  |U|A|P|R|S|F|           Window              |
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
        

Figure 3: First Fragment

図3:最初のフラグメント

The TCP header has the following values of the flags: S(YN)=1 and A(CK)=1. This may make an inspecting stateful firewall think that it is a response packet for a connection request initiated from the trusted side of the firewall. Hence, it will allow the fragment to pass. It will also allow the following fragments with the same Fragment Identification value in the fragment header to pass through.

S(YN)= 1とA(CK)= 1:TCPヘッダは、フラグの以下の値を有します。これは、検査ステートフルファイアウォールは、それがファイアウォールの信頼できる側から開始された接続要求に対する応答パケットであると考えることがあります。したがって、フラグメントが通過することを可能にします。それはまた、フラグメントヘッダ内の同じフラグメント識別値を持つ次のフラグメントが通過することを可能にします。

A malicious node can form a second fragment with a TCP header that changes the flags and sets S(YN)=1 and A(CK)=0. This can change the packet on the receiving end to consider the packet as a connection request instead of a response. By doing this, the malicious node has bypassed the firewall's access control to initiate a connection request to a node protected by a firewall.

悪意のあるノードは、フラグと集合S(YN)= 1とA(CK)= 0を変更するTCPヘッダを有する第2のフラグメントを形成することができます。これは、代わりに応答の接続要求などのパケットを考慮することは、受信側でパケットを変更することができます。これにより、悪意のあるノードは、ファイアウォールで保護されたノードへの接続要求を開始するために、ファイアウォールのアクセス制御をバイパスしました。

+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+<==FH
|NextHdr=DOH(60)|   Reserved    |   FragmentOffset = 10   |Res|0|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                Identification=aaaabbbb                        |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+<==TCP
|        Source Port            |       Destination Port        |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                       Sequence Number                         |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                    Acknowledgment Number                      |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Offset| Reserved  |U|A|P|R|S|F|           Window              |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
        

Figure 4: Second Fragment

図4:第2のフラグメント

Note that this attack is much more serious in IPv6 than in IPv4. In IPv4, the overlapping part of the TCP header does not include the source and destination ports. In IPv6, the attack can easily work to replace the source or destination port with an overlapping fragment.

この攻撃は、IPv4よりもIPv6におけるはるかに深刻であることに注意してください。 IPv4では、TCPヘッダの重複部分は、送信元ポートと宛先ポートが含まれていません。 IPv6では、攻撃は簡単にオーバーラップするフラグメントと送信元ポートまたは宛先ポートを置き換えるために働くことができます。

4. Node Behavior
4.ノードの動作

IPv6 nodes transmitting datagrams that need to be fragmented MUST NOT create overlapping fragments. When reassembling an IPv6 datagram, if one or more its constituent fragments is determined to be an overlapping fragment, the entire datagram (and any constituent fragments, including those not yet received) MUST be silently discarded.

IPv6は、重複断片を作成してはいけません細分化する必要があるデータグラムを送信するノード。 IPv6データグラムを再組み立てするとき一つ以上のその構成断片は重複断片であると判定された場合、データグラム全体(および未受信のものを含む任意の構成要素の断片は、)静かに捨てなければなりません。

Nodes MAY also provide mechanisms to track the reception of such packets, for instance, by implementing counters or alarms relating to these events.

ノードはまた、これらのイベントに関連するカウンタまたはアラームを実装することにより、例えば、そのようなパケットの受信を追跡するためのメカニズムを提供してもよいです。

5. Security Considerations
5.セキュリティについての考慮事項

This document discusses an attack that can be used to bypass IPv6 firewalls using overlapping fragments. It recommends disallowing overlapping fragments in order to prevent this attack.

この文書では、重複断片を使用したIPv6ファイアウォールをバイパスするために使用することができます攻撃について説明します。これは、この攻撃を防ぐために、重複断片を許可しない推奨しています。

6. Acknowledgements
6.謝辞

The author would like to thank Thomas Narten, Doug Montgomery, Gabriel Montenegro, Remi Denis-Courmont, Marla Azinger, Arnaud Ebalard, Seiichi Kawamura, Behcet Sarikaya, Vishwas Manral, Christian Vogt, Bob Hinden, Carl Wallace, Jari Arkko, Pasi Eronen, Francis

著者は、トーマスNarten氏、ダグ・モンゴメリー、ガブリエルモンテネグロ、レミデニス・Courmont、マーラAzinger、アルノーEbalard、誠一川村、ベーチェットSarikaya、Vishwas Manral、クリスチャン・フォークト、ボブHindenとカール・ウォレス、ヤリArkko、パシEronenに感謝したいと思いますフランシス

Dupont, Neville Brownlee, Dan Romascanu, Lars Eggert, Cullen Jennings, and Alfred Hoenes for their reviews and suggestions that made this document better.

デュポン、ネヴィルブラウンリー、ダンRomascanu、ラースEggertの、カレン・ジェニングス、とアルフレッドHoenes良く、この文書を作った彼らのレビューと提案のため。

7. References
7.参考
7.1. Normative References
7.1. 引用規格

[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate Requirement Levels", BCP 14, RFC 2119, March 1997.

[RFC2119]ブラドナーの、S.、 "要件レベルを示すためにRFCsにおける使用のためのキーワード"、BCP 14、RFC 2119、1997年3月。

[RFC2460] Deering, S. and R. Hinden, "Internet Protocol, Version 6 (IPv6) Specification", RFC 2460, December 1998.

[RFC2460]デアリング、S.とR. Hindenと、 "インターネットプロトコルバージョン6(IPv6)の仕様"、RFC 2460、1998年12月。

7.2. Informative References
7.2. 参考文献

[RFC1858] Ziemba, G., Reed, D., and P. Traina, "Security Considerations for IP Fragment Filtering", RFC 1858, October 1995.

[RFC1858] Ziemba、G.、リード、D.、およびP. Trainaの、 "IPフラグメントフィルタリングのためのセキュリティの考慮事項"、RFC 1858、1995年10月。

[RFC4942] Davies, E., Krishnan, S., and P. Savola, "IPv6 Transition/Co-existence Security Considerations", RFC 4942, September 2007.

[RFC4942]デイヴィス、E.、クリシュナン、S.、およびP. Savola、 "IPv6移行/共存のセキュリティの考慮事項"、RFC 4942、2007年9月。

Author's Address

著者のアドレス

Suresh Krishnan Ericsson 8400 Blvd Decarie Town of Mount Royal, Quebec Canada

スレシュクリシュナンエリクソンマウントロイヤル、ケベック州、カナダの8400ブルバードDecarieタウン

EMail: suresh.krishnan@ericsson.com

メールアドレス:suresh.krishnan@ericsson.com