Re: [BEHAVE] [NAT64] Hairpinning loop
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [BEHAVE] [NAT64] Hairpinning loop



On 2009-11-06 13:27, Dan Wing wrote:
>  
> 
>> -----Original Message-----
>> From: behave-bounces at ietf.org 
>> [mailto:behave-bounces at ietf.org] On Behalf Of Simon Perreault
>> Sent: Thursday, November 05, 2009 1:28 PM
>> To: Behave WG
>> Subject: [BEHAVE] [NAT64] Hairpinning loop
>>
>> Hello,
>>
>> In draft-ietf-behave-v6v4-xlate-stateful-02, Section 6 contains the
>> following text:
>>
>>    TBD: Is there such a thing as a hairpin loop (likely not naturally,
>>    but perhaps through a special-crafted attack packet with a spoofed
>>    source address)?  If so, need to drop packets that hairpin 
>> more than
>>    once.
>>
>> I believe that the answer is yes.

On reading section 6 a few times, I couldn't figure out a case where
sending a hairpin packet would actually have any value to a user.
There will always be another way of reaching the intended destination
with a native IPv6 address.

So unless this is wrong, why not just say that all hairpin packets
MUST be discarded?

  Brian
>>
>> If the IPv6-only client can guess the IPv4 binding address 
>> that will be
>> created, it can use the IPv6 representation of it as source 
>> address for
>> creating this binding. Then any packet sent to the binding's IPv4
>> address will loop in the NAT64.
>>
>>
>> Example:
>>
>> IPv4 pool => 192.0.2.0/24
>>
>> IPv6-only client sends this to NAT64:
>>
>> Source: [Pref64::192.0.2.1]:500
>> Destination: whatever
>>
>> The NAT64 allocates 192.0.2.1:500 as IPv4 binding address.
>>
>> Now anything sent to 192.0.2.1:500, be it a hairpinned IPv6 
>> packet or an
>> IPv4 packet, will loop.
>>
>>
>> How hard is it to guess? Easy. First you create a binding and use e.g.
>> STUN to know your external IPv4. New bindings will always have this
>> address. Then you use a source port in the range 1-1023. This will
>> increase your chances to 1/512 (since range and parity must be
>> preserved). Many NAT44 implementations today will go further and
>> allocate the same source port if it is available.
>>
>>
>> Easy fix: Drop IPv6 packets whose source address is in Pref64::/n. (Is
>> this mentioned somewhere already? I couldn't find anything having this
>> effect.)
> 
> Yes, that mitigation is described in
> http://tools.ietf.org/html/draft-ietf-behave-address-format-01#section-4.1
> 
> However, the security considerations section does not mention the
> attack you are describing; it probably should.  I CC'd the authors.
> 
>> Does this make sense?
> 
> Yes.
> 
> -d
> 
>> Simon
>> -- 
>> DNS64 open-source   --> http://ecdysis.viagenie.ca
>> STUN/TURN server    --> http://numb.viagenie.ca
>> vCard 4.0           --> http://www.vcarddav.org
>> _______________________________________________
>> Behave mailing list
>> Behave at ietf.org
>> https://www.ietf.org/mailman/listinfo/behave
> 
> _______________________________________________
> Behave mailing list
> Behave at ietf.org
> https://www.ietf.org/mailman/listinfo/behave
> 


Note: Messages sent to this list are the opinions of the senders and do not imply endorsement by the IETF.