En primera no es un bug de programación, es un bug de diseño del protocolo.
A grandes grande rasgos, es spoofing

tu le pides a un servidor DNS un subdominio que no existe, este, como no lo tiene, lo va a preguntar al "Root Name Server" y seguirá la cadenita hasta que encuentra el IP pero tu spoofeas y respondes el paquete de respuesta con el IP que tu quieres.
Ahora esto es como se explota, el error de diseño en DNS, es que es vulnerable a un ataque de cumpleaños (birthday attack se llama, es tan simple como que en un cuarto con 23 personas hay un 50% de probabilidades de que 2 cumplan el mismo dia.. asi como en un servidor esperando N respuestas, hay un K% de probabilidades que si le mandas M paquetes spoofeados, alguno coincida, donde N+M es directamente proporcional a K).
DNS usa un segmento del paquete como un identificador aleatorio de 16 bits para evitar que lo spoofeen.. asi que no puedes adivinar facilmente.. Es como si tuvieras que adivinar el cumpleaños de alguien, y tuvieras solo 1 oportunidad, y 2^16 posibles respuestas.
Entonces ahi entra el birthday attack, haces muchas peticiones al servidor, y spoofeas muchas respuestas, tarde o temprano lograrás atinarle

Lo interesante porcierto, es que el paquete spoofeado contiene un paquete RR(ver
http://en.wikipedia.org/wiki/DNS_cache_poisoning#Redirect_the_target_domain.27s_nameserver) que permite spoofear el NS de ese dominio.
Este ataque tampoco es muy nuevo, se habló de el en el 2002:
http://www.rnp.br/cais/alertas/2002/cais-ALR-19112002a.html pero en ese momento el error era que el cache no funcionaba correctamente al solicitar un dominio multiples veces desde diferentes ips, y esta vez, es el solicitar multiples subdominios, respondiendo con un "authority" response para el dominio.

Saludos!!