7

Recently, I've been reading about DNSSEC and how it works. I found other questions and some very interesting answers on this and other websites related to this matter.

However, I have a question to which I couldn't find an answer anywhere: how can a client know that a DNS zone is supposed to be signed? If machineA never resolved the name example.com, how can DNSSEC prevent an attacker from intercepting the DNS query leaving machineA and replying to that query with a well-formed DNS reply holding a malicious IP address, but which seems to to come from the resolver?

In other words, I can't understand how DNSSEC prevents Man In The Middle Attacks. If the host never resolved the name before, how can it know that the reply is supposed to be signed?

I understand how DNSSEC can protect against cache poisoning, and how the integrity of the messages is assured, but it all seems to fall apart if someone simply sits between the user's machine and the resolver to strip out dnssec information.

  • 1
    This doesn't really answer your question, but I provided a solution to the problem here: http://security.stackexchange.com/questions/56007/does-dnssec-provide-signed-statements-that-a-certain-domain-does-not-yet-support Don't know what DNSSEC does for this though! I'm also wondering about that. – Curious Student Apr 17 '14 at 05:36
  • Related: https://security.stackexchange.com/questions/55613/is-dnssec-immune-to-stripping-signatures, https://security.stackexchange.com/questions/56007/does-dnssec-provide-signed-statements-that-a-certain-domain-does-not-yet-support, https://security.stackexchange.com/questions/11566/how-does-dnssec-work-are-there-known-limitations-or-issues. – Ohad Schneider Oct 03 '17 at 13:58

2 Answers2

3

DNSSec does not prevent against MITM attacks. This is also mentioned in the following answer and a bit more explanation of how DNSSec works and some of its limitations.

In this paper author discusses ways to circumvent DNSSec in Section VI, including 'intruder-in-the-middle' attack.

Jor-el
  • 2,071
  • 1
  • 17
  • 24
1

DNSSEC requires cryptographic proof that a zone is not protected in order to accept unsigned results for it. This takes the form of signed NSEC or NSEC3 records in the parent zone indicating the absence of DS records for the delegation.

If as the client you don't actually validate the signature chain, but just trust your nameserver, then there is still the possibility of MITM attack. Secure use of DNSSEC requires validation on your local endpoint by a trusted process. Modern consensus is that this does not belong in the individual application process but in a trusted caching and validating nameserver running on localhost, or similar.