Slashdot Mirror


Kaminsky DNS Bug Claimed Fixed By 1-Character Patch

An anonymous reader writes "According to a thread on the bind-users mailing list, there is nothing inherent in the DNS protocol that would cause the massive vulnerability discussed at length here and elsewhere. As it turns out, it appears to be a simple off-by-one error in BIND, which favors new NS records over cached ones (even if the cached TTL is not yet expired). The patch changes this in favor of still-valid cached records, removing the attacker's ability to successfully poison the cache outside the small window of opportunity afforded by an expiring TTL, which is the way things used to be before the Kaminsky debacle. Source port randomization is nice, but removing the root cause of the attack's effectiveness is better."
Update: 08/29 20:11 GMT by KD : Dan Kaminsky sent this note: "What Gabriel suggests is interesting and was considered, but a) doesn't work and b) creates fatal reliability issues. I've responded in a post here."

120 comments

  1. What about other DNS servers ? by neonux · · Score: 5, Insightful

    If this is indeed not a protocol flaw, how come the same vulnerability is present on other DNS servers as well ?

    Do they all use the same code from BIND for this particular 'feature' ?

    --
    @neonux
    1. Re:What about other DNS servers ? by larry+bagina · · Score: 5, Informative

      There is a small window of time when a malicious record could be cached by ANY DNS server. (Port randomization makes guessing the correct port to hit much harder) Bind (and only bind) has/had a huge fucking bug that opened that window of time.

      --
      Do you even lift?

      These aren't the 'roids you're looking for.

    2. Re:What about other DNS servers ? by Anonymous Coward · · Score: 3, Interesting

      Bind is effectively the reference implementation, so probably, or they made the same mistake at any rate. That's not surprising, this is a very subtle bug that requires knowledge of the Kaminsky attack to recognise. It's worth pointing out however that djbdns had source-port randomisation from the start as a defensive measure, and thus remained very resistant to this attack.

    3. Re:What about other DNS servers ? by gclef · · Score: 4, Informative

      No, this solution is basically breaking the DNS functionality that Kaminsky exploited. By design, the referral records were supposed to overwrite the cache (which some organizations do use). This patch breaks that.

    4. Re:What about other DNS servers ? by B'Trey · · Score: 5, Insightful

      That seems accurate to me. After all, what happens when a DNS record gets updated? With the new behavior, you won't see the change until your cached record expires. That may be preferable to a gaping security hole which lets attackers poison your cache, but I don't think it's accurate to call the issue a bug in BIND. I believe BIND was working as intended to allow updated records to overwrite older ones.

      --

      "The legitimate powers of government extend only to such acts as are injurious to others." Thomas Jefferson.

    5. Re:What about other DNS servers ? by mrsbrisby · · Score: 3, Informative

      how come the same vulnerability is present on other DNS servers as well ?

      It isn't. djbdns for example, is not affected. I don't think maradns is affected either.

      Do they all use the same code from BIND for this particular 'feature' ?

      Very likely.

      BIND has a very permissive license; most other DNS servers exist to facilitate lock-in with a particular vendor's stack, or to push some enhanced feature set, so they'd be considered foolish if they didn't copy BIND's source code where they could.

      If this is indeed not a protocol flaw,

      Well, I'm not sure it is unfair to call this a protocol flaw. Maybe a design flaw.

      BIND has resisted port randomization because "the RFC said so"- never mind that they wrote the RFC, and that no clients bother checking. Because it stopped spoofing attacks ten years ago, and it stops them today, most DNS servers- including those derived from BIND- do this.

      BIND also uses these very complicated credibility rules for determining if it can override existing cache-knowledge. This can presumably save one or two queries per dot, but surely it would be safer to only cache answers to questions that were asked. That is, by the way, what djbdns does.

      Most DNS spoofing attacks can also be solved by solving most blind spoofing attacks. There's a little reluctance to do so, because it makes things like DNSSEC largely obsolete for their intended audience. As a result, we see a lot of chest thumping and stomping in the temper tantrum. You can tell when you're about to get into one because they start by saying "If we just switched to DNSSEC by now, we wouldn't be having this problem."

      Of course, since BGP peers now route-filter everywhere on the internet (they didn't used to!), mandatory source filtering is a completely possible and realistic way to stop this and other similar problems...

    6. Re:What about other DNS servers ? by More+Trouble · · Score: 5, Insightful

      After all, what happens when a DNS record gets updated? With the new behavior, you won't see the change until your cached record expires.

      You don't see that update until the TTL expires. That's why there's a TTL. If you're planning to make a change, lower the TTL well in advance to allow the new TTL to propagate.

    7. Re:What about other DNS servers ? by Anonymous Coward · · Score: 0

      Is that a feature or side effect. It sounds like its a side effect. Anyone requiring a non-published side effect for proper operation at any feat is likely to be disappointed in the future as there exists no requirement to maintain such a side effect.

      It sounds like people need to come up with a better plan based on proper design rather than a side effect.

    8. Re:What about other DNS servers ? by Anonymous Coward · · Score: 2, Interesting

      +1 Insightful

      This is what the DNS books I've read say happens. When I first started playing with DNS I was always surprised and could never explain why my updated records became active before the old record's TTL expired. Sounds like a bug that's been needing to be fixed for a long time now.

    9. Re:What about other DNS servers ? by wkcole · · Score: 2, Informative

      If this is indeed not a protocol flaw, how come the same vulnerability is present on other DNS servers as well ?

      Do they all use the same code from BIND for this particular 'feature' ?

      No.

      The /. description of that thread is inaccurate and the behavior of BIND in breaking trustworthiness ties (which are set up by RFC2181) in favor of apparently newer records is not a bug, but rather a behavior which has been operationally useful and normal for most of the history of DNS. If you look closely at Dan Kaminski's discussion of how he came to recognize the vulnerability, it becomes clear that he was using that normal behavior and put together all of the pieces of the attack from the fact that his experimental idea to enhance availability with spoofed DNS replies was working.

      With the caveat that I'm trusting the posts on bind-users rather than looking in depth at the code in question, it seems to me that this change would restrict the defined functionality of dynamic DNS, which to some degree relies on resolvers treating new records as new rather than as forged, even if the TTL of a cached record from an equivalently authoritative (apparent) source has not expired. The way DNS changes propagate in practice would be modified significantly by this, and people who have gotten away with poor planning of DNS changes in the past would be hit harder by that sloppiness if the behavior of nameservers (BIND *and* others) is switched from giving ties to the new data to giving ties to cached data.

      In the end, I think that there will need to be a new RFC on DNS extending RFC2181's discussion of cache/answer conflict resolution. IMHO the likely outcome of that will be a new model for conflict resolution that will make cache poisoning a bit harder while punishing authoritative servers for zones that either change a lot or are heavy spoofing targets with both load and a requirement of pedantic correctness. The only hope for resolving a conflict correctly would be to toss out every record between the root and the point of conflict and restart a recursive resolution of the conflicted names. That is a bit ugly, but not as ugly as simply switching the way the coin is flipped on cache/answer ties.

    10. Re:What about other DNS servers ? by Ungrounded+Lightning · · Score: 1

      ... what happens when a DNS record gets updated? With the new behavior, you won't see the change until your cached record expires. ... I believe BIND was working as intended to allow updatedrecords to overwrite older ones.

      That's what I thought too, at first. It seems right to replace cahced records with newer ones. And perhaps that's why the code is written as it is.

      But then I got to thinking: If the server has a cached record already, it wouldn't have asked for and update. So why is the new information there in the first place?

      --
      Bantam Dominique roosters crow a four-note song. Once you've heard it as "Happy BIRTHday" you can't NOT hear it that way
    11. Re:What about other DNS servers ? by OriginalArlen · · Score: 2, Informative

      No, you are mistaken; djbdns, MaraDNS (and all other conformant DNS servers, including the patched BIND) are vulnerable to the "ten hour attack", ie., the same attack run for ten hours rather than ten seconds. It just takes a bit longer to work because it has to hit the right port number out of the 65K range.

      --

      Everything I needed to know about life, I learnt from Blake's Seven
    12. Re:What about other DNS servers ? by OriginalArlen · · Score: 4, Informative
      --

      Everything I needed to know about life, I learnt from Blake's Seven
    13. Re:What about other DNS servers ? by mxs · · Score: 1

      You don't see that update until the TTL expires. That's why there's a TTL. If you're planning to make a change, lower the TTL well in advance to allow the new TTL to propagate.

      Impeccable logic.

      What if the change is unplanned ? Say, an outage-prompted one ?

    14. Re:What about other DNS servers ? by More+Trouble · · Score: 1

      These are the TTLs of the name servers for a domain. One hopes there's more than one. Further, one hopes they are widely separated. This is totally DNS "standard operating procedure". We're not talking about a highly coherent transaction processing system, here. Availability is the goal. Achieved admirably, given the age and design history of DNS...

    15. Re:What about other DNS servers ? by adri · · Score: 1

      I'm not sure what world you're in but BGP peers do not route-filter everywhere.

    16. Re:What about other DNS servers ? by mrsbrisby · · Score: 1

      I'm not sure what world you're in but BGP peers do not route-filter everywhere.

      Prove it.

      Publish a route for 207.68.160.190/32 to any AS besides AS8075. Your publishing must be visible from AS21863. I will monitor and log ALL BGP announcements I receive for 207.68.160.190/32 for the lest two weeks.

      If you can do this, I would love to know what your ISP is.

      Every ISP I've dealt with route-filters their peers to prevent you from doing that. It would be a small thing for them to source filter packets as well, and would obviate almost all of these UDP-based spoofing attacks.

      I suspect strongly, however, that you are full of shit.

    17. Re:What about other DNS servers ? by mrsbrisby · · Score: 1

      I'm sorry, that link indicates that there's another bug in BIND. It doesn't say djbdns and MaraDNS are vulnerable to this attack; just merely that source port filtering is not enough to withstand a 1gbp/sec sustained attack.

      Please point to a link that says that attack works on djbdns and MaraDNS. I cannot find anything that supports your statement.

      I haven't looked at MaraDNS, which is why I said I don't know about it.

      I don't see how that attack would work against djbdns because djbdns doesn't accept answers to questions it didn't ask, and a remote user cannot force dnscache to ask questions.

  2. Developer comments on the bug by Anonymous Coward · · Score: 4, Funny

    Ok! Ok! I must have, I must have put a decimal point in the wrong place
    or something. Shit. I always do that. I always mess up some mundane
    detail.

    1. Re:Developer comments on the bug by oodaloop · · Score: 1, Funny

      This is not a MUNDANE DETAIL, Anonymous Coward!

      --
      Tic-Tac-Toe, Global Thermonuclear War, and relationships all have the same winning move.
    2. Re:Developer comments on the bug by Anonymous Coward · · Score: 0

      woosh

    3. Re:Developer comments on the bug by dzfoo · · Score: 0, Redundant

      Fine. Now, chill out, here's my fix:

              / *
                * Rev. #1138 - 08/29/2008
                * DESC: Need to add one to not brake the intarnetS!
                */
              int idx; // idx = CURRENT_INDEX + 1;
              idx = CURRENT_INDEX + 2; // do nnot braek!!!!1one
              return = _cache[i];

      And don't do it again!

              -dZ.

      --
      Carol vs. Ghost
      ...Can you save Christmas?
    4. Re:Developer comments on the bug by Anonymous Coward · · Score: 0

      woosh back at you

  3. Not the first time! by supernova_hq · · Score: 2, Interesting

    This is not the first time a huge security vulnerability was fixed by changing a single character!

    From what I remember, the SSL vulnerability we saw a while ago was caused by a single excess comment mark (well, maybe two if it was a double forward slash

    1. Re:Not the first time! by morgan_greywolf · · Score: 1

      This is not the first time a huge security vulnerability was fixed by changing a single character!

      Yeah. I once wrote a web application and in one of the auth checks, I put a '==' where I wanted a '!='. Fortunately in that case one of the testers caught it and it never actually went to production, but sometimes we all make silly mistakes.

    2. Re:Not the first time! by Anonymous Coward · · Score: 1, Insightful

      And if you used unit tests like a real developer you would had caught that simple error.

    3. Re:Not the first time! by jellomizer · · Score: 2, Interesting

      There are a lot of bugs fixed by changing 1 character... It is a very common occurrence. Either you comment out a feature that isn't needed but causing a problem. Or change a default variable or a constant to a different value.
      Eg origional code (Just making it up on the fly) of a possible security hole bug:

      char x[9];
      // x is populated by a char* variable
        for (register int i=0; i <= 9; i++) {
      //doing some stuff on x[i]
        }

      Now anyone with any C experience will realize that we have the possibility of an overflowed buffer. Now what is the fix, I see 2 of them that can fix the problem with 1 character change.
      I could change = to by removing the =
      or I could change 9 to 8 in the for loop.
      Chances are for the most cases this code may go missed for a while, and the program will run great for years. Perhaps the char* input command limited they keyboard to 8 letters forcing the 9th to be null all the time. Then the code was changed to work for the web and its keyboard limit code was removed with a QuaryString value, without the check or the check stupidly done in Javascript or HTML maxlength. But still it is a security consern and can be fixed with 1 character and if you look at any CS 101 class you will see how common this error is. Espectially if they swap back and forth from VB to C

      --
      If something is so important that you feel the need to post it on the internet... It probably isn't that important.
    4. Re:Not the first time! by sqlrob · · Score: 2, Informative

      better change:

      Remove the < *AND* don't use a hardcoded number, change to sizeof

    5. Re:Not the first time! by Tridus · · Score: 1

      Of course, because software that uses unit tests has never, ever, had a bug in it.

      --
      -- "So they told me that using the download page to download something was not something they anticipated." - Bill Gates
    6. Re:Not the first time! by Jellybob · · Score: 1

      Of course it has, that doesn't mean that unit testing doesn't reduce the odds of you having a bug - especially one like that, where the test would almost certainly have flagged it up.

      Your argument strikes me as being not unlike saying that locking your door doesn't stop someone breaking the front window, so why not just leave it open.

    7. Re:Not the first time! by Tridus · · Score: 1

      And AC's argument was... what, exactly? "A bug got caught by the testers, therefore you don't use unit tests and are not a real developer!"

      If someone is going to start with a completely inane statement, they're going to draw inane replies.

      --
      -- "So they told me that using the download page to download something was not something they anticipated." - Bill Gates
    8. Re:Not the first time! by Muad'Dave · · Score: 0

      ...change to sizeof...

      Which will return the size of a char * (pointer to character) on your system (typically 4 bytes), _not_ the length of the array. There is no way in C to get the length of an array after it's been allocated. Arrays are 'stupid' chunks of memory, not objects with properties.

      --
      Tiller's Rule: Never use a word in written form that you've only heard and never read. You will end up looking foolish.
    9. Re:Not the first time! by locofungus · · Score: 2, Informative

      ..change to sizeof...

      Which will return the size of a char * (pointer to character) on your system (typically 4 bytes), _not_ the length of the array. There is no way in C to get the length of an array after it's been allocated. Arrays are 'stupid' chunks of memory, not objects with properties.

      Huh?


      char x[9];
      printf("%d\n", (int)sizeof x);

      will print 9 exactly as required.

      There are a handful of cases where arrays do not decay to pointers. This is one of them.

      Tim.

      --
      God said, "div D = rho, div B = 0, curl E = -@B/@t, curl H = J + @D/@t," and there was light.
    10. Re:Not the first time! by mtdenial · · Score: 1

      It's not the first time that any huge defects have been caused by a single character. Quoting Code Complete who in turned was referencing an article from the early 80's (Kill that Code, Gerald Weinberg), "...three of the most expensive software errors of all time-costing $1.8 billion, $900 million and $245 million- involved the change of a single character in a previously correct program. So on the one hand, it's easy to sort of snicker that they were so close to having a correct implementation, but just missed, but on the other hand, there is a long and storied history of us programmers blowing things by a single character. I mean, isn't the 'off by one' error still one of the most common ones in development code, a instead of =, index instead of index-1 or whatever? At least now that the defect has been isolated and can be fixed. One character fix is much better than a full redesign...

      --
      I assert reality.
    11. Re:Not the first time! by WNight · · Score: 1

      No, it is because that bug is one that unit testing would have caught. And if he was writing specs and implementing those, he'd have caught that error within seconds of making it.

    12. Re:Not the first time! by sqlrob · · Score: 1

      I've used that construct (and in many cases sizeof(x)/sizeof(x[0]) for getting count of elements that aren't byte sized ) for more than a decade over many compilers without issues. You need to relearn C/C++.

    13. Re:Not the first time! by Muad'Dave · · Score: 1

      Actually, I'd just as soon forget it. C was a very thin layer over assembly language, and C++ is an absolute abomination containing the worst of procedural and object-oriented languages (new and malloc in the same language? Oh my!) What I was describing happens after you've used your variable as a parameter to a function. As soon as you're no longer in the same block as the declaration, you lose the original size data. That's a fairly dangerous thing, IMHO.

      --
      Tiller's Rule: Never use a word in written form that you've only heard and never read. You will end up looking foolish.
  4. Well let me just say by beakerMeep · · Score: 5, Funny

    (and I think for speak for everyone), this is how I feel about it:

    !

    --
    meep
  5. No, it doesn't! by CaraCalla · · Score: 1

    It does not fix the case where the attacker first tries to poison aaaaaa.example.com, aaaaab.example.com, ... , fc4dss.example.com until he succeeds with the glue-record being the real evil. In that case there is no previous cache-entry to rely on.

    1. Re:No, it doesn't! by logru · · Score: 1

      I would assume that is not a huge issue as af9ad.example.com is not a host that people would go to or anything would point to for that matter.

    2. Re:No, it doesn't! by CaraCalla · · Score: 2

      It is indeed an issue: The injected record is trusted because it orgiginates from example.com, but the evil bits are in the glue record, which goes ahead hijacking the www.example.com record. Without really knowing bind, I assume the patch does not work in that case.

    3. Re:No, it doesn't! by quantumplacet · · Score: 4, Informative

      yes, the whole point of this patch is to fix this problem. previously, if i successfully passed a bad record for safdsaus.example.com i could send glue records for www.example.com that would overwrite your cached record for www.example.com no matter what. with this patch i can only pass bad glue records if the ttl on your cached www.example.com record has expired. this gives an attacker a very narrow window during which they could mount this type of attack, likely making it not worth the effort.

    4. Re:No, it doesn't! by Magic5Ball · · Score: 1

      It is an issue in the case of <img src="http://af9ad.example.com/whatever"> and related things that can load without active user intervention...

      --
      There are 1.1... kinds of people.
    5. Re: No, it doesn't! by not_hylas(+) · · Score: 1

      I thought that bit had to be set if present - NO?

      The bit field is laid out as follows:

                                0
                              +-+
                              |E|
                              +-+

      Terminology

            The keywords MUST, MUST NOT, REQUIRED, SHALL, SHALL NOT, SHOULD,
            SHOULD NOT, RECOMMENDED, MAY, and OPTIONAL, when they appear in this
            document, are to be interpreted as described in [RFC2119].

      RFC 3514 - The Security Flag in the IPv4 Header:

      http://tools.ietf.org/html/rfc3514

      --
      ~hylas
  6. Re:Steve Jobs by morgan_greywolf · · Score: 1, Informative

    is dead. And Slashdot isn't reporting it. I guess that are too busy with the idle section.

    That would probably be because Steve Jobs is not dead, though that never stopped them before, given BSD's "untimely demise". ;)

  7. I call bullshit by Anonymous Coward · · Score: 4, Insightful

    Updating a cache with new data when the source data changes before the cached copy is a bug?

    The "root cause" is being able to fake being the correct source of the data being overwritten, NOT the ability to refresh a cached copy.

    And AFAICT, the ability to falsify data sources remains a FUNDAMENTAL flaw in DNS.

    1. Re:I call bullshit by Anonymous Coward · · Score: 0

      Updating a cache with new data when the source data changes before the cached copy is a bug?

      Before the TTL of the cached record has expired? Yes, it is.

  8. Re:Steve Jobs by morgan_greywolf · · Score: 1

    That would be because Steve Jobs is not dead.

  9. Allegedly... by drmofe · · Score: 3, Interesting

    ....Paul Vixie is no longer allowed to commit code to BIND. Can this vulnerability be traced to code that he DID write originally?

    1. Re:Allegedly... by Anonymous Coward · · Score: 0

      no, bind9 was a rewrite.

  10. A possible downside by js_sebastian · · Score: 3, Insightful

    From one of the mails of the guy who made this proposal:

    What's the downside to my patch ? I guess we are now holding an
    authoritative server to the promise not to change the NS record for
    the duration of the TTL, which is kinda what the TTL is for in the
    first place :)

    I wonder if this is an issue. Otherwise it seems Kaminsky may really have missed the point.

    1. Re:A possible downside by Ed+Avis · · Score: 2, Insightful

      It does sound like an issue. Suppose an authoritative server responds to a query with a TTL of five minutes. That means it must not change the record during the next five minutes. After one minute the domain owner makes some change. Okay, there will be a lag of four minutes before it fully takes effect. Fine. But what if a second request is received a minute after the change? The authoritative server has to know that it has a change queued up to take effect in three minutes' time, and serve a reply with a TTL of three minutes or less. Moreover, it has to reply with the old version of the record, which is now known to be out of date. So internally it needs to keep track of old and new versions for each change, and keep serving the old version until the last TTL of a previous reply to that version expires. I doubt that all the various DNS servers across the net do this.

      --
      -- Ed Avis ed@membled.com
    2. Re:A possible downside by Anonymous Coward · · Score: 5, Informative

      That's not how caches work. There is no guarantee that the authoritative server won't give out different responses until the TTL expires. The TTL just means that the resolver may cache the value for that duration. If the value changes during that time, the effect is just like when the server does DNS round-robin load balancing: This resolver uses a different value than other resolvers. Whether that is a problem depends on the validity of the resource, not on a server side decision to stick with an answer or to change it before the old value's TTL. When you change DNS records, you always keep the old resource up until you see only a low amount of requests to the old resource. There are way too many caches which ignore the server-defined TTL and use their own minimum TTLs.

    3. Re:A possible downside by berashith · · Score: 2, Informative

      thank you!
      A TTL is not a promise to never change the record. A true authoritative source can change and push new information. A TTL is an amount of time that a cached record can live before the holder of the cache needs to check back for new information, which is usually not changed.

    4. Re:A possible downside by photon317 · · Score: 3, Informative

      But that's not what the TTL is for in the first place. The TTL was not intended to mean "I will hold this record for this duration, ignoring any other updates in the meantime". It was meant to mean, "I will not under any circumstances remember this record any longer than this duration". The difference has practical implications for DNS operations.

      --
      11*43+456^2
    5. Re:A possible downside by QuietLagoon · · Score: 2, Informative
      I guess we are now holding an authoritative server to the promise not to change the NS record for the duration of the TTL, which is kinda what the TTL is for in the first place :)
      .

      TTL does specify the Time To Live for a cached record before it is no longer considered to be valid.

      TTL does not specify the length of time that changes are not allowed.

    6. Re:A possible downside by mrsbrisby · · Score: 2, Informative

      No, a true authority cannot push new information.

      They would have to know all of the caches in order to push the changes to them, and since caches can cache for caches, it's unrealistic that a normal site could know this, and unlikely that a specially designed site would.

      The cache should not cache answers to questions it didn't ask, and that includes new authorities for the domain.

    7. Re:A possible downside by berashith · · Score: 1

      ok, yes, somewhat. I wasnt as clear as I should have been. All caches are not known, as you said, and DNS isnt a push system. But, there are cases of things like stealth masters that do keep track of all of its slaves, and these can tell the slaves to come look for new information. Not allowing updates to the slaves because of TTLs would create a non-needed time gap in propagation.

    8. Re:A possible downside by mrsbrisby · · Score: 2, Informative

      But, there are cases of things like stealth masters that do keep track of all of its slaves, and these can tell the slaves to come look for new information. Not allowing updates to the slaves because of TTLs would create a non-needed time gap in propagation.

      That's a terrible reason to allow such a large security hole.

      You should have to list all of your ignore-ttl-from hosts, and src-filter communication to those sites before you should be allowed to do this.

      That said, you could also use some other communication channel- such as the master sshing over to the cache and flushing the cache. Certainly that's safer and easier.

    9. Re:A possible downside by Anonymous Coward · · Score: 0

      There are way too many caches which ignore the server-defined TTL and use their own minimum TTLs.

      Do you (or anyone) have more details about which ones? (I need this info to troubleshoot a problem we are having).

  11. Server 2008 patch for this now out by Anonymous Coward · · Score: 4, Funny

    It's 570MB.

    1. Re:Server 2008 patch for this now out by Anonymous Coward · · Score: 0

      570 MB?
      Which Linux distro is that?

  12. Not getting much love in the mailing list by ccguy · · Score: 4, Funny

    I'm so bored that I actually read the post in the mailing list and all the replies in the thread.

    Just to be at the same time informative and to the point, the 7 replies so far have been as positive as this patch is in the linux kernel mailing list a few years ago.

    1. Re:Not getting much love in the mailing list by Nigel+Stepp · · Score: 2, Interesting

      Ha! I feel like that is the same guy who wrote a text editor that runs in ring 0 or something and halts multitasking.

      Anyone remember that guy? There was a huge usenet fight about it on some linux newsgroup in the 90s.

      Anyway, he had exactly the same reasoning style.

      --
      4096R/EF7BAFA6 79E1 DF98 D09D 898F 9A11 F6F0 DDDC 23FA EF7B AFA6
    2. Re:Not getting much love in the mailing list by alx5000 · · Score: 1

      Just to be at the same time informative and to the point, the 7 replies so far have been as positive as this patch [iu.edu] is in the linux kernel mailing list a few years ago.

      OMG, is that guy for real?? I mean, I haven't still read through all of the replies, but... trying to un-UNIX Linux? Either he is one of the biggest morons to ever roam the earth, or he deserves a special place in the Trolls hall of fame...

      --
      My 0.02 cents
    3. Re:Not getting much love in the mailing list by ccguy · · Score: 1

      OMG, is that guy for real?? I mean, I haven't still read through all of the replies, but... trying to un-UNIX Linux? Either he is one of the biggest morons to ever roam the earth, or he deserves a special place in the Trolls hall of fame...

      Don't know, but after getting the old Al Viro's treatment he hid under a rock and I hear he's still there.

    4. Re:Not getting much love in the mailing list by AttilaSz · · Score: 1

      I love this post in the thread: http://www.ussg.iu.edu/hypermail/linux/kernel/0104.3/0107.html that says "And UNIX on a phone is pure overkill." We sure have come a long way in this regard since 2001 :-)

      --
      Sig erased via substitution of an identical one.
    5. Re:Not getting much love in the mailing list by Culture20 · · Score: 1

      This guy was obviously trying to write the beginning stages of Ubuntu. Thankfully he settled on forking Debian.

    6. Re:Not getting much love in the mailing list by Anonymous Coward · · Score: 0

      That patch is brilliant trolling work.

  13. mmkaay by amnezick · · Score: 1

    I'm not an expert so please ignore (or better .. explain) this if I'm way off but Google adives TTL 1 week when using their GoogleApps mail server. So .. what if I really really want to change my MX after 2 days? :-/

    --
    mov ax,4c00h
    int 21h
    1. Re:mmkaay by morgan_greywolf · · Score: 1

      So .. what if I really really want to change my MX after 2 days? :-/

      You can't. That's kind of the whole point.

    2. Re:mmkaay by RiotingPacifist · · Score: 1

      why not? TTL is a limit, after TTL the record dies, TTL doesnt mean you cant change it though.

      --
      IranAir Flight 655 never forget!
  14. Reminds me of the story... by hanshotfirst · · Score: 5, Funny

    (Source unknown)

    A manufacturer had a problem with one of the older machines on their line. It shut down the line and held up production, costing many thousands of dollars in lost production. Since it was older equipment it was hard to find someone knowledgeable in repairing the machine, and nobody on-site knew what the problem could be. They found a technician with knowledge of the machine and hired him to come in and fix it.

    When the technician arrived on site he listened to the client's description of the problem, examined the machine, opened a panel, and turned a single screw. He restarted the machine and it was back to full function. The line was up and running and the manufacturer was happy.
    A week later the manufacturer received a bill for services: $1000. They called the technician and demanded an explanation - after all, they reasoned, he had only turned one screw to fix the problem. He agreed to re-bill, this time with itemized charges. The next bill contained two lines.

    Turning the screw... $1
    Knowing which screw to turn... $999

    --
    Why, oh why, didn't I take the Blue Pill?
    1. Re:Reminds me of the story... by actionbastard · · Score: 1

      This is a derivative (or descendant) of a story that I read about a small town in Vermont. They had there own power generation facility for the town and it went on the fritz, plunging the small hamlet into darkness. The only person who knew anything about the machinery had long since retired, but the townspeople were desperate, so they they gave the old guy a call. He came out and took a look at the equipment. He then took a small hammer from his old toolbox and gently tapped on a certain point of the aged machine. It sprang back to life and everyone was greatful. A week or so goes by and the town council receives a bill from the old fellow for $10,000 itemized as follows, Tapping - $1.00, Knowing where to tap - $9,999.00. Of course, they paid the bill.
      I read that story in an issue of Readers Digest more than forty years ago.

      --
      Sig this!
  15. Re:OSS wins again by somersault · · Score: 4, Interesting

    This has more to do with an oversight in the DNS standard - doesn't have anything to do with any single implementation. Windows, Linux, and any other networked system that uses DNS are equally affected.

    Besides, it doesn't matter if your operating system is Open Source. You can write closed or open source software on any platform you want, and just because the source is available does not necessarily mean that bugs will be noticed and fixed. This situation just shows that even if there are no 'bugs' in an implementation of a standard, the original design may still be flawed.

    I haven't been following this situation very closely, so perhaps I'm a bit off with the details, but I'd be happy for someone to put me right if that's the case.

    Favouring cached DNS records seems to me to not be a spectacular idea for all situations. It depends on the length of the TTL setting on your DNS server though. I'm not sure what expiry time would be sensible for an ISP to use. You have to balance the fact that you want to up to date records with the amount of overhead that will be generated by all the DNS traffic.

    --
    which is totally what she said
  16. dynamic DNS by Locklin · · Score: 1

    Is this going to break dynamic DNS services like redirectme.net?

    --
    "Knowledge is the only instrument of production that is not subject to diminishing returns" -Journal of Political Econom
    1. Re:dynamic DNS by chrysalis · · Score: 1

      No, it has no reason to break dynamic dns services like redirectme.net

      --
      {{.sig}}
    2. Re:dynamic DNS by CyborgWarrior · · Score: 1

      No. These services set very low TTLs in their entries so because they are known to change often (hence "dynamic")

      --
      If you can't say something nice, make sure you have something heavy to throw.
  17. Re:Steve Jobs by El+Yanqui · · Score: 5, Funny

    Steve Jobs is alive and Slashdot isn't even covering it. This place blows.

    --
    Well, thanks to the Internet, I'm now bored with sex.
  18. NOT a fix... by nweaver · · Score: 4, Insightful

    This is NOT a fix to the root problem of the Kaminski vulnerability.

    The root problem is the cases where athority/additional/unasked-answers are accepted, and there are plenty of variants this "patch" does not affect. EG.

    Answer:
    whatever.foo.com CNAME www.foo.com
    www.foo.com A 66.6.66.6
    Authority:
    (usual goop).

    If www.foo.com is not yet cached (and often even if it is), this will set it as a Kaminski variant.

    --
    Test your net with Netalyzr
    1. Re:NOT a fix... by blueg3 · · Score: 3, Informative

      In cases where www.foo.com is not cached, DNS resolvers are vulnerable to the much more trivial attack of simply forging the answer www.foo.com IN A 66.6.66.6. Of course, they have to hope to guess the proper transaction ID in the first query, because if they fail, the proper answer will be cached.

      Poisoning an uncached name is fairly easy and doesn't require Kaminsky's trick. Kaminsky's trick relies on caching the answers to questions you didn't ask, rather than not caching them or using the cached answer over the uncached answer. I think you called this the "elephant in the room" at Usenix Security, even. :-)

    2. Re:NOT a fix... by nweaver · · Score: 1

      Well, Kaminski doesn't save packets over a normal race.

      Its point is "Race until win" rather than "race once per TTL".

      Thus in a normal race for www.foo.com, you can run the race once per TTL, and then have to wait if you fail.

      With the kaminski race, you can keep running it until you succeed.

      This is why Kaminski attacks are all about glue policy.

      --
      Test your net with Netalyzr
    3. Re:NOT a fix... by blueg3 · · Score: 1

      Exactly -- and this patch causes you to prefer cached data over data supplied in glue records, yes?

  19. Meh. by Rob+T+Firefly · · Score: 3, Funny

    Ever since seeng this I don't trust that one character, Patch.

  20. Re:Steve Jobs by bistromath007 · · Score: 3, Funny

    Forget that. Shouldn't we have regular updates on whether or not Charles Babbage is still dead? He's the father of computing itself, for fuck's sake!

  21. Re:Steve Jobs by Anonymous Coward · · Score: 0

    wait 6 or 7 months and then we'll see 3 or 4 dupes about how he's dead, how he isn't and how tragic it is that he died before he could vaporize psystar with his reality distortion field

  22. Re:Steve Jobs by Anonymous Coward · · Score: 2, Funny

    Maybe we should have a Charles Babbage status page a bit like this one:
    Abe Vigoda

  23. Re:Steve Jobs by GundamFan · · Score: 1

    We need a site like this:

    http://www.abevigoda.com/ffb.php

    for Steve Jobs... you know just to be sure.

    --
    I don't give a damn for a man that can only spell a word one way.
    Mark Twain
  24. It was more than that. by certain+death · · Score: 3, Informative

    They stopped random UDP port use, and now use a static pool of UDP ports for queries. Note that they have come out with a P2 release that addresses a completely different issue that the first patch caused. I was able to essentially cause a DOS on a BIND server that was patched with P1 by sending more than 10,000 queries to the system. It ran out of usable UDP ports and puked. The same issue exists in the Windows patch, and especially on Windows 2003 SBS. There was way more than one line of code, or a single character changed.

    --
    "My immediate reaction is "WTF? What kind of moron doesn't make things 64-bit safe to begin with?" Linus
  25. uh, have you also considered... by Anonymous Coward · · Score: 0

    Perhaps the people that came up with this as the "real fix" should consider the case when the NS records for a particular domain are not cached. There's not only a single scenario to consider when coming up with a patch, which is why defense in depth is important. This is not a complete fix without source port randomization.

  26. What about DDoS? by Anonymous Coward · · Score: 0

    I'm probably missing something, but does this solution not impact an organization's ability to recover from varying DDoS attacks?

    If I have to wait for all of my records to expire before I can shift my website from an IP that is being targeted by an attack, does that not leave me vulnerable for longer?

  27. May make it hard to have rapidly changing DNS by Anonymous Coward · · Score: 0

    Some rapidly changing domain names, used for things like Russian Business Network (and reputedly for frauds and so on) might be hard (harder anyway) to do with this patch, since old DNS records will tend to remain in force until their TTL expires. This might be a good thing, and at any rate it would make it easier to notice when a DNS resolution was perhaps suspect. Any DNS resolution that was going to change every few minutes would need a very short TTL which might be possible to ignore programatically.

  28. Re: Should have been running NetReg by Anonymous Coward · · Score: 0

    in Managed and Monitored mode.

  29. Re:OSS wins again by Anonymous Coward · · Score: 0

    YHBT. YHL. HAND.

  30. DNS by Caspan · · Score: 1

    I didn't have time to read everyone's post here but the one thing I think everyone is forgetting or overlooking is why cache was created/used in the first place. 1st. Could you imagine the amount of extra traffic on the internet and core devices if every lookup had to traverse the net? It was designed because there is no need to change you DNS RRs constantly they should be static, or failing that only needed to be update once in a while. 2nd. what happens if my DNS serves go down (yes assuming both of them go) I can assume that at least some people can still find my service based on cached results from ISPs or root servers. Contrary to what I just said I also agree that the internet backbone is huge and could handle the extra traffic and maybe it is time to rethink old policy. just because its worked in the past dose not mean we have to continue to use it for the future. A lot has change since the first inception of the DNS RFC.

  31. Kaminsky's rebuttal by buelba · · Score: 4, Informative

    Kaminsky has an interesting rebuttal here.

  32. Re:OSS wins again by somersault · · Score: 1

    TY AC. BTW ILU.

    --
    which is totally what she said
  33. poisonous disinformation and ignorance by mibh · · Score: 2, Insightful

    i know of forms of poison that do not involve the authority section at all.

    i know of servers with no BIND code inside that were poisoned by kaminsky.

    i know of valid configuration changes that depend on NS RRset replacement.

    is this a troll of some kind? as slashdot lead articles go, this one shows unusually high disinformation and ignorance.

  34. For those of you who missed it by FoxNSox · · Score: 1

    A detailed explanation of the Kaminsky exploit can be found here: http://thefrozenfire.com/data/dnspoisoning.html

  35. What character? by xouumalperxe · · Score: 1

    Without even bothering to RTFA, I'm going to hazard that the patch was a '!' right before a '=' ;)

    1. Re:What character? by xouumalperxe · · Score: 1

      Bah, managed to not only not RTFA, but misRTFS, didn't see it was an off-by-one.

    2. Re:What character? by PRMan · · Score: 1

      Close, he changed %lt; to %lt;=

      --
      Peter predicted that you would "deliberately forget" creation 2000 years ago...
    3. Re:What character? by PRMan · · Score: 1

      Sorry, he changed < to <=

      It wasn't an off-by-one error. It is now preferring the TTL value to the new one in the case of a tie in trust level.

      --
      Peter predicted that you would "deliberately forget" creation 2000 years ago...
  36. Updating non-expired records? by mi · · Score: 1

    But what if I really want to change a record, that hasn't expired yet? Will the fix force me to live with the old values until they expire?

    --
    In Soviet Washington the swamp drains you.
    1. Re:Updating non-expired records? by tsalmark · · Score: 2, Insightful

      I don't think hacking every DNS server has ever been the solution of choice. Maybe updating your record and serial number, then reloading, if needed, the authoritative server. And the ones you don't control, well wait.

    2. Re:Updating non-expired records? by mi · · Score: 1

      And the ones you don't control, well wait.

      This means like a functionality loss to me — if I've made a mistake, I can't correct it until TTL expires — and I could before the "bug" was fixed...

      --
      In Soviet Washington the swamp drains you.
    3. Re:Updating non-expired records? by MikeFM · · Score: 1

      So don't keep your TTL so high? On the other hand we changed from a T1 to a fiber line the other day and all our IP addresses changed. It's been a nightmare trying to get them changed properly. I had them preemptively set to a low TTL for a few days to give things time to clear from cache but we still are getting weird fluctuations. Some servers are showing the old addresses still more than a week later. Some are alternating between the new and old address. Some have just decided to give addresses that are just plain wrong. I've never had this much trouble before.

      I was wondering if bad fixes for this DNS poisoning crap are causing DNS servers to behave badly.

      --
      At what price learning? At what cost wisdom? The price is a man's peace of mind, and the cost is his life.
    4. Re:Updating non-expired records? by Anonymous Coward · · Score: 0

      Yes so now you gotta pay attention to what you're doing and test it, then test it with a small ttl.

      It's going to work as supposed to again. It's time to live.

  37. It's Charles Proteus Steinmetz: by Anonymous Coward · · Score: 0

    Steinmetz retired as an engineer from General Electric to teach electrical engineering at that city's Union College in 1902. General Electric later called back as a consultant. He had worked on a very complex system that was broken. No one could fix it no matter how hard the technicians tried. So they got Steinmetz back. He traced the systems and found the malfunctioning part and marked it with a piece of chalk.

    Charles Steinmetz submitted a bill for $10,000 dollars. The General Electric managers were taken back and asked for an itemized invoice.

    He sent back the following invoice:

    Making chalk mark $1
    Knowing where to place it $9,999

  38. Re:Steve Jobs by Anonymous Coward · · Score: 0
  39. Nice try, but no by Effugas · · Score: 1

    This is Dan Kaminsky, finder of the bug.

    No, this isn't a reasonable fix. Nice try, but no. See http://www.doxpara.com/?p=1234 for details.

    (Incide

    1. Re:Nice try, but no by PRMan · · Score: 1

      Really?

      You basically said:

      It doesn't stop all attacks.

      No, but it's better than nothing.

      Google Analytics and Facebook currently have unreasonably low TTL values that this wouldn't help.

      Implement the fix anyway. If they don't want to get pwned, they can raise their TTL. And without the patch, they get pwned even easier.

      Google and Microsoft have unreasonably high 4 day TTLs and if something happened they could be down for 4 days!

      If they get pwned by not having the patch, they could be down for half a day every day for the next year. And they could always lower their TTL values.

      Not really seeing the problems here.

      Implement the patch.

      --
      Peter predicted that you would "deliberately forget" creation 2000 years ago...
    2. Re:Nice try, but no by Anti-Trend · · Score: 1

      Really?

      You basically said:

      It doesn't stop all attacks.

      No, but it's better than nothing.

      I think maybe what he's saying is that the fix isn't good enough. It's not very elegant as it breaks long-standing functionality in DNS, *and* it doesn't fully address the issue. Perhaps the gist of what he's saying is "let's think on this one a little harder before committing lame fixes and thereby shooting ourselves in the collective foot... again". (Of course, feel free to correct me if I'm wrong, Dan!)

      --
      Working in a DevOps shop is like playing in a band made up entirely of keytarists.
  40. Big love to DJB by gpuk · · Score: 1

    I'd just like to say that during all of this the one man that deserves the community's recognition is DJB. I've been following this on and off since the exploit erupted and through out all of it the one thing that has been missing is significant, heartfelt praise for DJB. He's often maligned by the open source community for releasing his code to the public domain but the fact remains the guy produces and ships kick ass code. Qmail and Tinydns absolutely rock and I think it's a great shame the man doesn't get the recognition he deserves. It's mildly ironic that another of today's Slashdot stories talks about the problem of multiple open source license proliferation with many people stating the solution should be releasing code to the public domain. This is exactly what DJB did and he got torpedoed for it.

  41. DNSSEC is still the only real solution by marka63 · · Score: 1
    Over 10 years ago it was realised that eventually random transaction ids would not be good enough. That someone would come up with a novel way to attack the DNS.

    DNSSEC was the counter measure that was designed to beat this attack scenario as well as lots of other threats. It still is the only real solution to this problem.

    It defeats both on path and off path attacks.

    It is a enabler of other security measures.

    e.g. SMTP security depends, in part, on getting valid answers out of the DNS. You need to know which certificate names to trust and without a secure DNS you don't have that.