Slashdot Mirror


BIND Still Susceptible To DNS Cache Poisoning

An anonymous reader writes "John Markoff of the NYTimes writes about a Russian hacker, Evgeniy Polyakov, who has successfully poisoned the latest, patched BIND with randomized ports. Originally, the randomized ports were never supposed to completely solve the problem, but just make it harder to do. It was thought that with port randomization, it would take roughly a week to get a hit. Using his own exploit code, two desktop computers and a GigE link, Polyakov reduced the time to 10 hours."

146 comments

  1. Power DNS Recursor.. by Anonymous Coward · · Score: 0

    Much better program, and faster recursion..

    wheres the problem?

    1. Re:Power DNS Recursor.. by cortana · · Score: 1, Informative

      $ apt-cache -n search power dns | wc -l
      0

    2. Re:Power DNS Recursor.. by shallot · · Score: 4, Informative

      % apt-cache -n search pdns-recursor
      pdns-recursor - PowerDNS recursor

      Granted, it *is* actually missing on several architectures because of some unimplemented system calls, but that shouldn't bother too many people.

    3. Re:Power DNS Recursor.. by bconway · · Score: 4, Informative

      Consider reading the links in the article. Obfuscation isn't a fix.

      Article says, that DJBDNS does not suffer from this attack. It does. Everyone does. With some tweaks it can take longer than BIND, but overall problem is there.

      --
      Interested in open source engine management for your Subaru?
  2. Oh no terminology by Anonymous Coward · · Score: 1, Funny

    Russian hacker, Evgeniy Polyakov

    a Russian physicist

    Which one which one aaaaaarhhhhh I'm so confused.

    1. Re:Oh no terminology by urcreepyneighbor · · Score: 1

      Aren't all physicists hackers?

      --
      "The fight for freedom has only just begun." - Geert Wilders
    2. Re:Oh no terminology by Anonymous Coward · · Score: 1, Funny

      No, they are just trying to reverse engineer gods physics engine.

    3. Re:Oh no terminology by Nerdfest · · Score: 1

      Either one explains why he could generate the bad entries so fast ... he was rushin' ...

      Old, obvious, but just so damn neccessary

    4. Re:Oh no terminology by madboson · · Score: 1

      Actualy by /. language standards physicists are hackers. By the rest of the worlds standards, not really. Just read their code and its obvious :)

      --
      Mo00o
  3. BIND by Anonymous Coward · · Score: 0

    BOUND

    1. Re:BIND by MrNaz · · Score: 4, Funny

      I think you mean B0wnd

      --
      I hate printers.
  4. IPv6 could solve this! by jamesh · · Score: 4, Insightful

    With IPv6, you would have enough source addresses to add that to the 'random pool' too. Another 64K addresses would make it harder to hack.

    Does anyone else think that maybe we are approaching this problem the wrong way?

    1. Re:IPv6 could solve this! by Tony+Hoyle · · Score: 1

      The source addresses would be the same though - there are only a limited number of DNS servers and it's not hard to sniff a link and work out what the common ones are... so you're not adding anything, just creating a situation where the average home user can't actuallly use your DNS server.

    2. Re:IPv6 could solve this! by diegocgteleline.es · · Score: 3, Insightful

      Another 64K addresses would make it harder to hack.

      You said it, it'd make it harder, but not impossible, specially with hardware geting faster every year.

    3. Re:IPv6 could solve this! by Niten · · Score: 3, Informative

      Does anyone else think that maybe we are approaching this problem the wrong way?

      Yes, the wrong way being tacking on extra transaction ID space by means of fragile kludges such as random source port numbers and, possibly, random IPv6 addresses.

      It will require a lot more effort, but the right way to solve this problem is by improving the protocol itself. That may mean putting a much larger transaction ID field in the packets, where it cannot be mangled by NAT devices. Or it may mean delegating nameservers by IP address rather than domain name so that resolvers will no longer need to accept potentially-malicious glue records. But preferably, it means moving to a cryptographically-strong domain name system such as DNSSEC.

    4. Re:IPv6 could solve this! by TubeSteak · · Score: 1

      Does anyone else think that maybe we are approaching this problem the wrong way?

      Of course 'we' are.

      Making something harder to exploit != fixing the exploit.

      --
      [Fuck Beta]
      o0t!
    5. Re:IPv6 could solve this! by Zocalo · · Score: 1

      Does anyone else think that maybe we are approaching this problem the wrong way?

      No, although I think that quite a few people may have the wrong end of the stick. I got the distinct impression that while it's still a good idea, using random source ports wasn't intended to be THE fix for the problem. Rather that it was just a generic, vendor neutral workaround to enable people to have a chance to secure themselves against the immediate threat without revealing enough information to Black Hats to exploit the issue. A more permanent solution, that might otherwise have entailed revealing critical information about the vulnerability to those wishing to exploit it through a diff and code analysis, can now be worked on and applied in subsequent patches.

      To use the horse and barn analogy:

      • Unpatched server: The horse is looking curiously out of the barn, or has already bolted.
      • Patched server (port randomization): The door is closed, but the horse could still potentially kick it open and bolt.
      • Patched server (final fix): The door is closed, and bolted. Until the next time.
      --
      UNIX? They're not even circumcised! Savages!
    6. Re:IPv6 could solve this! by mikkelm · · Score: 1

      I haven't been too far into the technical aspects of this issue, but from what I gather, it is related to brutally "predicting" the source ports used for recursion, and injecting fraudulent responses?

      It would generate more traffic, sure, but wouldn't an immediately obvious solution be to demand multiple confirmatory replies to recursion, each request using a different randomisation algorithm for the source port used?

    7. Re:IPv6 could solve this! by cheater512 · · Score: 1

      Yeah just make the transaction id 64bits. Fixed.

      Or go with the whole dnssec system.

    8. Re:IPv6 could solve this! by vrt3 · · Score: 1

      I haven't studied this issue in detail, but wouldn't it help a lot to use TCP instead of UDP? Then you don't even need transaction ID's; the transaction is simply the TCP connection.

      --
      This sig under construction. Please check back later.
    9. Re:IPv6 could solve this! by Paul+Jakma · · Score: 1

      Yep.

      --
      I use Friend/Foe + mod-point modifiers as a karma/reputation system.
    10. Re:IPv6 could solve this! by Paul+Jakma · · Score: 2, Informative

      Or it may mean delegating nameservers by IP address rather than domain name so that resolvers will no longer need to accept potentially-malicious glue records.

      Good post. Forgive me for focusing in on this one point and nitpicking it.. ;)

      0. Glue used to have a specific meaning: records configured in a parent to help delegate a zone. You (and many people reporting on the current flaws) seem additionally to use it to refer to "additional answers" in DNS replies. While such answers often are glue records, they're not quite the same thing. Least, it didn't use to be. Perhaps the meaning has moved on, but I'll use "glue" in the stricter sense.

      1. That's essentially already the case, for in-zone delegations (ie delegating example.com to a name in example.com. like ns.example.com.). The authorative server must be configured with glue, and it must return that glue in the additional answer section for anyone to be able to query ns.example.com.

      (Interestingly, DJB has long had a page arguing that "out-of-bailiwick" delegations are bad, amongst other things).

      2. Resolvers mustn't treat glue from the delegator as authorative anyway. Resolvers are only supposed to believe additional answers that are in-bailiwick (ie you'll only believe an additional record for/in example.com. if it came from a DNS server you know to be authorative for example.com., e.g. cause you just queried it for a name in example.com.)

      3. The problem here is not inherent to glue/additional, but in knowing whether a reply is authorative or not. The only good way to fix this is to secure the DNS chain of trust, either through near-ubiqutious deployment of IPSec+PKI for DNS servers (ha!) or a PKI inside DNS.

      --
      I use Friend/Foe + mod-point modifiers as a karma/reputation system.
    11. Re:IPv6 could solve this! by Znork · · Score: 1

      but the right way to solve this problem is by improving the protocol itself.

      Which, if one reads various proposals to do just that, appears to be hampered by the group that thinks we should let the old DNS protocol be crap until people adopt, tada, DNSSEC.

      But preferably, it means moving to a cryptographically-strong domain name system such as DNSSEC.

      I'm fine with DNSSEC. As long as I get to have the root keys, m'kay?

      In the end, I think the trust issue is the killer and final showstopper for DNSSEC. Until DNSSEC is reengineered to solve the political issues in ways palatable to all parties (ie, scrap the third party hierarchial trust) I doubt it will get as widely deployed as would be necessary.

      Meanwhile, adding a much larger transaction ID would make things safer and leave more time for fixing DNSSEC.

    12. Re:IPv6 could solve this! by Antibozo · · Score: 2, Informative

      The third party hierarchical trust you disdain is one of the primary benefits of DNSSEC, because DNSSEC can eventually replace certificates for distribution of public keys. Currently, the only PKI we have is from a third-party non-hierarchical trust—the CAs—who are really not that trustworthy. DNS, however, is already hierarchical, and it makes a lot more sense to use a hierarchical system of trust—the same system in fact—to validate it. Do you really think having hundreds of trust anchors makes more sense than having a single trust chain?

      What hampers DNSSEC, more than anything, is all the FUD about it. It's really not difficult to implement, and there are tools for nameserver operators to use. If people would start actually practicing signing domains, even without the trust chain, a lot of their fears would be allayed. What is technically standing in the way is the failure to plan for it on the part of the major registrars, who need to provide a mechanism for signing the DS records. Of course, a lot of those those registrars also happen to make a lot of money on the side as CAs, and one of them in particular also operates the .com and .net TLDs. You do the math—who benefits the most both from FUD about DNSSEC and from the insecurity of traditional DNS?

      People need to set aside their paranoia about DNSSEC and understand that the worst case, most fantastical, trust violation scenarios for DNSSEC are still better than the status quo. And the best case is that everyone ends up with ubiqitous PKI with no per-unit cost. You could securely publish all your public keys, ssh host keys, personal public keys, etc. for the simple cost of getting a domain. If people can start seeing the possibilities for a single distributed, redundant, hierarchical, secure network database, there will be more community pressure on the registrars to get with the program. ICANN already plans to have a signed root by the end of the year and there are several ccTLDs that are already signing their zones. What excuse do we have for not even having a plan for .com? It's infuriating that we are facing the current situation, after all these years, and people are still questioning whether DNSSEC is a good idea.

    13. Re:IPv6 could solve this! by jamesh · · Score: 2, Insightful

      I meant the source address of your request. Eg when your internal dns caching server sends a dns request, your router nat's the source address from a random pool of 64k (or more) addresses. In order for someone to spoof the reply, they would need to know the dns request id, the source port you used to send, and the source IP address chosen by your nat router. It's a client side solution only.

      As a solution, it would rely on the following:
      . a useful number of DNS servers being reachable via IPv6 (not the case yet)
      . a router able to do IPv6 NAT to a random address (maybe possible if your router runs Linux?)

      I think that by the time the above is true, there will be better solutions around.

    14. Re:IPv6 could solve this! by Random+BedHead+Ed · · Score: 1

      I forget where I heard this, but 64K addresses ought to be enough for anyone.

    15. Re:IPv6 could solve this! by jamesh · · Score: 2, Informative

      DNS does already work over TCP, and is used where the response will be over a certain size, eg a zone transfer from primary to secondary DNS server.

      The problem is one of efficiency. TCP has much higher overheads, you need three packets just to get a connection started and then you have to keep track of the connection and shut it down properly. Three packets doesn't sound like much but over a high latency link (eg 500ms) it makes for a huge increase in the time it takes to resolve a name.

    16. Re:IPv6 could solve this! by jamesh · · Score: 1

      64K was just a rough number I pulled out of the air, as 16 bits of address wouldn't be a huge slice of a end site's address space.

      You could easily make it 640k though, then it truly should be enough for anyone!

    17. Re:IPv6 could solve this! by Heston · · Score: 1

      64k addresses ought to be enough for anyone.

    18. Re:IPv6 could solve this! by Opportunist · · Score: 1

      Why not simply wait for two responses (i.e. reopen the port after you got an answer and wait a few seconds)? If you get two, you know something's fishy 'cause you should only get one.

      Less traffic and not really slower.

      --
      We used to have a Bill of Rights. Now, with the rights gone, all we have left is the bill.
    19. Re:IPv6 could solve this! by mikkelm · · Score: 1

      Wouldn't that break if concurrent attacks were happening? Sure, you could bind the hold-down timer to a specific IP address, but then people would just start randomising their addresses.

    20. Re:IPv6 could solve this! by Znork · · Score: 2, Informative

      who are really not that trustworthy.

      I generally don't trust the CA's further than I can throw them. Who do you figure is trustworthy enough to handle it for DNS? Who could be regarded as trustworthy, no matter who in the world you ask? There seems to be some administrative problems with handing the keys to Mother Theresa.

      hundreds of trust anchors

      Having trust anchors at all is the problem. You need to verify against several independent sources, preferably sources you have some reason to trust, to avoid single points of corruption.

      Designing a system based on a single point not failing is simply bad engineering. You design with the expectancy that individual points _will_ fail, but minimizing the consequence of the failure of any such points.

      secure network database

      It's spelled _in_secure.

      I certainly see the possibilities for what you want to be talking about. DNSSEC isn't it.

      and people are still questioning whether DNSSEC is a good idea.

      Ok, here's a hint. If you've failed to convince people that DNSSEC is a good idea after this many years, and with the current (and, many would argue, since a long time ongoing) DNS situation, it should really, I mean, _REALLY_ tell you something. Maybe the problem is in the actual idea.

      It's not like it's hard to come up with a list of options to improve and design a naming system to be redundant, fault tolerant, intervention tolerant and secure, yet there's an apparent fixation of going with a system that has obvious flaws. Numerous suggestions to fix the flaws that made the latest round of problems obvious have been made in the past, yet the push continues.

      Why not actually sit down and redesign in a distributed way that would be acceptable to all parties? I mean, how bad does it have to get? DNSSEC gets bogged down in political and paranoid issues because DNSSEC has political issues designed into its core. It caters to the paranoid by ensuring there is plenty of opportunity to make paranoids right.

      When you reach insurmountable political issues you design around them. Maybe they'll go away in some utopian future when we'll have utterly secure trust anchors in the hands of incorruptible angels, but until then we could do well with a system that doesn't require unobtainable dreams to work.

    21. Re:IPv6 could solve this! by Opportunist · · Score: 1

      It's not that I wait for the second answer.

      What is the normal flow of operation? You ask ONE question, you get ONE answer. The attacker can't keep the genuine server from answering, so you will get this one, no matter what. If you get TWO (or more) answers, something's bogus.

      One answer is what you expect. Because one answer is what you get, when everything runs normal. Just open the port and wait for a few seconds. If you get another answer, discard what you got and ask again. How big is the chance that he guesses the right port/TID combination twice in a row? Or three times? It may sometimes take 3-4 requests until you get exactly ONE answer so you can be sure it's a genuine one, when the attacker doesn't finish the race in time.

      Currently, the only way I could see how this could end up in a DOS is when the attacker somehow manages to get his answer in EVERY time you send a request. This is, IMO, currently very, very unlikely.

      --
      We used to have a Bill of Rights. Now, with the rights gone, all we have left is the bill.
    22. Re:IPv6 could solve this! by Antibozo · · Score: 2, Informative

      I generally don't trust the CA's further than I can throw them.

      Yet, they are the current standard for providing end-to-end security. So how mainstream to you think your level of doubt is?

      Mind you, I don't trust the CAs either, which is why I want DNSSEC, since it can provide a superior mechanism with far fewer vectors for subversion, which I can control for my own domains, and which also is not vulnerable to cache poisoning.

      Who do you figure is trustworthy enough to handle it for DNS? Who could be regarded as trustworthy, no matter who in the world you ask?

      I would trust ICANN for the root. Obviously, you can't please everyone in the world, nor do you have to. For the TLDs, the current gTLD registry operators also happen to be CAs, so they can subvert both DNS and SSL already. Have you ever heard of a case of a CA subverting SSL security by deliberately issuing a false cert?

      Having trust anchors at all is the problem. You need to verify against several independent sources, preferably sources you have some reason to trust, to avoid single points of corruption.

      Yes, those independent sources are called "trust anchors". From your somewhat vague statement I presume you mean you'd like to make your trust anchor some form of composite, perhaps a web of trust of some kind. So then it would require some form of conspiracy to subvert the trust anchor. And you think that's superior to having a single trust anchor, which would require some form of conspiracy to subvert it.

      And how do you propose that Joe User assess whether the DNS answer he gets is trustworthy in such a system, let alone come up with an initial set of trust anchors for his web of trust?

      Designing a system based on a single point not failing is simply bad engineering.

      Again you are vague; it's unclear what single point would fail in DNSSEC. Presumably the scenario you have in mind would be the root or TLD operators' subverting DNSSEC. Do you really think that's a plausible scenario? If so, why isn't it happening already with the CAs, any one of which could accomplish the same thing. Again, some CAs are also TLD operators, and many more of them can subvert DNS. Yet we don't have any evidence that this has happened.

      It's spelled _in_secure.

      That's your argument? Wordplay?

      Maybe the problem is in the actual idea.

      Or maybe the problem is in the FUD that people keep promulgating about the idea.

      It's not like it's hard to come up with a list of options to improve and design a naming system to be redundant, fault tolerant, intervention tolerant and secure, yet there's an apparent fixation of going with a system that has obvious flaws.

      Really? If it's so easy, let's hear your design.

      Of course, it's easy to claim that designs have obvious flaws without presenting actual examples. Would you care to describe these obvious flaws in DNSSEC? What vulnerabilities exist, what are the plausible threat models, and how do those threat models compare to those of the status quo, or the easily designed system you have in mind?

      DNSSEC gets bogged down in political and paranoid issues because DNSSEC has political issues designed into its core. It caters to the paranoid by ensuring there is plenty of opportunity to make paranoids right.

      If deploying SSL had required proving to all the tin-foil hats in the world that CAs wouldn't be able to subvert the security of the system (of course, they are), it never would have gotten off the ground. Would you have the designers cater to every marginal threat in order to design a system that would be unwieldy beyond measure, impossible for a regular user to understand, and which still fails to provide perfect security?

      When yo

  5. Why do people still use BIND? by Mr.Ned · · Score: 1, Insightful

    Why do people still use BIND? It has a track record of security vulnerabilities almost as long as Sendmail's.

    1. Re:Why do people still use BIND? by PJCRP · · Score: 2, Funny

      Because most Networkers engage netorking-BDSM in regular practice?

      --
      Knows everything about nothing and nothing about everything.
  6. You Will Never Solve This Problem! by segedunum · · Score: 4, Insightful

    I might not have one of the lowest Slashdot IDs around, but I am absolutely astonished at some peoples' astonishment over this. DNS, by definition, is all about trusting the forwarders you are using or other DNS servers you are caching from and trusting the DNS server you use from there. That's where the problem is, so if people are shouting and screaming about trust now then it's all a bit late.

    If your DNS server says that slashdot.org resolves to something other than 216.34.181.45 then that's where you're going to end up. There are also legitimate reasons why someone might want to do something like that, and it is part of the inherent flexibility that has made the internet and its technologies as ubiquitous and as well used as they are. No one said that there weren't downsides. If you locked everything down in the manner that some idiots will inevitably now talk about, shouting and squealing about financial institutions, then I'm willing yo bet that you will lose a good portion of the flexibility that makes the 'internet' actually work on a wide scale.

    1. Re:You Will Never Solve This Problem! by Timothy+Brownawell · · Score: 1

      This isn't about evil servers. It's about impersonating servers by spoofing their address, and about how the passwords build into the question/response packets aren't long enough to prevent this.

    2. Re:You Will Never Solve This Problem! by gruntled · · Score: 2, Interesting

      Isn't the real issue here our continued reliance on passwords that can be used more than once? When are we going to move wholeheartedly into a single-use password environment?

      Incidentally, when is somebody going to throw the fact that US banks have completely ignored the two-factor authentication requirement (part of the Patriot Act, I believe; maybe we should start sending *bankers* to Gitmo and see if *that* gets their attention) back at the finance industry when they start to squeal?

    3. Re:You Will Never Solve This Problem! by houghi · · Score: 1

      The flexability of DNS and the downsides of DNS are changing. The thing is that up till now you could asume that the answer was correct in the majority of the time. In the HUGE majority of the time.

      This caused the downsides to be minimal. The downsides where mostly due to people forgetting a training dot or mistyping an IP adress. Those are acceptable downsides when compared to the upsides of the fexbility.

      However when the downsides become that you can not know wether or not you can trus the outcome, it then becomes a problem.

      Think of people using a telephone. This has the upside of flexability. You can dial any number. The downside is that you can mistype a number or people change numbers. However in the majority you trust to get the person you intended to dial.

      If, by malicious attempts, you have no idea where you are calling to anymore, then it becomes a problem. What if you dial, get connected to a paynumber for 5USD per minute who then puts you through to your intended person.

      Would you still say 'hey, everybody knew there were downsides' or would you say that we need to chane it so that this never happens again?

      OK, perhaps a bit to strong, what if any phonecompany could connect you to their system, without you even knowing it. Suddenly you pay more when you call. Yep, that has happend and the situation is changed now.

      --
      Don't fight for your country, if your country does not fight for you.
    4. Re:You Will Never Solve This Problem! by boto · · Score: 3, Insightful

      I wonder why the parent is modded Insightful. You don't seem to have gotten the problem.

      The problem is not the servers being able to redcirect you to a different address, but the fact that any person (not only the people that control the servers you query) can make you server direct people to anywhere.

      The problem is not about trust, but not being able to make sure who you are really getting a message from. You can't even have a trust problem if you are not sure who is talking to you.

    5. Re:You Will Never Solve This Problem! by Stellian · · Score: 1

      Isn't the real issue here our continued reliance on passwords that can be used more than once? When are we going to move wholeheartedly into a single-use password environment?

      No, that's not the real issue. Two factor authentication does not solve the problem of DNS poisoning: the user will enter the one-time password into the fake site, which in turn will log in the real site and transfer one million $ to Nigeria.
      SSL does not solve the problem of DNS poisoning in a practical sense: it only works if the user opens a https:/// shortcut; the large majority of users that type "paypal.com" in the address bar, will not observe that the fake PayPal site they are seeing failed to redirect them to a SSL connection.
      The only thing I can think of that really plugs any DNS vulnerability is a smart card / USB token type of device that does it's own verification of the remote website's credentials before disclosing login information.

    6. Re: You Will Never Solve This Problem! by nothings · · Score: 1
      You're wrong; the problem is trivially solveable. For example, 128-bit transaction IDs would pretty much solve this particular scenario.

      Unfortunately that requires a protocol change, which is a hard social problem. Adding 16 bits of source port randomization didn't require a protocol change, and they thought it was good enough. But maybe it wasn't (this particular demonstration is a little too laboratory-science for me; the flood of wrong responses would probably turn into a visible DoS attack in the real world). If it wasn't, though, no, it's not hard to fix on a technological front.

      To a rough approximation, DNS is about trusting the servers the DNS system is configured to talk to. Other servers are only "trusted" about the data they're known to be responsible for. There is no fatal flaw to that design, as long as the DNS servers can't be spoofed. As long as a given DNS server always initiates "conversations" with the trusted servers, and uses a sufficiently large random transaction ID, and that conversation is private, the data it gets back is perfectly reliable. (DNSSEC attempts to tackle the problem from a different direction, by making sure all reports from the trusted servers can be verified as really being from them, which allows you to give up all three of those requirements.)

    7. Re:You Will Never Solve This Problem! by T3Tech · · Score: 1

      The only thing I can think of that really plugs any DNS vulnerability is a smart card / USB token type of device that does it's own verification of the remote website's credentials before disclosing login information.

      And that alone, just off the top of my head, is still vulnerable to the man-in-the-middle attack. Just forward the correct credentials back from the real site...

      --
      Of course I didn't RTFA... why would I do that? You really are new here aren't you? Don't let my UID fool you.
    8. Re:You Will Never Solve This Problem! by blacklint · · Score: 1

      Not if it's over SSL, where if the man-in-the-middle was just blindly forwarding the connection they wouldn't get to read what was being transmitted.

    9. Re:You Will Never Solve This Problem! by mellon · · Score: 1

      Well, sort of. If you have a DNSSEC-aware resolver, and you are looking up a record in a signed zone, then the man-in-the-middle attack you're proposing doesn't work, because the signatures don't check out. So it is possible to prevent the problem you're describing.

      The reason we have this problem is, very simply, that in many of the larger TLDs, the top-level zone is not signed. So there's no chain of trust, so even if you sign your zone, I have no way to get your key, because I have no chain of trust to follow.

      There are solutions to this - register in a signed TLD, like .se, for example. Or use DNS Lookaside Validation. But ultimately the situation you describe will continue to be the default until the big zones are signed, and people who do transactions that require security start signing their zones.

      It's a bit of a chicken-and-egg problem, unfortunately.

    10. Re: You Will Never Solve This Problem! by Opportunist · · Score: 1

      It would not "solve" the problem. It would just make exploiting it harder. The underlying problem is that a DNS-Server cannot verify whether the answer it got is actually from the server it asked. Sure, a 128bit key would make it all a lot more difficult, with its 2^128 possible TXIDs, until someone found a problem in the random key generator or some other hidden flaw in the whole system that allows him to either make a guess at far better odds than 1:2^128 or hammer out a billion attempts per second without the server noticing.

      The solution isn't in jacking up the odds. The solution is in making the answer verifyable.

      --
      We used to have a Bill of Rights. Now, with the rights gone, all we have left is the bill.
    11. Re: You Will Never Solve This Problem! by nothings · · Score: 1

      Digital signatures rely on jacking up the odds. It makes a lot more sense to just jack up the odds on the already essentially working system then to go to all those lengths.

  7. In other news, water is wet... by Anonymous Coward · · Score: 0

    The effectiveness of the attack in the presence of port randomization is equal to the amount of tries you can make per second.

    On a GigE, port randomization has a much lower effect, just because you are throwing even more packets per second at the target server.

  8. GigE by AndIWonderIfIWonder · · Score: 2, Interesting

    It seems that this only works so quickly because he had 2 machines connected to the server via GigE. Which I would guess means most DNS servers can't be poisoned like this.

    1. Re:GigE by Tony+Hoyle · · Score: 1

      Given a setup like that you could poison just about any protocol unless it was using SSL... anything that has a two way conversation expects replies and you can inject packets into it by getting there 'first.

      TBH though given that setup I'd just respond to ARP requests for the router and intercept the entire traffic flow. DNS poisoning not required.

    2. Re:GigE by Anonymous Coward · · Score: 1, Interesting

      Most people are failing to realize that with an attack window of 10 hours the abilities of detection, disposal and prevention of repetition are a LOT higher for a skilled system administrator.

      Anybody keeping an eye on their traffic requests will notice the immense spike in volume, coming from one/paired IP Addresses, and then act upon.

      This goes back to a more global problem, it's not ONLY just the DNS protocol's implementation, but also still falls on administrators to perform traditional roles or to set up automated programs to handle this for them.

      On a side note, it would probably serve the DNS Server software authors to add features to detect port randomization attacks and categorize and log them, if say x number of requests happen in y timeframe, or z pattern is matched against w base.

  9. This isn't a BIND problem. by CustomDesigned · · Score: 5, Informative

    This has nothing to do with BIND vulnerabilities. DJdns, or whatever you feel is more secure, has exactly the same problem. It is a protocol weakness. The article mentions BIND only because it is the reference implementation for DNS.

    The most interesting idea I've seen is to use IPv6 for DNS. The oldest idea is to start using DNSSEC.

    1. Re:This isn't a BIND problem. by Anonymous Coward · · Score: 0

      As far as I understand it, the handling of glue records could be much stricter, which would make this exploit infeasible. There is no reason to accept glue information which you already have and is not expired. The opportunistic acceptance of glue records is what makes the current attack possible.

    2. Re:This isn't a BIND problem. by Anonymous Coward · · Score: 1, Interesting

      This has nothing to do with BIND vulnerabilities. DJdns, or whatever you feel is more secure, has exactly the same problem. It is a protocol weakness. The article mentions BIND only because it is the reference implementation for DNS.

      The most interesting idea I've seen is to use IPv6 for DNS. The oldest idea is to start using DNSSEC.

      You sir are wrong. DJBDNS and PowerDNS are both immune to this cache poising. Yes it is in the protocol, but the protocol is a minimum standard to follow. DJB put in features which allows the cache to only come from defined servers, etc. It is immune to this attack.

    3. Re:This isn't a BIND problem. by CustomDesigned · · Score: 3, Insightful

      Since the basis of the attack is spoofing server IPs, how does DJBDNS detect spoofed packets? "only come from defined servers" is useless when the packets are spoofed. It helps, of course, to not accept new glue records whenever they appear, but keep existing ones until they expire. But this just makes the attack take a little longer.

    4. Re:This isn't a BIND problem. by Anonymous Coward · · Score: 5, Informative

      The basis of the attack is to include "extra" information in a forged response to a query for a non-existent host. Bind trusts that extra information and other DNS servers only pay attention to that information if it falls under certain strict rules.

      I ask for aaaae3fcg.bankofamerica.com and also send 100,000 responses to that query to that same recursive DNS server, that all say something to the effect of "a record aaae3fcg.bankofamerica.com = bah, also look to 666.666.666.666 for anything else related to bankofamerica.com. Oh, and cache this until the sun goes dark"

      Nobody asks Bind to believe the part about THE REST OF THE WHOLE BLOODY DOMAIN in the response for a single record in the domain. No other servers cache that information.

      That bind also used non-random ports made it a 5 minute attack over a fast link, instead of a 10 hour attack. That in the past bind used bad random numbers for the transaction ID made it a 30 packet attack...

      Who's the fanboy now?

    5. Re:This isn't a BIND problem. by Anonymous Coward · · Score: 2, Interesting

      It does not make the attack take "a little longer". It makes cache poisoning take as long as it took before the new attack method. If you only get a chance to poison the cache once whenever the cache purges the target record, then you have to guess the transaction ID correctly on the first try. The new thing about the current attack is that you get as many tries as you want at guessing transaction IDs and port numbers. That only works because servers allow glue to replace already cached records.

      Port randomization makes it less probable that you guess right, but since you can guess hundreds of times per second, you'll eventually succeed at poisoning the cache. If the server only accepted glue records when it doesn't already have the information cached, then you could only guess once per TTL.

    6. Re:This isn't a BIND problem. by Anonymous Coward · · Score: 1, Informative

      It doesn't. It simply ignores answers to questions it didn't ask.

      That makes it extremely unlikely (even in the face of larger and faster computers and network links) with it being made less likely by simply increasing your TTL.

    7. Re:This isn't a BIND problem. by Anonymous Coward · · Score: 3, Informative

      Not all dns servers cache the glue records beyond that transaction. Those that don't *cache* the glue are not vulnerable to this attack.

    8. Re:This isn't a BIND problem. by Anonymous Coward · · Score: 0

      Incorrect. Read the links in the article.

  10. I'm safe, in my ADSL utopia by caluml · · Score: 1

    So, if you have a GigE lan, any trojaned machine can poison your DNS during one night...

    People at home are safe though - that's the main thing. People on the local net at home are generally known people, with access to your house (WiFi excepted), and could probably find easier ways to steal your identity, capture keystrokes, etc. And you're safe from Internet people too - at the end of my 8Mb connection, I think I'd notice a Gb of traffic heading my way, to say nothing of it taking 125 times longer anyway.

    1. Re:I'm safe, in my ADSL utopia by AndIWonderIfIWonder · · Score: 1

      So, if you have a GigE lan, any trojaned machine can poison your DNS during one night...

      People at home are safe though - that's the main thing. People on the local net at home are generally known people, with access to your house (WiFi excepted), and could probably find easier ways to steal your identity, capture keystrokes, etc. And you're safe from Internet people too - at the end of my 8Mb connection, I think I'd notice a Gb of traffic heading my way, to say nothing of it taking 125 times longer anyway.

      Unfortunately most people on ADSL don't run their own name server, and instead use their ISPs nameserver. Hopefully not too many people will have GigE access to the ISPs nameserver so this attack probably won't work anyway.

    2. Re:I'm safe, in my ADSL utopia by Lennie · · Score: 1

      A server at a hosting-provider might be a nice place for this exploit. But everyone in the know, already knew this was a possible target.

      --
      New things are always on the horizon
    3. Re:I'm safe, in my ADSL utopia by NetCow · · Score: 1

      No, people are home are not safe since their ISP nameservers are unlikely to run at people's homes... DNS servers typically reside on high bandwidth links.

    4. Re:I'm safe, in my ADSL utopia by Firehed · · Score: 1

      You local machine's cache is probably safe, yes (or reasonably so). What about your ISP's, which in all likelihood you're using when you don't have a local cache of the required information? Not only are you vulnerable to that, but so is everyone else using your ISP.

      --
      How are sites slashdotted when nobody reads TFAs?
    5. Re:I'm safe, in my ADSL utopia by Anonymous Coward · · Score: 0

      who actually uses their ISPs nameserver? mine at least sucks hard (Green Mountain Access), not saying OpenDNS is any safer, but when you have it, why use the one from your ISP?

    6. Re:I'm safe, in my ADSL utopia by Tony+Hoyle · · Score: 0, Troll

      Compared to ARP spoofing which is much simpler and gains you the entire traffic flow to an IP address? I wouldn't bother with a DNS attack to be honest. Any attack that requires you be on the local network is uninteresting just because there are so many damned ways to do it already.

    7. Re:I'm safe, in my ADSL utopia by Lennie · · Score: 2

      It depends ARP spoofing is just confined to the broadcast-domain (possible a VLAN), while a DNS-server probably is used by a much broader 'audiance'.

      --
      New things are always on the horizon
    8. Re:I'm safe, in my ADSL utopia by uku · · Score: 1

      Unfortunately most people on ADSL don't run their own name server, and instead use their ISPs nameserver.

      I wouldn't be so sure about that. My DSL provider (Qwest) gave me an Actiontec router / firewall. Its internal DHCP server hands out the box's LAN IP 192.168.0.1 to clients as a DNS server. It appears to be a caching forwarder.

      So most DSL users with these boxes are running their own DNS server, they just don't know it.

      BTW, the Actiontec runs Busybox under the hood. I thought about hacking it but decided it wasn't worth the trouble and instead replaced its DHCP, DNS and WLAN AP functions with a Linksys WRT54GL running DD-WRT, leaving the Actiontec as just a gateway. This solved a major performance problem on the LAN.

    9. Re:I'm safe, in my ADSL utopia by Anonymous Coward · · Score: 0

      In some cases, DNS to non-ISP servers is blocked. This is typically excused with "oh noes think of the childern" child porn scaremongering (no, really) - in some jurisdictions, they use the DNS lookup logs as "evidence" (yes, you and I know how easy it would be to frame someone. The authorities like it that way), so all DNS except to the ISP's logged DNS is blocked.

  11. Isn't it a birthday attack? by Timothy+Brownawell · · Score: 2, Interesting

    Why can't the resolvers make sure to never have multiple outstanding requests that could potentially give the same answer? Check the cache for known zone boundaries and implied non-boundaries (if the server for foo.com also answers requests for x.y.z.foo.com, there's no zone boundary in between), and only send one request crossing a particular potential boundary at a time to a particular server (like a.c.foo.com and b.c.foo.com, we don't know yet that .c.foo.com is answered by the same server as .foo.com, since nothing under that domain is in the cache).

    1. Re:Isn't it a birthday attack? by Tony+Hoyle · · Score: 1

      They do, mostly. There's a certain amount of caching built in at all levels these days (which is why for example on windows you have to do ipconfig/flushdns sometimes if DHCP changes the address of a machine).

    2. Re:Isn't it a birthday attack? by boto · · Score: 1

      If I understood correctly, it is not a matter of having multiple outstanding requests, necessarily. You only need to make sure your (the attacker) reply to a request get to tghe caching server before the legitimate reply. The multiple requests for different names are needed only to make sure you can try again if your previous try didn't work.

      But maybe your suggestion could make the attack slower, if you reduce the number of queries to the upstream server when you are getting flooded with requests for different names under the same zone.

    3. Re:Isn't it a birthday attack? by Anonymous Coward · · Score: 0

      I agree with OP.... it seems like the birthday attack part could be mitigated with only having one outstanding request at a time... maybe its just that this is extra complexity that none of the standard software impliments...

  12. Limit the bandwidth, compare notes by CustomDesigned · · Score: 3, Insightful

    The exploit depends on a GigE connection to the DNS server. So a caching server behind a T1 is going to take much longer to exploit. So running your own caching server on a T1, DSL, or cable is going to be more resistant than using the ISP DNS with a fat pipe.

    If there is actually 1 GigE of DNS traffic at an ISP, they could distribute the requests to 100 bandwidth limited servers. Then the attack would only manage to poison one of the servers in 10 hours. Even more interesting would be if the 100 servers could compare notes to detect the poisoning.

    1. Re:Limit the bandwidth, compare notes by Tony+Hoyle · · Score: 3, Insightful

      A decent firewall could be trained to recognize an attack like this take preventative action easily enough - to even get it to work you'd have to saturate the link with packets hoping to get a 'hit'.. So you can do it in gigE in 10 hours. You can attack just about any connection based system using similar methods, but you'd have to saturate the link and it'd get noticed... especially if you did it at gigE bandwidth for 10 hours!!

    2. Re:Limit the bandwidth, compare notes by Timothy+Brownawell · · Score: 1

      What sort of preventative action? This already relies on the packets looking like the come from the real nameserver, so you can't just block them without cutting off large parts of the DNS hierarchy from your customers...

    3. Re:Limit the bandwidth, compare notes by Tony+Hoyle · · Score: 2, Insightful

      The packets won't look like that though will they - at that bandwidth they'd have to be on the local network so they'd be coming from a different source mac (and that's pretty much the only way to do this attack anyway - any ISP worth the money will drop any packets with fake source addresses on the floor before they get routed externally, so it'd have to be an internal attack).

      Worst case you shut down the DNS server and everyone drops to the backups until the attacker is traced and shut down.

    4. Re:Limit the bandwidth, compare notes by GuldKalle · · Score: 1

      I'm no expert, but would asking twice make it ^2 harder to get a hit?

      --
      What?
    5. Re:Limit the bandwidth, compare notes by Anonymous Coward · · Score: 1, Interesting

      or when updating your cache, compare with your cached copy, and if different ask again to double check.

    6. Re:Limit the bandwidth, compare notes by Anonymous Coward · · Score: 0

      perhaps and someone I know who knows the guy that discovered this originally claims he has firewall rules that would protect an unpatched dns server. However that just leads to DoS attacks potentially. If you want to shut down a website there are two ways, one would be to DoS the server itself, the other is to DoS the biggest group of people that are going to use the server. While this is harder to do because there are more servers out there, if you hit the top 10 ISPs in a given region you would probably affect most users in that region. Spoofing UDP packets is trivial, and if you were to flood those servers, and they detected it and blocked that server, then real responses wouldnt get through either. If you rate limit it you can still run into the same problem, although it would take a more constant attack to circumvent.

      Firewalls are nice and I think they should be used, but this problem has side effects when they are used the way most people will use them that can cause problems equal to if not greater than what they are trying to protect.

    7. Re:Limit the bandwidth, compare notes by Timothy+Brownawell · · Score: 1

      at that bandwidth they'd have to be on the local network

      Or be a medium-large botnet.

      (and that's pretty much the only way to do this attack anyway - any ISP worth the money will drop any packets with fake source addresses on the floor before they get routed externally, so it'd have to be an internal attack)

      So why was the original problem considered to be such a big deal? Any DNS poisoning attack requires that you pretend to be the real DNS server, so if it's only possible from the local network why was that big coordinated patch worth the effort?

    8. Re:Limit the bandwidth, compare notes by Anonymous Coward · · Score: 0

      Distributing the requests across 100 servers kind of defeats the purpose of caching. At that point you might as well have cached entries expire after 10 hours or less...

    9. Re:Limit the bandwidth, compare notes by Anonymous Coward · · Score: 0

      Double-checking might not be a bad idea, especially at the resolver level-- make sure your upstream DNS is not poisoned by checking against another DNS. This doesn't solve the problem, of course, but it makes an exploit a lot harder. The obvious downside is a doubling of traffic, which will be an issue if you have a DNS machine or line near capacity.

    10. Re:Limit the bandwidth, compare notes by geniusj · · Score: 1

      There's a surprising number of providers that don't do egress source filtering. I definitely wouldn't rely on other peoples' security.

    11. Re:Limit the bandwidth, compare notes by POTSandPANS · · Score: 1

      From what I read of the original attack, the poison response has to make it back to the server before the correct response. Unless the correct response takes hours to arrive (instead of milliseconds), it seems unlikely that poisoning could happen.

      maybe I'm not understanding the original attack correctly?

    12. Re:Limit the bandwidth, compare notes by Anonymous Coward · · Score: 0

      And a DNS server behind a T1 or something similar is a *very* easy ddos target. Maybe for small networks where you trust your users you can get away with something like this, but for any decent sized network this will not work.

    13. Re:Limit the bandwidth, compare notes by electrostatic · · Score: 1

      I'm less of an expert, but I think you may be correct. The attacker "asks for aaaae3fcg.bankofamerica.com and also sends 100,000 responses to that query to that same recursive DNS server" (copying an AC's example, above). The attacker does not see the DNS server's UPD packet and consequently hopes a match happens with one of the 100,000 responses. Assume the probability of success is p. Under your suggestion where the server must send a second query the probability of the attacker succeeding twice in a row becomes p^2.

      But, if p is close to 1, say 0.9, then p squared is 81%, not too bad.

      Being a non-expert about protocol details, a thought is that if the attacker's response is weird (technical term) then the DNS server query should be repeated more than a few times. What is "weird" here? Expiration time, IP physical location change, ... But his might place too much demand on the server to be practical.

      Maybe this is a better idea. DNS servers currently ignore responses with the wrong port number: they toss away all failures until they get a match. Furthermore, they also ignore all invalid responses that arrive AFTER a match. Example -- of the attacker's 100,000 responses 53,999 arrive before the hit and 46,000 after. So I propose that these failures be counted, both before a match and after a match. If either count hits a limit then respond accordingly. In particular, do not update the cache.

    14. Re:Limit the bandwidth, compare notes by TallMatthew · · Score: 1

      The proper place to traffic this would be within the server code.

      Anytime you receive a response that doesn't jive with the requestor's session ID, you should be suspicious. If you're bombarded with millions of them, you should throttle appropriately. Maybe switch to TCP queries exclusively.

    15. Re:Limit the bandwidth, compare notes by Phantom+Gremlin · · Score: 1

      No, there is no doubling of traffic.

      You only double-check if the new IP address differs from the old IP address which you already had in cache but whose TTL expired.

      That probably happens less than 1% of the time. So you are talking about a 1% increase in DNS traffic.

      In my (generally ignorant about DNS) opinion, double-checking is a brilliant idea.

    16. Re:Limit the bandwidth, compare notes by Phantom+Gremlin · · Score: 1

      Sorry no mod points to give you, and I'm not a DNS expert, but this seems to be a very very good idea.

  13. Where it could work... by Anonymous Coward · · Score: 0

    Some universities provide students (and others) on their network extreme fast links. Think of the fun of hijacking your fellow students DNS queries.

  14. Gigabit link? by ivoras · · Score: 1

    So, the Internet at large is safe (at least as safe as before) until most computers are connected with gigabit links?

    --
    -- Sig down
    1. Re:Gigabit link? by Tony+Hoyle · · Score: 1

      The internet at large is safe until either:

      1. Everyone is connected by a gigabit cable to a common nameserver, and the admin of the nameserver is too stupid to realize that their dns being saturated with bogus packets at gigE speeds for 10 hours is not normal.
      2. Both ISPs and routers for some reason decide stop filtering source addresses so that such an attack is possible without being directly connected.

    2. Re:Gigabit link? by Antibozo · · Score: 1

      The internet at large is safe until either:

      1. Everyone is connected by a gigabit cable to a common nameserver, and the admin of the nameserver is too stupid to realize that their dns being saturated with bogus packets at gigE speeds for 10 hours is not normal.

      2. Both ISPs and routers for some reason decide stop filtering source addresses so that such an attack is possible without being directly connected.

      3. Attackers find a way to remotely deploy and control malware on hundreds of thousands of computers in some sort of "malnet" or "botweb" or something.

      Oh, wait...

  15. That's a lot of bandwidth by TheLink · · Score: 1

    Good thing my ISP (TM Net/Streamyx) sucks eh? They're not even giving me the 512kbps I paid for.

    Let's see 10 hours * 1Gbps / 512kbps = 2.22 years.

    If you have a 10Mbps link that makes it 41 days.

    I think I would have made a dns request and got the valid dns reply into my cache before the 2 years are up. Or my connection would have gone down and I'd get a different IP by then. Thanks to TM Net for protecting me from such attacks ;).

    Either that or I'll be safe because the site would have DoSed me off the net with the flood of udp packets at 1Gbps...

    BTW I'm using djbdns (any bets on whether my ISP would have patched their nameservers already? ;) ). So I'm not sure if the attack might work as well.

    --
  16. set cache timeout significantly less than attack? by mlksys · · Score: 1, Informative

    I am not an expert on the problem.

    Is it possible that configuring cache timeout on the DNS server to be significantly less than the non trivial attack time might avoid the problem?

    I assume once cache is poisoned that that poison does eventually timeout in the cache unless the attack is continuous?

  17. I guess it's time... by Spy+der+Mann · · Score: 1

    for DNSv2.
    (whatever that means)

  18. Not surprised by Todd+Knarr · · Score: 1

    I'm not surprised. Port randomization doesn't make the attack impossible, just harder. It doesn't eliminate the birthday attack, it just increases the space you have to blanket to generate a collision. The only real fix for the attack is DNSSEC, allowing the software to reject forged responses completely. Short of that, I can only think of two more things that'd help:

    • Ignore additional data in responses, or at least additional data not responsive to the query itself. This goes beyond bailiwick checking. It means, on non-delegation responses, ignoring all additional data that's not for the exact same name as the query was for. On delegation responses, only A records for the names given in NS responses are looked at, nothing more (yes, that still leaves a hole for the attack to work on delegation responses).
    • Implement a request/response queue in the software. When a new request arrives, if it matches a request in the queue it's attached to that and no new request is sent out. Requests are split so that partial matches result in new requests only for the portions that don't already have a request pending. When received, responses are attached to their respective requests and the requests flagged as complete. After a short interval, completed requests have their responses collected and sent back to the querent. If multiple responses arrive for the same request, all responses to that request are dropped and a new query is generated and sent out. The headache here is appropriate safeguards against a DoS attack.

    These don't completely close down the attack, but I can't think of anything else that makes it harder short of having responses cryptographically signed and the signature verified as coming from the expected source. We need to start pounding on domain owners to implement DNSSEC. Yes, that's work. Yes, it's neccesary.

  19. Re:I guess it's time... for Secure DNS by mibh · · Score: 4, Insightful

    It's long past time for Secure DNS, which is a combination of TSIG+TKEY, SIG(0), and DNSSEC. End to end crypto authentication. Protects not just against off-path spoofed-source attacks like Kaminsky's, but also on-disk attacks against zone files, and provider-in-the-middle attackers who remap your NXDOMAIN responses into pointers to their advertising servers.

    Sadly, it's a year away even if everybody started now, and most people want to be last not first, so very few people have started, and some of those people are saying "why bother, if it's not an instant solution there's no point to it, let's scrap the design and start over." (Had it not taken 12 years to get Secure DNS defined, then the prospect of doubling that time would not daunt me as much as it does.)

    So, everybody please start already. NSD and Unbound from NLNetLabs supports DNSSEC. So does BIND, obviously. Sign your zones, and if your registrar won't accept keys from you, send them to a DLV registry while you wait for that. Turn on DNSSEC validation in your recursive nameservers. Write a letter to your congresscritter saying "please instruct US-DoC to give ICANN permission to sign the root DNS zone." In the time it would take for this Russian physicist's attack to work over your 512K DSL line (2.2 years, I heard?) we could completely secure the DNS or at least the parts of DNS whose operators gave a rat's ass about security (which is not the majority but it certainly includes your server, right?)

  20. DJB's take . . . by geniusj · · Score: 5, Informative

    For those that haven't seen it, djb threw up some information regarding this problem and various options a few years ago.

    http://cr.yp.to/djbdns/forgery.html

    1. Re:DJB's take . . . by vic-traill · · Score: 2, Informative

      For those that haven't seen it, djb threw up some information regarding this problem and various options a few years ago.

      http://cr.yp.to/djbdns/forgery.html

      I went and had a look at the thread (dated from Jul 30 2001) referenced in the excerpt at djb's site (follow the posting link in the URL above). As far as I can tell, Jim Reid was pooh-poohing the usefulness of port randomization, the approach used as an emergency backstop against Kaminsky's attach just over seven years later. To be fair, Reid was doing so in the context of advocating for Secure DNS.

      djb drives people crazy (particularly the BIND folks), but he's someone to listen to - is it the case, as I understand from reading through these docs, that in 2001, djb's dnscache performed the port randomization that everyone's been scrambling to deploy over the past several weeks for other implementations, including BIND?

      Or am I mis-interpreting here?

      --
      [17] Leary, T., White, C., Wood, P. R., Bhabha, W. D., and Wirth, N. Lambda calculus considered harmful. In Proceedings
    2. Re:DJB's take . . . by Maniacal · · Score: 2, Informative

      Here's something DJB posted to his mailing list on Thursday. Don't know if I'm allowed to post this here but what the heck:

      http://cr.yp.to/djbdns/forgery.html has, for several years, stated the results of exactly this attack:

            The dnscache program uses a cryptographic generator for the ID and
            query port to make them extremely difficult to predict. However,

            * an attacker who makes a few billion random guesses is likely to
                succeed at least once;
            * tens of millions of guesses are adequate with a colliding attack;

      etc. The same page also states bilateral and unilateral workarounds that would raise the number of guesses to "practically impossible"; but then focuses on the real problem, namely that "attackers with access to the network would still be able to forge DNS responses."

      I suppose I should be happy to see public awareness almost catching up to the nastiest DNS attacks I considered in 1999. However, people are deluding themselves if they think they're protected by the current series of patches. UIC is issuing a press release today on this topic; see below.

      ---D. J. Bernstein, Professor, Mathematics, Statistics, and Computer Science, University of Illinois at Chicago

      DNS still vulnerable, Bernstein says

      CHICAGO, Thursday 7 August 2008 - Do you bank over the Internet? If so,
      beware: recent Internet patches don't stop determined attackers.

      Network administrators have been rushing to deploy DNS source-port randomization patches in response to an attack announced by security researcher Dan Kaminsky last month. But the inventor of source-port randomization said today that new security solutions are needed to protect the Internet infrastructure.

      "Anyone who knows what he's doing can easily steal your email and insert fake web pages into your browser, even after you've patched," said cryptographer Daniel J. Bernstein, a professor in the Center for Research and Instruction in Technologies for Electronic Security (RITES) at the University of Illinois at Chicago.

      Bernstein's DJBDNS software introduced source-port randomization in
      1999 and is now estimated to have tens of millions of users. Bernstein released the DJBDNS copyright at the end of last year.

      Kaminsky said at the Black Hat conference yesterday that 120,000,000 Internet users were now protected by patches using Bernstein's randomization idea. But Bernstein criticized this idea, saying that it was "at best a speed bump for blind attackers" and "an extremely poor substitute for proper cryptographic protection."

      DNSSEC, a cryptographic version of DNS, has been in development since
      1993 but is still not operational. Bernstein said that DNSSEC offers "a surprisingly low level of security" while causing severe problems for DNS reliability and performance.

      "We need to stop wasting time on breakable patches," Bernstein said. He called for development of DNSSEC alternatives that quickly and securely reject every forged DNS packet.

      Press contact: Daniel J. Bernstein

      --
      MG
    3. Re:DJB's take . . . by Antibozo · · Score: 1

      Bernstein said that DNSSEC offers "a surprisingly low level of security" while causing severe problems for DNS reliability and performance.

      More FUD. It's hard to imagine how DNS could be less reliable than it is now, and port randomization actually decreases performance significantly without even assuring security; effective port randomization additionally starves the system for entropy making everything else the system does less secure.

      DNSSEC is the only alternative currently on the table that actually addresses cache poisoning head-on. It would be nice if influential people would either state clearly what the vulnerabilities are so they can be addressed properly, or just keep their opinions to themselves. Even better would be for them to, say, implement DNSSEC in their widely used resolving code, where applicable.

    4. Re:DJB's take . . . by geniusj · · Score: 1

      djb drives people crazy (particularly the BIND folks), but he's someone to listen to - is it the case, as I understand from reading through these docs, that in 2001, djb's dnscache performed the port randomization that everyone's been scrambling to deploy over the past several weeks for other implementations, including BIND?

      Or am I mis-interpreting here?

      You are correct. djbdns was "not vulnerable" (in the same sense that BIND is "not vulnerable" now) to this attack.

      As you mentioned, he can be abrasive, but he's definitely contributed some valuable things. See SYN cookies as another djb-contributed and widely-deployed solution to a problem.

    5. Re:DJB's take . . . by Anonymous+Pundit · · Score: 1

      You aren't misinterpreting -- from Dan Kaminsky's blog:

      After evaluating several options, one approach was clear -- and, I must admit, somewhat embarassing to Paul [Vixie, primary architect of BIND].

      DJB was right. All those years ago, Dan J. Bernstein was right: Source Port Randomization should be standard on every name server in production use.

      There is a fantastic quote that guides a lot of the work I do: Luck is the residue of design. Dan Bernstein is a notably lucky programmer, and that's no accident. The professor lives and breathes systems engineering in a way that my hackish code aspires to one day experience. DJB got âoeluckyâ here â" he ended up defending himself against an attack he almost certainly never encountered.

      Note the weasel words here, that DJB got lucky and ended up defending against an attack he never encountered. Even while crediting him for being right, Kaminsky won't admit that Bernstein anticipated these attacks several years ago, documented them clearly, and designed djbdns to deal with them as best the broken protocol allows.

      In all of Kaminsky's self-congratulatory hype about finding the bug and coordinating the patch effort, he never once suggests the obvious -- that people at least consider using the most secure DNS software available by switching to djbdns.

      Steve Friedl is better at crediting Bernstein -- way down near the bottom of the excellent An Illustrated Guide to the Kaminsky DNS Vulnerability Friedl says this:

      DJB Was Right

      One nameserver is notable for having gotten both the query-id and source-port randomness right from the start: DJBDNS by the legendary Daniel J. Bernstein.

      Though long a lightning rod for controversy, he's clearly walked the walk on security: there's never been a security vulnerability in DJBDNS.

      The notion that Bernstein drives people crazy and has been a lightning rod for controversy stems from his appropriately harsh and blunt assessments of poorly designed software, particularly Sendmail and BIND. But Bernstein's critics are essentially admitting that for them, correctness is less important than not having one's feelings hurt.

    6. Re:DJB's take . . . by Antibozo · · Score: 1

      Note the weasel words here, that DJB got lucky and ended up defending against an attack he never encountered. Even while crediting him for being right, Kaminsky won't admit that Bernstein anticipated these attacks several years ago, documented them clearly, and designed djbdns [cr.yp.to] to deal with them as best the broken protocol allows.

      That's because there's a significant performance hit associated with:

      1. Creating a new UDP socket with each transaction.
      2. Getting 16 bits of entropy for a randomized port number.
      3. Assuring that the socket is bound to the randomized port number; this may take multiple tries since the port may already be in use.
      4. Keeping the socket open concurrently with all your other request sockets while you wait for a response.
      5. Closing the socket after the response is received.
      6. Doing all this in a way that you don't run out of source ports to bind to.
      7. Not DoS-ing other parts of the system that may require UDP ports.

      Given all of that additional overhead and complexity, and not yet knowing a specific attack that this behavior will defend against, it's not a clearly superior way to behave. You're slowing the system down and chewing up entropy for no clear gain.

      So, yes, djb is lucky in that someone found an attack that this behavior defended against, and no one has so far found an attack that is exacerbated by this behavior.

    7. Re:DJB's take . . . by Magada · · Score: 1

      You're disingenuous to the extreme, sir. There was reasoning behind his "inefficient" design - it's not like he got up one morning and said "Oh hey, I know what I'll do today - I'll go and implement DNS in the most ass-backwards way I can think of!". Luck has nothing to do with it.

      --
      Something bad is coming when people are suddenly anxious to tell the truth.
    8. Re:DJB's take . . . by Antibozo · · Score: 1

      I'm not being disingenuous at all. Needless complexity is the enemy of security, and until you describe an attack, the complexity of source port randomization is needless. What's disingenuous is to pretend that djb wasn't adding complexity speculatively. Anyone can toss additional complexity into an implementation; this is usually considered "security through obscurity". The more complex implementation is trickier to audit, and may have obscure degenerate failure modes. It doesn't become useful security until someone finds an attack it defends against, and even then it may turn out to be the wrong approach in the long run.

    9. Re:DJB's take . . . by Magada · · Score: 1

      Oh, but you are. Here's a comment from 2001 clearly stating the class of attacks against which source port randomization works as a mitigating factor. The attack vector was known, the solution known... but not implemented, except by DJB.

      Are you seriously suggesting that no hacker ever found out about that particular trick until Kaminsky made such a fuss about it?

      --
      Something bad is coming when people are suddenly anxious to tell the truth.
    10. Re:DJB's take . . . by Antibozo · · Score: 1

      Here's a comment from 2001 clearly stating the class of attacks against which source port randomization works as a mitigating factor.

      The entropy of query IDs was thought to be adequate to defend against all known methods of blind collision. Of course, adding entropy in the source port makes it harder, but that's not a reason to do so by itself. You could also, for example, note when a nameserver has multiple IP addresses and have it randomize source address as well, but djb didn't do that, nor did he demonstrate that defending against speculative blind collision methods was worth the cost in system entropy and code complexity.

      If there's any disingenuity here, it's in how you keep ignoring the effect additional complexity has on analyzing the security of the implementation, and that the approach djb chose may in fact have created vulnerabilities in other areas. To pretend that luck was not a factor here is absurd—even the best poker players need a little luck.

      Are you seriously suggesting that no hacker ever found out about that particular trick until Kaminsky made such a fuss about it?

      It's obvious no one knew about this attack until recently. Attacks don't stay secret for 7 years. A few weeks, sure, even a month or two, perhaps.

    11. Re:DJB's take . . . by Magada · · Score: 1

      The entropy of query IDs was thought to be adequate to defend against all known methods of blind collision.

      There seems to have been no valid technical reason for that particular belief, no?

      You could also, for example, note when a nameserver has multiple IP addresses and have it randomize source address as well,

      What good would that do? How would treating a particular deployment scenario do anything for the security of all the different servers?

      If there's any disingenuity here, it's in how you keep ignoring the effect additional complexity has on analyzing the security of the implementation, and that the approach djb chose may in fact have created vulnerabilities in other areas.

      You meant "might" instead of "may", probably. It's improbable (verging on damn near impossible) that the multi-vendor patch would have gone out (after months of hand-wringing) if anyone had suspected the fix might introduce other problems.

      It's obvious no one knew about this attack until recently. Attacks don't stay secret for 7 years.

      How is it obvious?

      --
      Something bad is coming when people are suddenly anxious to tell the truth.
    12. Re:DJB's take . . . by Antibozo · · Score: 1

      The entropy of query IDs was thought to be adequate to defend against all known methods of blind collision.

      There seems to have been no valid technical reason for that particular belief, no?

      At the time, there was no valid technical reason against it, so adding source port randomization was speculative. You seem to be having a hard time understanding that speculative measures require luck in order to pan out. That's why they're speculative.

      You could also, for example, note when a nameserver has multiple IP addresses and have it randomize source address as well,

      What good would that do? How would treating a particular deployment scenario do anything for the security of all the different servers?

      You sound a lot like the guy djb was responding to in the post you cited... which is my point exactly. It may not help every scenario, but it adds log2(number of addresses) bits of entropy. And some systems may not have a lot of free UDP ports, so source port randomization doesn't help in every scenario either. It's a judgment call where you draw the line on adding speculative countermeasures, and djb made a lucky call on this one, as far as we know.

      the approach djb chose may in fact have created vulnerabilities in other areas.

      You meant "might" instead of "may", probably.

      I don't know where you are getting your statistics, but I definitely mean "may", since there always may be vulnerabilities. Depending on the deployment scenario, there certainly are. For example, running a heavily used source-port-randomizing nameserver on a system that also needs to generate lots of SSL keys may be detrimental to the quality of those keys if it starves the entropy pool. Running a heavily used source-port-randomizing nameserver on systems that also issue a lot of RPC calls may impair performance if enough queries are outstanding that file descriptors or UDP ports are unavailable for the RPC clients to use. Just a couple of examples off the top of my head. And in any particular implementation, there may be problems people haven't discovered yet. That's what got us here, after all.

      It's improbable (verging on damn near impossible) that the multi-vendor patch would have gone out (after months of hand-wringing) if anyone had suspected the fix might introduce other problems.

      Your statistical oracle is off here too. The multi-vendor patch was known to cause performance problems on Solaris at the time of release. Your oracle will advise you that performance is "damn near certainly" part of the gestalt measure known as "security".

      The solution to DNS cache poisoning has a name: DNSSEC. Source port randomization is a band-aid on top of another band-aid. Until recently, it was a speculative band-aid on top of a necessary band-aid.

    13. Re:DJB's take . . . by Magada · · Score: 1

      It may not help every scenario, but it adds log2(number of addresses) bits of entropy.

      That's not much, and as you stated it doesn't help in every scenario, unlike the source port thing.

      Point taken on the DoS scenarios you propose, but they're definitely less serious, as far as the user is concerned. An unavailable DNS is better than a spoofed one, imo.

      Your statistical oracle is off here too.

      I was going to take that statistical oracle for a check-up one of these days. Seems the date just got moved up a bit.

      The solution to DNS cache poisoning has a name: DNSSEC

      Afaik, there are known key distribution and rollover problems with the standard as proposed. Also, I'm not so fond of the idea of a single entity controlling the domain name system.

      --
      Something bad is coming when people are suddenly anxious to tell the truth.
    14. Re:DJB's take . . . by Antibozo · · Score: 1

      Point taken on the DoS scenarios you propose, but they're definitely less serious, as far as the user is concerned. An unavailable DNS is better than a spoofed one, imo.

      We agree on that.

      Afaik, there are known key distribution and rollover problems with the standard as proposed.

      DNSSEC as proposed ends up with a single root trust anchor, which is the easiest possible configuration as far as key distribution is concerned. There aren't any rollover problems that I know of; what's currently missing is the capability of most registrars to authenticate and sign DS records, which affects initial establishment and rollover of key-signing keys, and a clear plan from Verisign to sign .com and .net. Several ccTLDs have things in place already, and .gov and .org are close to deployment, and ICANN plans to sign the root by the end of the year.

      Also, I'm not so fond of the idea of a single entity controlling the domain name system.

      This aspect is no different from the status quo.

    15. Re:DJB's take . . . by geniusj · · Score: 1

      There was nothing speculative about it. As Magada has noted, his comment in 2001 clearly outlined the vulnerability. 65k is 65k.. It's not a very good barrier against mischief. This has seriously been known about for a while - thanks partially to djb. I find it funny, however, that it has all of a sudden become such a huge blip on the radar. His solution wasn't a perfect one, but it takes about 2^16 times longer to crack than previous implementations and it was fully compatible with what everyone was already using.

      I'd personally find it nice if we could fix the problem without the administrative overhead of something like DNSSEC. We already have registries of authoritative DNS servers to solve the problem of record authenticity. Let's focus on solving the issue of cache poisoning rather than the issue of record authenticity - which has been solved since the beginning ...

    16. Re:DJB's take . . . by Antibozo · · Score: 1

      As Magada has noted, his comment in 2001 clearly outlined the vulnerability.

      No, djb's comment doesn't outline the vulnerability Kaminsky identified at all. It is purely speculative on a "blind collision" attack, i.e. assuming you can find some way to effect one. There were blind collision attacks before, and perhaps there will be other blind collision attacks in the future; it's a class of attack, not a vulnerability. Kaminsky identified a new way to effect one, and all the source port randomization djbdns has done between 2001 and last month has been wasted CPU cycles. I expect it adds up to a pretty hefty energy bill if you tot it all up. Yes, djb bet that another blind collision vector would be discovered, and he was lucky—eventually, seven years later, one was. The fact that it took seven years might tell you his intuition was a little off as far as how imminent the problem was. By now, after all, we were supposed to have DNSSEC, and cache poisoning was to be a thing of the past.

      Let's focus on solving the issue of cache poisoning rather than the issue of record authenticity

      DNS will always be vulnerable to cache poisoning, unless it validates responses against a trusted third party. You can use DNSSEC or you can try to devise something new that accomplishes the same thing. Either way, you have the overhead of third-party key management.

  21. Double check by CustomDesigned · · Score: 1

    or when updating your cache, compare with your cached copy, and if different ask again to double check.

    That is the best idea I've heard yet.

  22. 32 bit guess vs. 16 bit guess. by Animats · · Score: 1

    Right. Before the fix, you had to guess a 16-bit number. After the fix, you have to guess a 32-bit number. About 10 hours on a gigabit Ethernet should let you try the necessary 4 billion packets. This isn't an attack one could run against a client out on a DSL line, but if you were able to take over one machine in a colo, you might be able, over time, to get traffic for other machines directed to yours.

    If DNS used a 64-bit or 128 bit number to tie the response to the request, and the DNS client had a crypto-grade random number generator, guessing would be hopeless. An intermediate technical fix would be to define a "DNSv2" message format, with a 128-bit random message ID and a rule that no DNSv2 client will accept an answer to a question it didn't ask. (Some of the attacks depend upon an attacker forcing a query for "1245.example.com", which won't be found, and a phony DNS blindly blasting replies with random IDs for "www.example.com", which is accepted because it's in the same "bailiwick".) If everybody other than desktop clients went to an improved DNS, and desktop clients talked only to an improved server, we'd be reasonably OK.

    DNSSEC, which has a whole signed-certificate chain like SSL, may be a way out of this, but it's much more complex than the existing DNS.

    1. Re:32 bit guess vs. 16 bit guess. by LarsG · · Score: 2, Interesting

      This isn't an attack one could run against a client out on a DSL line, but if you were able to take over one machine in a colo, you might be able, over time, to get traffic for other machines directed to yours.

      True. On the other hand, if you are on the same network segment then there are many other options available to you if you want to do evil. Blasting about 4 terabytes (1 Gb/s for 10H) at a DNS server isn't exactly a quiet attack, so if you intend to stay below the radar you're probably a lot better off trying some good old arp spoofing or tcp hijacking instead.

      --
      If J.K.R wrote Windows: Puteulanus fenestra mortalis!
  23. Re:I guess it's time... for Secure DNS by Anonymous Coward · · Score: 0

    Thanks for beating me to the punch. As stated in the CERT KB article at http://www.kb.cert.org/CERT_WEB%5Cservices%5Cvul-notes.nsf/id/800113, "It is important to note that without changes to the DNS protocol, such as those that the DNS Security Extensions (DNSSEC) introduce, these mitigations cannot completely prevent cache poisoning." So DNSSEC is a viable solution.

    Additionally, the folks at Emergingthreats.net are re-writing the Snort DNS preprocessor to detect DNS cache poisoning attacks on cryptographically-weak session IDs. http://www.emergingthreats.net/content/view/90/1/

  24. Egress filtering? by Anonymous Coward · · Score: 0

    Perhaps now is a good time for ISPs everywhere to start doing egress filtering? There is NEVER a good reason for a forged IP address to leave a network.

  25. More sites need to implement DNSSEC, by sega01 · · Score: 1

    Especially the TLDs. Very few TLDs have DNSSEC which would make this attack practically impossible. IPv6 would allow for more source addresses as well, which is discussed in the link below. If you run a recursive resolver I highly advise using Unbound. It is the most secure resolver I know of and has an incredible amount of thought put into it (without BIND's bloat). It has many provisions for DNSSEC-less zones. See: http://www.unbound.net/documentation/patch_announce102.html

    1. Re:More sites need to implement DNSSEC, by chrysalis · · Score: 1

      Here's what DJB said about this:

      Last week's surveys by the DNSSEC developers ("SecSpider") have found a
      grand total of 99 signed dot-com names out of the 70 million dot-com
      names on the Internet.

      Am I the only person amazed by this? We've had fifteen years of
      forgeries, fifteen years of concentrated work on DNSSEC, and we can't
      even get simple cryptographic signatures deployed. What an embarrassment
      for cryptography!

      Jos Backus writes:
      http://cr.yp.to/djbdns/forgery.html states:
      "My top priority for djbdns is to support nym-based security."

      Hmmm. This reminds me that some web-page updates are overdue; it's time
      for me to announce the results of the attacks that the entire Internet
      will be panicking about in 2015. :-)

      When I wrote that web page several years ago, I focused on deployment
      difficulties (which are obviously a huge issue) and delegating security
      to poorly managed central Internet servers (which is a big issue for
      high-security sites). But there are other reasons, maybe more important
      reasons long term, to be dissatisfied with DNSSEC, motivating the
      development of DNSSEC2 and DNSSEC3:

      * RFC 4033, Section 4: "DNSSEC provides no protection against denial
      of service attacks." In fact, DNSSEC makes denial of service even
      easier than it was before.

      The basic problem is that DNSSEC signs _records_ but provides no
      protection for _packets_. After several packets a DNSSEC cache can
      see that it doesn't have the expected signatures and that there
      must have been forgeries, but the cache simply fails at that point;
      it doesn't have any way to find the right data.

      With DNSSEC2, every response packet has an immediately and
      efficiently verifiable high-security cryptographic signature.
      Forged packets are simply discarded.

      * RFC 4033, Section 4: "DNSSEC is not designed to provide
      confidentiality." DNSSEC doesn't even try to encrypt packets.

      In fact, DNSSEC makes private DNS data _much_ easier for attackers
      to see than before, because it exposes a huge amount of information
      through "NSEC," and creates interoperability failures if NSEC is
      disabled. The latest "NSEC3" adds even more complications but does
      essentially nothing to repair the privacy leaks; NSEC3 might be
      successful at its marketing goal of stopping European privacy
      regulators but it will almost never be successful at the security
      goal of stopping attackers.

      With DNSSEC3, every request and response packet has high-security
      encryption and authentication. Both DNSSEC2 and DNSSEC3 completely
      avoid the "NSEC" privacy leaks.

      * Although the DNSSEC protocol allows some conservative cryptographic
      options that won't be broken in the near future, what DNSSEC users
      are actually being told to deploy---to partially compensate for
      serious speed problems in DNSSEC---is something that big companies
      and botnet operators can _already_ break, namely 1024-bit RSA.

      We're still years away from a _public_ announcement of a successful
      1024-bit RSA factorization, but I think that telling people to

      --
      {{.sig}}
    2. Re:More sites need to implement DNSSEC, by Antibozo · · Score: 1

      Your quotation attributed to djb doesn't seem to make much sense, and you don't indicate where you found it.

      The latest "NSEC3" adds even more complications but does essentially nothing to repair the privacy leaks; NSEC3 might be successful at its marketing goal of stopping European privacy regulators but it will almost never be successful at the security goal of stopping attackers.

      With DNSSEC3, every request and response packet has high-security encryption and authentication. Both DNSSEC2 and DNSSEC3 completely avoid the "NSEC" privacy leaks.

      These statements appear mutually contradictory. Presumably the "privacy leaks" are the enumeration via NSEC of zone data, which some people think should be private (one wonders how much security they think they get out of that tactic, or why they put "private" information in a publicly accessible system). Yes, NSEC3 solves this problem. The FUD that it will "almost never be successful", like most FUD, comes without any example of a weakness in NSEC3.

      * Although the DNSSEC protocol allows some conservative cryptographic options that won't be broken in the near future, what DNSSEC users are actually being told to deploy---to partially compensate for serious speed problems in DNSSEC---is something that big companies and botnet operators can _already_ break, namely 1024-bit RSA.

      Really? That's news to me. You can see how plausible that claim is to Schneier here.

      Certainly I wouldn't rely on 1024-bit RSA for the long haul, but of course, regular key rotation is part of the DNSSEC operational guidelines—months for zone signing keys, and 1-2 years for key signing keys. So if 1024-bit keys do become factorable, one simply switches to 2048-bit keys on the next rotation.

      The "serious speed problems" claim is exactly the sort of FUD that keeps coming up. Yet no one ever cites any recent research, or quotes any actual numbers. I wonder why that is.

    3. Re:More sites need to implement DNSSEC, by chrysalis · · Score: 1

      It was posted on the djbdns list : http://marc.info/?l=djbdns&m=121832806123954&w=2

      --
      {{.sig}}
  26. Options I see by dayton967 · · Score: 1

    I see many options as potential to limit the security risks. 1) DNS moves to TCP only, the negative side to this, DNS becomes slower. 2) A simple solution, might be to modify the resolvers, so they resolve from multiple sources, and compare the responses. These could both be from the same server or from companion servers in the same network. 3)Add a token to the DNS query. This could be done via a hash with the hostname and a salt. 4) Single level Recursion, each level will only request from an upstream dns server, allows for limiting access, but requires a complete overhaul of the DNS infrastructure. 5) DNSSEC

    1. Re:Options I see by essinger · · Score: 1

      So how many of those could be implemented without breaking a significant portion of the internet infrastructure that depends on DNS working the old way?

  27. Re:I guess it's time... for Secure DNS by Antibozo · · Score: 1

    Sign your zones, and if your registrar won't accept keys from you, send them to a DLV registry while you wait for that.

    People who are interested in signing their zones may want to read up on how things work at www.dnssec.net and take a look at the Sparta tools. It's really not difficult, and there is a lot of information out there.

  28. GigE pipe? by POTSandPANS · · Score: 1

    If this happened to my DNS servers, I don't think I'd even notice it as poisoning right away. I'd likely just assume it was a DoS attack and deal with it accordingly. I also have my DNS servers on 100 Meg ports so unless I were on vacation, I'd likely notice it long before the cache got poisoned.

  29. GigE connections are (and will be) fairly common by shanec · · Score: 1

    I'd just like to point out that GigE connections are becoming more and more available. Most corporate networks that are being built, or upgraded are being built with GigE to the desktop. Granted, most are set to 100k, but all it takes is one non-so-tech-savvy manager that demands er..."requires" GigE be turned on for his desktop, to be infected by spyware / some random virus.

    The rest of the story will be blamed on the DNS administrator.

  30. News? by Anonymous Coward · · Score: 0

    while (1) {
       for (i = 0; i < port_range; i++) {
          PoisonDNSCache(i);
       }
    }

  31. An alternative? by tobias.sargeant · · Score: 1

    What would break if you ignored additional DNS entries that changed IPs of entries already present in the cache and instead set the TTL of the entry to something low? That way it you'd stop poisoning of anything anyone cared about, but you'd still provide a way for DNS changes to propagate faster than the originally set TTL would allow for. You might have to combine that with a counter to stop denial of service attacks, but that wouldn't impact too much on legitimate traffic.

  32. Questions for experts by Anonymous Coward · · Score: 0

    A couple of questions for experts:

    1) Would the use of TCP instead of UDP solve this problem? Besides the (quite huge) protocol overhead and adoption, what are the main issues?

    2) Could this be solved by temporarily (e.g. 30 sec) rejecting packets from a nameserver which already resolved N (e.g. 8) NXDOMAIN's for a single domain thus slowing down the attack? Does the RFC is allow this?

  33. Why not just do flood-checking? by LinuxDon · · Score: 1

    Why not have the DNS server check for flooding?
    Basically when DNS poisoning is done you'll be sending thousands of fake/false packets that the DNS server receives and then ultimately rejects until one slips through because it guessed the correct ID/source port.

    If the DNS server were to count the number of false/wrong packets from each source address, it would quickly detect when something is wrong. It could then just reject all packets from this IP and perhaps use a secondary DNS server for the specific domain. Or it could send the request to another DNS server which isn't under attack.

    Wouldn't that just fix the entire issue and get this stuff over with?

    1. Re:Why not just do flood-checking? by LinuxDon · · Score: 1

      In addition:
      An AC mentioned the following in this same thread:
      "or when updating your cache, compare with your cached copy, and if different ask again to double check."

      The combination of these two solutions (flood-checking and double checking) would solve the issue completely. The DNS server could do double or triple checking when it detects a flood.

    2. Re:Why not just do flood-checking? by ZippyCycle · · Score: 1

      This would become a DDoS vector. All I need to do is start hammering your resolving name server with response packets for commonly used domains and suddenly you can't access anything anywhere.

    3. Re:Why not just do flood-checking? by LinuxDon · · Score: 1

      Not if you'd use double checking when you detect an attack. Then it would only slow the DNS lookup down a little bit.

    4. Re:Why not just do flood-checking? by Uncle+Warthog · · Score: 1

      Why not just double check all the time? Better yet, why not just always make it best two out of three? Sure, it would increase DNS traffic bandwidth but, compared to a lot of other stuff out there, DNS traffic is pretty light-weight.

  34. Press release from DJB by chrysalis · · Score: 1

    DJB made a press release about this:

    ---D. J. Bernstein, Professor, Mathematics, Statistics, and Computer Science, University of Illinois at Chicago

    DNS still vulnerable, Bernstein says.

    CHICAGO, Thursday 7 August 2008 - Do you bank over the Internet? If so, beware: recent Internet patches don't stop determined attackers.

    Network administrators have been rushing to deploy DNS source-port randomization patches in response to an attack announced by security researcher Dan Kaminsky last month. But the inventor of source-port randomization said today that new security solutions are needed to protect the Internet infrastructure.

    "Anyone who knows what he's doing can easily steal your email and insert fake web pages into your browser, even after you've patched," said cryptographer Daniel J. Bernstein, a professor in the Center for Research and Instruction in Technologies for Electronic Security (RITES) at the University of Illinois at Chicago.

    Bernstein's DJBDNS software introduced source-port randomization in 1999 and is now estimated to have tens of millions of users. Bernstein released the DJBDNS copyright at the end of last year.

    Kaminsky said at the Black Hat conference yesterday that 120,000,000 Internet users were now protected by patches using Bernstein's randomization idea. But Bernstein criticized this idea, saying that it was "at best a speed bump for blind attackers" and "an extremely poor substitute for proper cryptographic protection."

    DNSSEC, a cryptographic version of DNS, has been in development since 1993 but is still not operational. Bernstein said that DNSSEC offers "a surprisingly low level of security" while causing severe problems for DNS reliability and performance.

    "We need to stop wasting time on breakable patches," Bernstein said. He called for development of DNSSEC alternatives that quickly and securely reject every forged DNS packet.

    --
    {{.sig}}
  35. Unworthy of mention by Spazmania · · Score: 1

    Sure, because nobody is going to notice a gigabit of traffic pouring into their DNS server for 10 hours in order to get -just-one- cache poisoning.

    Sorry, but this extension of the attack is simply unworthy of mention. What is worthy of mention is the danger posed by corporate NAT boxes that reorder the source ports sequentially, defeating randomization.

    --
    Moderating "-1, Disagree" is simple censorship. Have the guts to post your opinion.