A legutóbb javítással befoltozott hiba gyakorlatilag az összes elterjedt Windows verzió* DNS kliensének TXID generáló algoritmusát érintette. A TXID egy 16-bites entitás, amit a DNS kliens és szerver közti szinkronizációra használnak. Ennek az értéknek véletlennek, vagy legalábbis nehezen megjósolhatónak kellene lennie, ellenkező esetben egy támadó a lekérdezésre kerülő hosztnév ismeretében olyan válaszokat tud küldeni egy kliensnek, melyről az elhiszi, hogy a valódi DNS szervertől érkezett.
A problémát az eredetileg használt PRNG (pszeudo-véletlenszám-generátor) hibálja okozta, melyet kihasználva az n., n+1. és n+2. TXID értékét ismerve következtetni lehetett a generátor állapotára, és így megjósolhatóvá vált az n+3., n+4., stb. TXID. Ez eredeti algoritmus így működött:
Egy ebből származó TXID dump pedig valahogyígy néz ki, kiemelten látható a 4., 5., 6., 7. és 8. bitekben található ismétlődés:
GlobalSeed++;
SomeNumber = (WORD)GetTickCount()+(SomeRandomAddress>>6)+GlobalSeed;
XID = (SomeNumber%487)+1+GlobalLastTXID)^SomeNumber;
GlobalLastTXID = XID;
A következő TXID-k tehát nem válnak teljes mértékben megjósolhatóvá még ezzel a gyengeséggel sem, de a lehetséges értékek tere jelentősen lecsökken. Ha tehát detektálni akarunk egy ilyen támadást a hálózaton, érdemes a nagy mennyiségben érkező, különböző TXID-val ellátott DNS válaszokra figyelnünk.
A hibát a PRNG algoritmus lecserélésével korrigálták, az új algoritmusról bővebben itt olvashatunk.
*32 és 64-bites Vista, valamint a Windows 2000, Windows XP, and Windows Server 2003 összes támogatott verziója