Nintendo 3DS DNS Client Resolver Predictable TXID

The Nintendo 3DS DNS client resolver library uses a predictable (incremented) TXID allowing for the spoofing of responses.

MD5 | 1a36d85c0eeb7997eb6742ffbdb2d91c

 Nintendo: 3DS DNS Client Resolver Library Uses Predictable TXID 

I bought a New Nintendo 3DS XL (US) with firmware 11.2.0-35U, and I've noticed that that DNS client resolved on the 3DS uses a simple incrementing TXID for lookups. This does not provide enough entropy to prevent remote attackers from spoofing responses. (For example, see MS08-020 when this happened to Microsoft, although theirs was just not very random, yours is just incrementing so it's even worse). Note: this can also work behind NAT, because that just session matches and UDP has no ISN to verify.

<a href="" title="" class="" rel="nofollow"></a>

In general, you need an unpredictable src port (16 bits) and dns txid (16 bits) to prevent a remote attacker from spoofing responses.

An example attack scenario would be someone using the browser to visit

User visits
Attacker forces a lookup to via <img src> or whatever.
Now attacker can guess your resolver, etc.
Attacker create an <iframe> to
Attacker spoofs dns responses saying is an address he controls.
Attacker can now send javascript and read document.cookie, etc.
That's just an example, I don't know if you also download any software or anything else without authentication.

If you do, then those can obviously be spoofed and the impact is worse.


Run tcpdump on some egress point on your network.
Open the browser and lookup,, etc.
Notice the requests are easy to guess.

I had to send this via HackerOne, as Nintendo are not easy to contact.

<a href="" title="" class="" rel="nofollow"></a>

This bug is subject to a 90 day disclosure deadline. If 90 days elapse
without a broadly available patch, then the bug report will automatically
become visible to the public.

Found by: taviso

Related Posts