[dns-operations] .fr has 5 DNSKEYs

Warren Kumari warren at kumari.net
Sun Jun 5 15:02:33 UTC 2011

On Jun 4, 2011, at 1:47 PM, Brett Frankenberger wrote:

> On Sat, Jun 04, 2011 at 06:34:03PM +0200, Stephane Bortzmeyer wrote:
>> On Wed, Jun 01, 2011 at 05:18:03PM +0100,
>> George Barwood <george.barwood at blueyonder.co.uk> wrote 
>> a message of 20 lines which said:
>>> Fragmented UDP responses are especially vulnerable to spoofing,
>>> because of the way IP fragmentation works. The DNS ID field (and UDP
>>> source port) is only present in the first fragment, so by sending a
>>> spoof non-first fragments an attacker that can predict the IP ID (
>>> which might be possible depending on the underlying IP
>>> implementation ) may be able to spoof a response
>> I do not see how the attack works: spoofing the non-first fragments is
>> useless since, if you cannot spoof the first one, the packet won't be
>> reassembled and the DNS data won't be accepted by the name server.
>> Do you have a pointer to a detailed description of this attack?
> I don't have a pointer, and haven't really thought about it before this
> thread.  But the potential attack would seem to be:
> Without fragmentation:
>  (a) Get server to send query for X
>  (b) Send forged response ahead of the actual response.
>  (c) Fail because you didn't guess the DNS ID field and UDP Source Port
> With fragmentation:
>  (a) Get server to send query for X
>  (b) Send forged second fragment ahead of the actual response
>  (c) Client receives first fragment from the actual response
>  (d) Client reassembles the real first fragment and the forged second
>      fragment.  


You would need to make the server reply with a response that:
a: is fragmented after the DNS ID field and before the actual data
b: know exactly where the fragmentation would occur (so you could craft your forged response to still reassemble correctly)
c: correctly predict the IP Identification field
and (possibly):
d: know the total size and original checksum of the correct response so that you can pad and reverse fudge your packet to make the checksum still be correct…

For a: you would need to make the server fragment after 0x2A and before 0x57 (39 bytes).
If somehow you could make that happen you could probably predict b:
c: is a random 16 bit integer.
d: depending if the receiver does UDP checksums you would need to know the DNS ID anyway to be able to fudge your response to satisfy the checksum…


> Note that there's no need for the attacker to
>      successfully predict the DNS ID or UDP Source Port because those
>      are in the legitimate first fragment.  (UDP Checksum could be an
>      issue, but that's not hard to work around if know know what the
>      contents of the real second fragment will be -- you can construct
>      your second fragment to have the same contribution to checksum as
>      the real second fragment would have.)
>     -- Brett
> _______________________________________________
> dns-operations mailing list
> dns-operations at lists.dns-oarc.net
> https://lists.dns-oarc.net/mailman/listinfo/dns-operations
> dns-jobs mailing list
> https://lists.dns-oarc.net/mailman/listinfo/dns-jobs

More information about the dns-operations mailing list