[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Questions/comments about draft-krishnan-v6ops-teredo-update-10



Hi, Suresh,

Thanks so much for your response. Please find my comments inline....


>> It's not very clear to me if it buys anything to deprecate the cone bit.
> 
> I think it does. Here's why. The cone bit tells the attacker whether a
> bubble is needed to create a connection.  

Isn't it trivial to learn this information, anyway? And if it is, does
it make sense to deprecate the cone bit?


> It also has some value in
> terms of profiling to the extent that it reveals the security posture of
> the network.  If the cone bit is set, the attacker may decide that it is
> worthwhile to port  scan the embedded external IPv4 address and others
> associated with the same organization, looking for open ports.

Please see my earlier comment about this. Regardless the deprecation of
the cone bit, an attacker can nevertheless do this.



>> ** Also, if the cone bit is deprecated, then I assume that Teredo nodes
>> implementing this document should probably implement this check:
>>
>> "If a packet is received from an arbitrary Teredo node, there should be
>> an entry in the List of recent Teredo peers. This would prevent
>> attackers from trying to contact a Teredo node directly, despite the
>> implicit requirement in this document that a Teredo bubble be previously
>> sent through the corresponding Teredo server before contacting a Teredo
>> node."
> 
> Wouldn't section 5.2.3 of RFC4380 cover this check already?

No. The relevant piece of RFC 4380 is:

>    3) If the source IPv6 address is a Teredo address, the client
>    compares the mapped IPv4 address and mapped port in the source
>    address with the source IPv4 address and source port of the packet.
>    If the values match, the client MUST create a peer entry for the IPv6
>    source address in the list of peers; it should update the entry if
>    one already existed; the mapped IPv4 address and mapped port in the
>    entry should be set to the value from which the packet was received,
>    and the status should be set to "trusted".

That is, the Teredo client will trust unsolicited packets, instead of
requiring a bubble beforehand.




>> ** In Section 3.2, the document states:
>>
>>>    o  The cone bit in the IPv6 source address of a Router Solicitation
>>>       (RS) from a client controls what IPv4 source address the server
>>>       should use when sending a Router Advertisement (RA).  If this
>>>       behavior is not preserved, legacy clients will conclude that they
>>>       are behind a cone NAT even when they are not (because the client
>>>       WILL receive the RA where previously it would not, since cone bit
>>>       set to 1 requires the server to respond from another IP address).
>>>       They will then set their cone bit and lose connectivity.
>>
>> I would expect the Teredo client to not only check whether the RA is
>> received, but also check the Source Address of the RA. As a result, even
>> if the cone bit was ignored and thus the server sent an RA with the
>> "primary address" as the source address, the Teredo client should be
>> able to detect this (possibly failing on the "safe" side and concluding
>> that it is not behind a cone nat).

This one remains unanswered ;-)



>> ** Appendix B of draft-krishnan-v6ops-teredo-update-10 analyzes
>> resistance to address prediction. It argues that the search space is
>> 16+12 bits. However, if the target NAT is a cone nat, the attacker would
>> not try a brute force approach. He'd first find those port numbers for
>> which there's an existing mapping in the NAT (see above), and *only* for
>> those ports he'd try to find the right 12 random bits that result in a
>> valid Teredo address. So this analysis might be a bit misleading.
> 
> I am not sure why you think this is misleading. 

This would imply that in order to find all Teredo nodes the search space
would be 16+12 bits. In practice, it isn't. Firstly, you'd find open
ports at the NAT, with a search space of 16 bits. Then, *only* for each
open port the search space would be 12 bits.


> It talks about a
> scenario where the attacker does not know the port (i.e. Not the
> scenario you are considering). The following text in the Security
> Considerations section covers your scenario, doesn't it?
> 
> "As a result, even if a malicious user were able to determine the
> external (mapped)
>    IPv4 address and port assigned to the Teredo client, the malicious
>    user would still need to attack a range of 4,096 IPv6 addresses to
>    determine the actual Teredo IPv6 address of the client."

Yes, but see the small nit above.

Thanks!

Kin regards,
-- 
Fernando Gont
e-mail: fernando@gont.com.ar || fgont@acm.org
PGP Fingerprint: 7809 84F5 322E 45C7 F1C9 3945 96EE A9EF D076 FFF1