Why is calling an LLMNR name-answer attack 'DNS cache poisoning' the wrong classification?
answer
- check what the famous attack actually requires
- no cache was touched, no record inserted
- the reply broke no protocol rule
- the denial was genuine, even signable
- authority over a namespace is not exclusivity
basics
~10 sNo DNS message was forged and no cache was altered. The DNS server truthfully said the name does not exist; the client then used a different protocol that has no authority at all.
solid answer
~50 sThree claims in the label are false. Nothing was **poisoned** — no record was inserted into any DNS cache. Nothing was **forged** — the LLMNR reply is a legitimate message that any host on the link is entitled to send, in a protocol with no notion of who owns a name. And it was not **DNS** — the DNS server answered correctly with `NXDOMAIN`, and the resolver behaved exactly as specified afterwards. What actually happened is that a name-resolution protocol with no authority, enabled by default, was consulted for a name that does not exist, and a peer on the segment answered. The classification matters because it points remediation at the wrong system: DNSSEC, resolver hardening, cache flushing and zone review all leave the behaviour untouched. If you tell a network owner insisting 'DNS is authoritative here' that their DNS was poisoned, you have confirmed their belief that DNS is the only resolver — which is the actual misconception.
go deeper
Remember that DNS and LLMNR are different protocols. The DNS server was not wrong and its cache was not changed; the client simply asked somewhere else afterwards.
Be able to state what cache poisoning actually requires - a cache and a forged record - and show that neither is present. Explain why NXDOMAIN was a correct answer.
Defend the reclassification to a network owner who believes DNS is the only resolver, and explain why DNSSEC, recursion limits and cache hygiene leave the behaviour untouched.
Own the cost of a wrong label: it funds work on the wrong system and confirms a misconception. Be ready to argue for naming mechanisms rather than borrowing a famous attack's name.
## Taking the label apart "DNS cache poisoning" asserts three things, and in this event each one is wrong. **It was not poisoning.** Poisoning means getting a false record accepted and stored by a caching resolver so that later, independent lookups return it. Nothing here was inserted into a DNS cache. The client stored a link-local answer in its own resolver cache for a short lifetime; the corporate resolver's cache is untouched, and every other host on the network is unaffected until it makes the same doomed query itself. **Nothing was forged.** A forgery imitates a message the sender was not entitled to send — a spoofed source, a guessed transaction identifier, an unauthorised signature. An LLMNR response is none of those. The responder sent a well-formed message in a protocol that explicitly invites any host on the link to answer, from its own address, in reply to a query addressed to everyone. It is a lie in the sense that the assertion is untrue; it is not a forgery in the sense that any protocol rule was broken. There is no rule to break, which is the whole point. **It was not DNS.** The DNS server received a question and returned `NXDOMAIN`, which was correct. The resolver then continued down the chain, which is specified behaviour. Every component did what it was designed to do, and the outcome was still an authentication-bearing connection to a machine of a stranger's choosing. ## Why the misclassification is expensive A wrong classification survives because it is close enough to feel right, and it costs you in remediation. If the finding says DNS poisoning, the plausible responses are: enable DNSSEC validation, restrict recursion, harden the resolvers, review the zones, shorten TTLs. Each of those is defensible work and **none of them changes anything here**. DNSSEC deserves its own sentence, because it is the first thing a senior engineer reaches for. DNSSEC authenticates DNS answers, including authenticated denial of existence via NSEC or NSEC3. Applied here, it would cryptographically prove that the name does not exist — which is *precisely the condition that triggers the fallback*. A fully validating resolver makes the trigger more trustworthy and does not touch the behaviour that follows. The honest classification names the mechanism: a link-local name-resolution protocol without authority, enabled by default, consulted for names DNS has already denied, on a segment shared with devices you do not control. That framing points at the actual levers — which is a different conversation, and one this leaf deliberately leaves to the people who own the removal decision. ## The conversation with the network owner The common objection is: *"DNS is authoritative here. Nothing else resolves."* Both halves can be true of the namespace and still miss the point. DNS is authoritative for the names it holds. The fallback fires for the names it does **not** hold. Authority over a namespace and being the only mechanism a host consults are different properties, and only the first one is under the network owner's control. The demonstration that ends the argument is a lookup of a name nobody has ever registered: the DNS question, the denial, and then the multicast query leaving the host anyway, addressed to the segment. ## The same behaviour, correctly classified as normal The complement is worth holding in mind because it stops the classification swinging too far the other way. In a small office where laptops discover the printer over mDNS and nothing else provides that service, these are the same packets, sent for the same reason, and they are the intended design. There is no vulnerability in the protocol to be patched. What differs between that office and the enterprise user segment is who else shares the link, how many hosts are asking for names nobody owns, and how automatically they ask. Classify the **environment**, not the protocol — and when writing the finding, say what the mechanism is rather than borrowing the name of a more famous one. ## The reusable habit When an attack resembles a famous one, check what the famous one actually requires. Cache poisoning requires a cache and a forged record. Neither is present. That check takes seconds and prevents a whole strand of misdirected work.
- A network owner insists 'DNS is authoritative here, nothing else resolves.' What do you show them?A lookup of a name nobody has ever registered: the DNS question, the authoritative denial, and then the multicast query leaving the host anyway. DNS is authoritative for the names it holds; the fallback exists for the names it does not. Authority over a namespace is not exclusivity over resolution.
- Would DNSSEC validation have prevented the client accepting the link-local answer?No. DNSSEC authenticates DNS answers, including denial of existence through NSEC or NSEC3. Here it would only prove more strongly that the name does not exist, which is exactly the condition that starts the link-local query. It changes nothing about what the client does next.
- In a small office the printer is only reachable because of mDNS. Is the protocol the vulnerability?No. Those are the intended packets doing their intended job, and there is nothing to patch in the protocol. Whether the same behaviour is an exposure depends on who else shares the link and how many names the hosts ask for that no server holds.
saying these in an interview costs you the question
- Labels it DNS cache poisoning or a poisoned resolver
- Blames a misconfigured or compromised DNS server
- Claims DNSSEC would have prevented it
- Says the response packet was spoofed or forged
- Treats the protocol itself as a vulnerability to be patched