Slashdot Mirror


Potential 0-Day Vulnerability For BIND 9

Morty writes "BIND, the popular DNS server software, has been crashing all over the Internet. The root cause is believed to be a 0-day vulnerability in BIND's resolver. The ISC has issued an alert. Quoting: 'An as-yet unidentified network event caused BIND 9 resolvers to cache an invalid record, subsequent queries for which could crash the resolvers with an assertion failure. ISC is working on determining the ultimate cause by which a record with this particular inconsistency is cached. At this time we are making available a patch which makes named recover gracefully from the inconsistency, preventing the abnormal exit.'"

105 of 187 comments (clear)

  1. To the Red Phone! by Anonymous Coward · · Score: 4, Funny

    Alert DJB at once!

  2. 10 years ago by ghn · · Score: 4, Informative

    I had to choose which DNS server I would deploy on my servers. I went for TinyDNS as it had all the same features and security promises. Man am I glad to have considered security over popularity.

    1. Re:10 years ago by Compaqt · · Score: 4, Informative

      Another small DNS server is MaraDNS. It's considered a good alternative to BIND.

      Being a lot smaller, it's easier to secure.

      If you're just running a DNS cache on your desktop, check out dnsmasq. Click to install(Deb/Mint/Ubuntu)

      --
      I'm not a lawyer, but I play one on the Internet. Blog
    2. Re:10 years ago by janeuner · · Score: 3, Funny

      It's hard to go wrong with DJB*.

    3. Re:10 years ago by afidel · · Score: 4, Funny

      Unless you have to actually work with him.

      --
      There are 4 boxes to use in the defense of liberty: soap, ballot, jury, ammo. Use in that order. Starting now.
    4. Re:10 years ago by Compaqt · · Score: 1

      Wasn't there some sort of license problem with DJB stuff? Like the slowness of Java applets in the early 1990s, I don't think Slashdotters will let him live that down.

      --
      I'm not a lawyer, but I play one on the Internet. Blog
    5. Re:10 years ago by 19thNervousBreakdown · · Score: 1

      I don't know about his DNS server, but qmail had some goofy license that meant everything was just a series of patches.

      He's since released it into the public domain though.

      --
      <xml><I><am><so><damn>Web 2.0</damn></so></am></I></xml>
    6. Re:10 years ago by Above · · Score: 5, Informative

      This particular vulnerability applies only to BIND9 operating as a recursive resolver. BIND9 operating in authoritative mode, similar to how TinyDNS operates, is unaffected. Had you properly deployed BIND9 for the same purposes you are using TinyDNS you would not had been impacted by this issue.

    7. Re:10 years ago by Anonymous Coward · · Score: 1

      He had no license, believing that having no license and no copyright meant it was in the public domain. US law says otherwise, and DJB disagreed. Unfortunately, that put the software in limbo.

      Eventually, a license permitting distribution of unmodified source was added. This, of course, meant compiled versions and built-in tweaks to make it work with certain compilers (like GCC) and distributions were not permitted to be distributed. Patches were granted as an exception. Distributors were too lazy to build an auto-patch system.

      So, eventually DJB just decided, fuck it, here, just do whatever you like with it and that he'd comply with US law.

    8. Re:10 years ago by swalve · · Score: 1

      Agreeing with dnsmasq. Bit of a bitch to set up just right, but I've got it working now running my firewall/router.

    9. Re:10 years ago by gmack · · Score: 1

      Better yet use Unbound resolving only nameserver since it supports signed zones.

    10. Re:10 years ago by ghn · · Score: 1

      I was referring to DJBDNS in general and not just the authoritative TinyDNS program. I was also speaking of BIND's security history in general, not only this specific issues.

    11. Re:10 years ago by gmack · · Score: 4, Informative

      The major problem with Qmail was it's design simply didn't take into account the possibility of a bad return address. The downside was that it couldn't bounce during reception and so was forced to generate a bounce message instead and not only did spammers plug up the queue with bad messages, it ended up being used for reflector attacks where the attacker set the target's address as the return and sent messages that would bounce to many different servers. The whole problem ended up being so bad that many that many mail admins considered servers running Qmail to be almost as bad as an open relay and there were people who actually maintained blacklists of servers running Qmail and that was right about when I stopped using it but I hear there have been patches to fix the worst of it's flaws since then.

      In short: it was secure for only some definitions of secure and for everything else DJB ignored the problem.

    12. Re:10 years ago by X0563511 · · Score: 1

      Glad to know I'm not the only one who thinks DJB makes no sense at all. Every time I see it it takes me half a freaking hour to figure out how to update a zone.

      --
      For large sets, this will be our guide even unto death, for the LORD will work for each type of data it is applied to...
    13. Re:10 years ago by gmack · · Score: 3, Insightful

      and not only did spammers plug up the queue with bad messages, it ended up being used for reflector attacks where the attacker set the target's address as the return and sent messages that would bounce to many different servers.

      Theoretically, that is possible. In practice I haven't seen spammers use that mechanism.

      I used to run qmail and I have seen it used for that.

      The whole problem ended up being so bad that many that many mail admins considered servers running Qmail to be almost as bad as an open relay and there were people who actually maintained blacklists of servers running Qmail and that was right about when I stopped using it but I hear there have been patches to fix the worst of it's flaws since then.

      A lot of people are irrationally against djb in any way. He's become like the president, every time something goes wrong people blame him. Those blacklists you speak of are less about addressing an operational problem and much more about irrational dick waving.

      It's not irrational if you observe a problem only to be ignored. As I said earlier I used to run Qmail and I did so because of it's security benefits and while Qmail didn't get my box rooted the same way sendmail did, it still had it's problems. I have since moved to postifx and now have a que of 0 to 10 messages instead of the 300 to 1000 I had under Qmail despite the fact that I have 3x the number of domains and 5x the number of messages than I did before.

    14. Re:10 years ago by powdered+toast+dude · · Score: 2

      My understanding was while that he permitted source redistribution, he insisted that it be only distributed unmodified, and never binary distribution. He also generally refused to accept patches, apparently thinking his pristine work ought to be good enough for everyone. (It was good, but needed features as time went on.) This meant that any "improvements" could only be distributed as patches. As a result, only source-based distros had an easy time packaging it, since sources + patches + build instructions is how they do business anyway. Having no friends with the binary distros, it got little distribution. It also languished on the vine since no one could push improvements upstream. Apparently he subsequently released both qmail and djbdns into full public domain, which means in theory they could be packaged and distributed normally now. Unfortunately, it seems too late for it to matter.

      --
      I'm an animal lover -- they're delicious!
    15. Re:10 years ago by Onymous+Coward · · Score: 1

      I think GP was referring to how inflexible DJB the person can be. But certainly their comment could be used to refer to the software as well.

      Not only did DJB reject the design and development practices that left BIND such a threat but he also rejected a number of usual conventions around software management/installation/licensing. In his defense, he did it because he believed the conventions were bad. His own version of things makes sense and works well, but it's definitely weird if you're coming new to it.

    16. Re:10 years ago by X0563511 · · Score: 1

      Yea, convention is overrated. We should all do things the way we want, back like the good old early 90s! Clearly things were better that way. Fuck standards and conventions.

      --
      For large sets, this will be our guide even unto death, for the LORD will work for each type of data it is applied to...
    17. Re:10 years ago by MaraDNS · · Score: 3, Informative
      Let's not forget Unbound, which may be faster than MaraDNS's 2.0 recursive resolver. Then again, I just got some funding from a sponsor to work on speeding things up. Also, Unbound has DNSSEC -- something MaraDNS doesn't have.

      And, of course, there is Power DNS, another excellent DNS server.

      Then again, there's something to be said for being able to set things up using only a three-line configuration file and a 64k binary works nice for embedded places like OpenWRT where Unbound and PowerDNS won't fit.

      - Sam

      --
      MaraDNS is an open-source DNS server.
    18. Re:10 years ago by AvitarX · · Score: 1

      I thought it was quite pleasant to setup.

      I use it at work, where we have 2 sites connected with VPN (and each site with dnsmasq), and it works fantastically as a DHCP server, and dns server, allowing all computers to be accessed as computer.sitename

      --
      Wow, sent an e-mail as suggested when clicking on "use classic" banner, and got a fast response that addressed my msg
    19. Re:10 years ago by MaraDNS · · Score: 3, Interesting

      Don't get me wrong, djbdns is an excellent DNS server. Unfortunately, it hasn't been updated for over 10 years and, since then, three different security holes have been discovered the djbdns package, the root server list has been updated, errno has been changed to make Linux more thread safe (requiring a patch to compile it), and so on.

      djbdns can work -- but it requires patching by hand or using an unofficial fork like Zinq (which appears to still be supported -- the last release was done this year).

      (I can also murmur darkly about the fact that djbdns uses a circular queue instead of a LRU for its cache, its lack of a Windows port, its need to use external helper programs to configure the server, etc., but, then again, its core recursive binary is even smaller than MaraDNS 2.0's tiny recursive binary. And three security bugs in the last decade is better than the 13 security issues in MaraDNS I have had to patch against.)

      --
      MaraDNS is an open-source DNS server.
    20. Re:10 years ago by afidel · · Score: 1

      I was referring to him as a person, the fact that some of his idiosyncrasies bleed over to his software is the least of the issues I have with him =)

      --
      There are 4 boxes to use in the defense of liberty: soap, ballot, jury, ammo. Use in that order. Starting now.
    21. Re:10 years ago by MaraDNS · · Score: 3, Informative

      Please stop spreading FUD. There have been 0 remote security holes discovered in djbdns.

      Please lay off the crack, wake up, and smell the coffee. This kind of denial is flat-out dangerous.

      I have a blog entry detailing the three security holes in djbdns and DJB paid the $500 security hole prize for djbdns years ago.

      The most dangerous hole in an unpatched djbdns 1.05 install is the TCP "packet of death" that forces dnscache to restart (since SIGPIPE isn't caught by dnscache). I really should file a CVE for that security problem.

      There is also CVE-2008-4392 as well as CVE-2009-0858; more information is in Debian's security page on djbdns.

      --
      MaraDNS is an open-source DNS server.
    22. Re:10 years ago by MaraDNS · · Score: 3, Interesting

      Your information is out of date; I completely, from scratch, rewrote the recursive code of MaraDNS starting four years ago with far cleaner code.

      That code was declared stable over a year ago and looking at its source code won't make you blind.

      - Sam

      --
      MaraDNS is an open-source DNS server.
    23. Re:10 years ago by metrix007 · · Score: 1

      He believes his solution to be better than what a committee came up with and that he is perhaps smarter than them. I think he is perhaps right.

      --
      If you ignore ACs because they are anonymous - you're an idiot.
    24. Re:10 years ago by sentimental.bryan · · Score: 1

      MaraDNS is a great little server

    25. Re:10 years ago by swalve · · Score: 1

      I never looked at the code, but I've had no bugs and no crashes.

  3. Re:Impossible! by NoNonAlphaCharsHere · · Score: 2

    Oh for fuck's sake, it's an assertion error. Get over yourself.

  4. Re:Impossible! by 1s44c · · Score: 5, Insightful

    It's open source, and has had years to mature...so many eyes on it that this couldn't possibly happen.

    We don't even know what is happening yet. Maybe it's just a DOS, maybe it's a potential exploit. What we do know is that no-one has any need to put recursive DNS servers on the internet unless they are running an ISP or a DNS service.

  5. Re:Impossible! by Capt+James+McCarthy · · Score: 1

    As opposed to the years of paid professionals eyes on Windows?

    --
    There are no loopholes. It's either legal or it's not.
  6. Re:Impossible! by Nerdfest · · Score: 2

    Of course it can happen, it's just less likely to have problems than software with only a few sets of eyes on it. In addition, I had patches installed on my linux machines this morning, before I was even aware the problem existed. How's that for turnaround.

  7. A confusing summary on /., let me try to do better by Above · · Score: 5, Informative

    BIND is written by Internet Systems Consortium aka ISC, a non-profit that does various public benefit things for the Internet. The summary links to an alert from the Internet Storm Center aka ISC, a project of the SANS Technology Institute. There is no relation between these two ISC's, in this case the first authors the software, and the second tracks vulnerabilities. I'm sure by using a link to SANS many people on /. who are not familiar with these two ISC's will get them confused.

    The link in the summary also goes to a preliminary version of the advisory. The correct, full summary is available on Internet Systems Consortium's web site as CVE-2011-4313.

    I also think the characterization as a "0-day" isn't quite right. To me at least a 0-day issue is a bug that can exploited to do something, and that is used by bad-actors before the vendor is aware and able to fix the issue. In this case the bug simply crashes the server; there's no remote root or other exploit, and at this time there is no evidence of bad-actors using this bug at all. Rather it appears something interesting (unusual, perhaps put there intentionally) appeared in the DNS, and it triggered a bug in the software.

    Some historical context may help. BIND8, for those who used it, was a pile of poo. It had a huge number of security issues and other problems and was generally a nightmare for sysadmins. Many people stayed on BIND 4.9.x for a very long time because of the issues in BIND8. When ISC launched BIND9, they wanted to change this perception. The action relevant to this bug is that BIND9 was designed to be full of assertions and other checks in the code. The goal was to catch any badness early, and if it was uncorrectable crash in a predictable way. The thought was that crashing with a core dump where you can fix the problem is far better than running off with bad data that could eventually be used in some sort of remote-root exploit.

    This issue is sort of the payoff of that philosophy. Rather than taking this bad data and giving a remote hacker access to the machine BIND9 caught it with an assert, logs a useful message and core dumps. This is a big part of why 0-day leaves the wrong impression with me, "denial of service vector" seems to perhaps be a more accurate description. Sure, we could have a lively debate about if crashing is preferred or not, but I think most of the administrators who lived through BIND8 prefer the BIND9 procedures.

    Internet Software Consortium also offers support for BIND (and DHCP). I'm amazed how many people run large, production name servers on BIND yet don't have a cheap support contract. If you run BIND, rather than getting your alerts via /. look into a support contract so you get them directly from the vendor.

  8. isc.org Slashdotted. Good job! by L4t3r4lu5 · · Score: 1

    Hurrr, well done guys. Now nobody can download the patches.

    Someone want to set up some mirrors?

    --
    Finally had enough. Come see us over at https://soylentnews.org/
    1. Re:isc.org Slashdotted. Good job! by Anonymous Coward · · Score: 1

      Just updated my Debian boxes with apt a few minutes ago... I suppose you could always grab the source from a distro and compile.

    2. Re:isc.org Slashdotted. Good job! by Sipper · · Score: 1

      Hurrr, well done guys. Now nobody can download the patches.

      Right now the ISC website is still responding.

      At least some distributions have already incorporated the patches; for instance, for Debian upgrading simply involves doing an 'apt-get update', 'apt-get upgrade'.
      If updated packages are available, it's generally better to get the packages for Bind9 from the distribution rather than recompiling.

      However the "fix" in this case may not entirely fix the problem; the current repair withholds the DNS response and will keep Bind9 from crashing and shutting down, but they're not yet sure that there isn't another possible exploit involved. This means there will likely be a follow-on fix once they understand the actual exploit.

    3. Re:isc.org Slashdotted. Good job! by L4t3r4lu5 · · Score: 2

      So this is a patch to deliberately break the carefully constructed "graceful death" preventing a potential exploit?

      Sounds like a GRAND idea...

      --
      Finally had enough. Come see us over at https://soylentnews.org/
  9. Re:Open sores == fail by NoNonAlphaCharsHere · · Score: 5, Insightful

    I can see this is going to be a long thread full of trolls about open source, but the fact of the matter is that an application "crashing" (really ABENDing) due to an assertion failure is actually a sign of software doing what it was designed to do. Assert statements are used to check for "impossible" conditions, and have the program scream and die if one is found. So what we have here is a careful programmer's backstop doing its job.

  10. Re:Open sores == fail by 1s44c · · Score: 2

    Open sores software == fail. Once again full of security holes that the "many eyes" failed to spot.

    Unlike windows which never has remote crashes or remote execution of arbitary code problems. Tell me does microsoft.com still block ping? Why is that again?

  11. APK's monolithic hosts file by Culture20 · · Score: 5, Funny

    APK's monolithic hosts file is looking pretty good at the moment.

    1. Re:APK's monolithic hosts file by itchythebear · · Score: 1

      lol, +1 funny.

      I'm actually kind of surprised he hasn't stopped by to grace us with his randomly spaced and bolded wealth of knowledge...

      --
      If what I just said sounded like a troll, it was probably just a failed attempt at humor.
    2. Re:APK's monolithic hosts file by NoNonAlphaCharsHere · · Score: 1

      You can almost hear his hysterical laughter, can't you?

    3. Re:APK's monolithic hosts file by gl4ss · · Score: 1

      I actually went and downloaded a 16k line hosts file and started using that after seeing that post, you know just for trying it out.
      some sites load up faster. I just googled for some file that had been updated last month.

      --
      world was created 5 seconds before this post as it is.
    4. Re:APK's monolithic hosts file by mcavic · · Score: 1

      monolithic hosts file is looking pretty good at the moment

      Yeah, and when my car runs out of gas I'll just push it wherever I want to go.

  12. Re:Open sores == fail by bws111 · · Score: 1

    I am confused - which was it designed to do: allow invalid data in the cache, or die when it found said invalid data in the cache? One or the other of those is a bug, not a design choice.

  13. Re:A confusing summary on /., let me try to do bet by NoNonAlphaCharsHere · · Score: 3, Funny

    BIND8, for those who used it, was a pile of poo.

    Your understated discretion just takes my breath away.

  14. Re:A confusing summary on /., let me try to do bet by Culture20 · · Score: 2

    I also think the characterization as a "0-day" isn't quite right. To me at least a 0-day issue is a bug that can exploited to do something,

    Something like cause a denial of service?

  15. Re:A confusing summary on /., let me try to do bet by decula03 · · Score: 1

    That's an excellent post, Above.
    thanks!

  16. ZOMFG the internets are all crashed? by Rogerborg · · Score: 1

    Like "truly epic coronal mass ejections", lets save the hyperbole for when we can't use it. We'll know that there's a big problem when we can't read about it on Slashdot.

    --
    If you were blocking sigs, you wouldn't have to read this.
  17. Re:A confusing summary on /., let me try to do bet by TheCarp · · Score: 3, Interesting

    yes yes, but thats very limited. Yes, you can deny service.... but it can be started back up. The only loss is availability of the service, the integrity of the service is uncompromised. It isn't allowing someone to make you serve up their data, it isn't allowing anyone to dump data they shouldn't have, it isn't allowing them to change, erase or anything your data.

    Essentially... a DDOS means you are hosed until they stop or you can upgrade... the term 0-Day tends to be used to refer to actualy security issues, where the denial of the service is the least of your worries. Patching isn't good enough because, they got a window in, and could have installed a root kit.

    --
    "I opened my eyes, and everything went dark again"
  18. Re:Impossible! by afidel · · Score: 1

    Except anyone with a resolver running BIND is potentially affected since all the attacker needs to do is point you at the invalid domain twice, that could be as simple as a webpage with the domain included and a meta refresh longer than the TTL on the domain.

    --
    There are 4 boxes to use in the defense of liberty: soap, ballot, jury, ammo. Use in that order. Starting now.
  19. Re:A confusing summary on /., let me try to do bet by surgen · · Score: 5, Interesting

    Thanks for the clear explanation.

    If you run BIND, rather than getting your alerts via /. look into a support contract so you get them directly from the vendor.

    Very true. Its funny, that this morning I had applied security patches to a debian stable box and thought "hmm, looks like BIND is getting fixed, wonder what thats about" before this even got posted to slashdot.

  20. Re:Open sores == fail by NoNonAlphaCharsHere · · Score: 3, Insightful
    I guess it's really a question of design philosophy. Microsoft has always been from the "never test for an error condition you don't know how to handle" school, leading to lots and lots of buffer overrun type problems or just plain application crashes. The other side is to have tests you "really don't need". Say for example you have a switch statement where you "just know" (have verified elsewhere/input comes from a trusted source, etc.) that you have a lower-case letter that you want to process, so the code ends up looking something like:

    switch (c)
    {
    case 'a': whatever('a'); break;
    case 'b': whatever('b'); break;
    ...
    case 'z': whatever('z'); break;

    default: // AND THIS IS THE IMPORTANT BIT
    assert("c is not a letter!!");
    }

    Microsoft code would typically leave out the assert, and happily stumble along. At least with the assert, you know what AND WHERE the Bad Thing (TM) happened, and have a clue as to where to look to fix it.

  21. Tip of the iceberg by mseeger · · Score: 4, Insightful

    The "assertion"-problem is only tip of the iceberg.

    If an assertion fails, this usually means that someone managed to make the code behave in an unintended way. Since the affect occurred simultaneously at several providers all over the world, this indicates a coordinated attack. The chances are real, someone managed to exploit a buffer overflow (or similar) in BIND.

    So we have to look seriously into the possibility that people have a way to execute code with the same permissions as BIND has.

    When i got the information this morning, this was an alert topic.

    Yours, Martin

    1. Re:Tip of the iceberg by kqs · · Score: 5, Informative

      The "assertion"-problem is only tip of the iceberg.

      If an assertion fails, this usually means that someone managed to make the code behave in an unintended way.

      Except that the assertion isn't the problem. The problem is that BIND allows bad data into its cache. The assertion detects this and crashes BIND before the bad data becomes an exploit.

      Now, there still may be a way to execute code using this method, but the assertion has alerted everyone to this problem so I expect this particular problem to be solved quickly. And thanks to the assertion-crashes, people will be forced to upgrade rather than running a vulnerable version for the next 5 years.

      I'd prefer software without bugs, but since that's impossible, I'll happily take BIND.

    2. Re:Tip of the iceberg by blair1q · · Score: 1

      The assertion is a problem.

      Deployed code with asserts in it is crap, and would violate any contract I've worked to since 1995.

      At least this was just teh interwebs that it broke. If it had been safety-related, someone would be ducking under their desk trying to call their lawyer.

    3. Re:Tip of the iceberg by surgen · · Score: 1

      The assertion is a problem.

      Deployed code with asserts in it is crap, and would violate any contract I've worked to since 1995.

      At least this was just teh interwebs that it broke. If it had been safety-related, someone would be ducking under their desk trying to call their lawyer.

      So your code, that you make sound more important and/or safety related than DNS, doesn't have any failsafes? Really?

    4. Re:Tip of the iceberg by surgen · · Score: 1

      So you think assert() is a substitute for proper exception handling? Really?

      In this case specific case, sure, why the hell not? Its DNS, and you've found that you're in an impossible state. What else are you supposed to do? Even if the process hasn't been compromised, by the nature of the assert you've failed and don't know how to recover. Do you want to keep on serving DNS, assuming the process is in a state where it is fine to keep on trucking? Or maybe enter a do-nothing failure mode, which is just as useful as going down hard, but with the added bonus that the process is experiencing unknown problems and you want to rely on it to contain itself properly.

      And I didn't say it was a substitute for proper exception handling, just that you're going to let exceptions you haven't prepared for to bring the process down, rather than blindly swallowing them. Or do you think this is good code:

      try:
              foo()
      except Exception, e:
            pass # EVERYTHINGS FINE, GO BACK TO WORK!
      bar()

    5. Re:Tip of the iceberg by blair1q · · Score: 1

      My code, which sometimes is the difference between life and death, considers all possibilities to be nominal cases, and deals with each equivalence class accordingly.

      People who use asserts in fielded code are either (1) lazy or (2) dumb or (3) cheating their employers.

    6. Re:Tip of the iceberg by blair1q · · Score: 2

      >exceptions you haven't prepared for

      there's your problem right there.

      when you go through your code and you see an assert, or something that does the same thing, you're not done coding.

  22. Re:A confusing summary on /., let me try to do bet by jakeguffey · · Score: 1

    I am 100% with you up until you say, "I'm amazed how many people run large, production name servers on BIND yet don't have a cheap support contract. If you run BIND, rather than getting your alerts via /. look into a support contract so you get them directly from the vendor." I have a couple issues with this. The first is simply that it's perfectly reasonable to expect a good UNIX admin to handle BIND without issue for generalist deployments. The other issue I have is that you don't need a support contract to get these alerts. Sign up for the bind-announce mailing list (link: https://lists.isc.org/mailman/listinfo/bind-announce). Again, I'm totally with you up until the end there.

  23. Open resolvers by bjb_admin · · Score: 2

    I am glad I took my lumps and disabled public recursive resolving many years ago on my BIND installations. Only do that for local IP ranges! This eliminates all the resolver issues. Also I found that when the DNS server was open I was getting a constant stream of unusual TXT lookups which were for oddball domains. These contained many K of data. I suspect these requests were fake source IP requests being used as some sort of bandwidth DOS attack.

    1. Re:Open resolvers by Short+Circuit · · Score: 4, Insightful

      More likely, the unusual TXT lookups were someone streaming IP over DNS.

    2. Re:Open resolvers by mcavic · · Score: 1

      someone streaming IP over DNS

      If I owned a gun...

    3. Re:Open resolvers by bjb_admin · · Score: 1

      That is not the issue I was having. These were remote TXT lookups to a remote domain with a large TXT record. It was always looking up the same host and same TXT payload. No recursion stopped that issue. These were very regular at one or 2 second intervals. Probably would make a good bandwidth DDNS if you had access to enough recursive BIND servers, and could send requests with forged source IPs (which today is harder to do due to better filtering at the ISP's). Thus one small DNS request is multiplied several hundred times in size, like the old Smurf PING attacks.

    4. Re:Open resolvers by Short+Circuit · · Score: 1

      Might have been a cached data block for a botnet payload. as a DDOS, it doesn't make any sense, because you'd have had to put that TXT record on the retrieved host in the first place.

  24. Unbound, not NSD by bigogre · · Score: 2

    Unbound, also from NL Netlabs, is a recursive resolver. NSD is an authoritative server.

    The problem is with Bind as a recursive resolver, not as an authoritative server.

  25. Re:A confusing summary on /., let me try to do bet by Anonymous Coward · · Score: 1

    Yeah, but only the sheer incompetence a multi-billion dollar corporation like Microsoft could produce the level of spectacular FAIL needed to let the following kind of vulnerability go unaddressed for DECADES..

    http://www.kb.cert.org/vuls/id/951982
    Microsoft Windows UDP packet parsing vulnerability

    You have to admit being able to get root by sending malicious packets to a CLOSED port on a machine is just so awesomely FAIL, BIND's little DOS exploit pales in comparison.

  26. Re:Impossible! by swalve · · Score: 2

    That's not how liability works. You are talking about some kind of warranty.

  27. Re:Open sores == fail by bws111 · · Score: 3

    First, this has nothing to do with Microsoft, so there is no need to drag them into it.

    Second, I am not questioning the need to test for errors, or that sometimes the correct thing to do when an error is encountered is die. I am challenging your position that overall the software is doing what it was designed to do and this is not a bug. The assertion itself is fine - there are reasons why the cache may have been corrupted and you want to kill the program (hardware error, tampering with files, etc). However, in this case the check should have been done BEFORE the data was put into the cache, when the correct response would have been to simply reject the message. Failure to do that check is a bug.

  28. Re:A confusing summary on /., let me try to do bet by Above · · Score: 2

    I'm not sure how to square large production name servers with "generalist deployments". Clearly the small admin can do without a support contract. However I've seen large ISP's, supplying service to millions of customers with no support, and I think that's insane.

    If you go back to ISC's Software Support page you'll notice "Advance Security Notifications". Depending on the nature of the issue, ISC's support customers often receive notification before BIND-announce. I believe this particular issue went out in all forums pretty much at the same time due to the severity, but lesser issues may be released in a staged fashion.

  29. Re:Open sores == fail by bws111 · · Score: 1

    Also, note that in this case the assert did NOT tell them 'where the bad thing happened'. If it did, it would not be 'an as-yet unidentified network event'. The assert, in this case, is simply saying 'at some point in the past a bad thing happened, and I just figured that out now'.

  30. etckeeper by Compaqt · · Score: 5, Informative

    By the way, another thing people who are wont to mess with their /etc should keep in mind is etckeeper. It versions your /etc, by default in bazaar, but it's also supposed to work with git, hg, etc. It has triggers set so every time you install something, it does an automatic checkin.

    You can also manual commits, too, along with a message.

    Good for people who want to know what the config files looked like when they were working a week ago.

    Click to install (Debian and friends)

    --
    I'm not a lawyer, but I play one on the Internet. Blog
    1. Re:etckeeper by X0563511 · · Score: 3, Interesting

      Awesome!!

      I've been known to keep subdirectories of /etc as SVN repository checkouts, but that grabs the whole thing!

      The only thing I'd be worried about is accidentally uploading sensitive data (hashes and such).

      --
      For large sets, this will be our guide even unto death, for the LORD will work for each type of data it is applied to...
    2. Re:etckeeper by Compaqt · · Score: 1

      Yeah, I used to use the old-school ci and co commands from rcs (anybody remember that?).

      In fact, you can still use it to version specific files you care about without pulling in everything.

      One thing which is an annoyance for me is the huge lines of binary represented as text in Virtualmin config files. Haven't found a solution to that.

      You're right about the sensitive data. Anybody have a good solution?

      --
      I'm not a lawyer, but I play one on the Internet. Blog
  31. Re:Open sores == fail by swalve · · Score: 1

    Instead of testing for known and unknown invalid data, it's the right way to test for valid data and puke on invalid data? In your code example, you wouldn't need to run that test because you already tested/trusted it somewhere else. If you know it is a lower case letter, the test isn't necessary. Data should be sanitized before it ever gets to your logic.

  32. Re:Impossible! by asdfghjklqwertyuiop · · Score: 1

    No, we don't.

  33. Re:A confusing summary on /., let me try to do bet by jakeguffey · · Score: 1

    Ahh. Point. I didn't realize that ISC support provided notifications in advance.

  34. Re:A confusing summary on /., let me try to do bet by Canazza · · Score: 1

    that link you posted says it was patched 2 weeks ago. It makes no mention of the date the exploit was found. How do you know this was part of the software for decades?

    --
    It pays to be obvious, especially if you have a reputation for being subtle.
  35. Re:A confusing summary on /., let me try to do bet by Kjella · · Score: 1

    To be honest I completely hate ASSERT-style checks, particularly in multi-user systems. One single logic mistake and boom goes the whole server. With exceptions you can at least have a gradual panic. But when you so often resort to pointer-magic and any unterminated string is a recipe for chaos, well... Though it would be nice if exceptions actually worked, which they don't in C++. Try/catching into some third party code and it'll still segfault on you, completely ignoring your attempt to catch any and all exceptions. Sigh.

    --
    Live today, because you never know what tomorrow brings
  36. Re:A confusing summary on /., let me try to do bet by UnknowingFool · · Score: 1

    The point you are missing is "0-day" has come to mean vulnerabilities that can be exploited now for things like remote code execution, takeover, etc . In this case, the bug causes crashes but it is not clear that it makes the computer vulnerable to other security matters.

    --
    Well, there's spam egg sausage and spam, that's not got much spam in it.
  37. Re:Open sores == fail by X0563511 · · Score: 1

    Hilarity ensues :P

    I'm joking though... because that's just one tiny piece. The rest of the infrastructure is indeed eating it's own dogfood - either directly, or via "citrix netscaler"

    --
    For large sets, this will be our guide even unto death, for the LORD will work for each type of data it is applied to...
  38. I don't get it... by mcavic · · Score: 1

    How hard is it to write a DNS server without any vulnerabilities? I know it's complex, but still, come on. It's only the backbone of the Internet we're talking about.

    1. Re:I don't get it... by blair1q · · Score: 1

      In this case, it's a simple as not using an assert, particularly as an input validator...

      Seriously, are they fucking kidding with that? Do they also hardcode backdoor passwords?

      Grep all your code for assert, and, if they aren't wrapped in #ifdef DEBUG or something similar, replace them with something useful.

    2. Re:I don't get it... by psydeshow · · Score: 1

      How hard is it to write a DNS server without any vulnerabilities? I know it's complex, but still, come on. It's only the backbone of the Internet we're talking about.

      The usual suspects: enterprise and legacy. Rather than just being a passive lookup engine, BIND has all kinds of extra interfaces and message-passing schemes that keep secondaries in sync with the master and allow automated processes to update and reload zones semi-automatically. I suspect there are also a bunch of legacy record types and zone file syntaxen that need to be supported.

      It's similar to (but not as bad as) the problem with mail transport agents (MTAs aka SMTP servers). To be feature-complete and reliable they have to support a bunch of ancient protocols like UUNET and understand the quirks of legacy MTAs and work with other systems that expect an MTA to behave in a particular (if inelegant) way.

    3. Re:I don't get it... by bigogre · · Score: 1

      DNS does seem simple doesn't it? Ask a question and get an answer.

      Unfortunately for a recursive resolver to get an answer it must talk to multiple servers. Sometimes, a lot of times, the servers have incorrect or out of date data. So one server says it has an answer but it directs the resolver to the wrong place. Sometimes servers return bad data (it is corrupt or plain junk). Sometimes the server is a really old version of Bind and can't handle the newer features of DNS (DNSSEC, EDNS, new record types, etc.). And sometimes the server is a home made thing that seemed like a good idea at the time but doesn't really work all that well. The number of permutations of bad data and bad behavior is huge.

      A recursive resolver needs to handle all of the above and keep working, and try to have good performance. Gracefully handling subtly bad data seems simple until you have to write the code to do it. Yes, the gross problems are simple to solve. The others, well they are what can keep you up at night.

  39. Re:A confusing summary on /., let me try to do bet by Jose · · Score: 1

    when ever I think of BIND8, I think of my .sig:

    --
    The basic sleazeware produced in a drunken fury by a bunch of UCBerkeley grad students was still the core of BIND. --PV
  40. NSD by powdered+toast+dude · · Score: 3, Informative

    As a long-time BIND hater, I recently switched from djbdns/tinydns to NSD. I figured if it's good enough for a few root servers it was worth a look. It's very efficient and fast, uses standard zone files, fully ipv4/ipv6 dual-stack transparent, and is DNSSEC aware. Very pleased so far.

    --
    I'm an animal lover -- they're delicious!
  41. meaning of zero-day by Onymous+Coward · · Score: 1

    0-day used to mean that the exploit was release the day of release. Verses 1-day or later cracks.

    Different from my understanding. You're thinking of 0-day warez. Here, WP explains it pretty well:

    A zero-day (or zero-hour or day zero) attack or threat is a computer threat that tries to exploit computer application vulnerabilities that are unknown to others or the software developer. Zero-day exploits (actual software that uses a security hole to carry out an attack) are used or shared by attackers before the developer of the target software knows about the vulnerability.

    The term derives from the age of the exploit. A "zero day" attack occurs on or before the first or "zeroth" day of developer awareness, meaning the developer has not had any opportunity to distribute a security fix to users of the software.

    In short, knowledge of the vulnerability exists with attackers before developers. Developers developers developers developers.

    Could someone edit that, actually? s/distribute a security fix/address the vulnerability/ If the developer is unaware, they're neither analyzing, patching, notifying users, nor advising workarounds, let alone distributing security fixes.

  42. Re:A confusing summary on /., let me try to do bet by sjames · · Score: 1

    More to the point, since we have an advisory about it and there's a patch, it can no longer be considered zero day. A true zero day vulnerability is one that only the blackhats know about. Expanding that to include a vulnerability that the vendor doesn't yet understand well enough to patch makes sense. But anyone using the term for a bug that has a patch out to fix it is just being over-dramatic.

  43. Re:A confusing summary on /., let me try to do bet by PoopMonkey · · Score: 2

    I've never known 0-day to mean that. 0-day has to me always meant an exploit in the wild before the author is aware of it vs. an exploit taking advantage of a bug that was fixed a month ago but people haven't applied the patch.

  44. Security tip of the day: Do not use BIND by gweihir · · Score: 1, Informative

    It has an atrocious security history. Seems the rewrite did not accomplish much. Or if you have to use it, lock it into a VM, preferably qemu, so that you get at least some level of isolation.

    --
    Most ACs are not even worth the keystrokes to insult them. Be generically insulted by this and ignored otherwise.
    1. Re:Security tip of the day: Do not use BIND by Above · · Score: 4, Informative

      There has not been a single remote-root exploit in BIND9 since it was offered up to the world circa 2001. It was a complete rewrite with new goals, so taking BIND 4.x or BIND 8.x as examples isn't really relevant.

      ISC is also completely open about security issues, listing them all on the web site and registering them with the CVE Registry.

      As I stated in another post, the goal of BIND9 was use use various constructs (like assertions) to check data integrity, where possible on the fly and where not practical in a way that causes a core dump. That to fail safe was the best option, and crashing in a way the bug could be fixed was a positive. If you view the advisories against BIND9 you'll see that strategy has worked very well. Of course there's no reason not to lock any application in a VM, jail, chroot or whatever to get additional security, but I think the track record of BIND9 compared to most other major open source software is decent.

      BIND is also "full featured". Many of the folks here reference alternatives like NSD, tinyDNS, or Unbound which provide limited functionality compared to BIND. Obviously if you're willing to limit the functionality you limit the bug exposure, but that's true both if you use software that doesn't include the functionality but also if you disable that functionality in BIND. For instance the bug in question affects recursive resolvers only, if your BIND9 instance is an authority only configuration there is no exposure.

      I'm afraid most of BIND's bad reputation comes from BIND 4.x and BIND 8.x, both of which were quite bad (for different reasons). BIND9 was a departure, and now ISC is working on BIND 10, which should be yet another large leap forward.

    2. Re:Security tip of the day: Do not use BIND by gweihir · · Score: 1

      Well, as the current problems show, BIND9 still does not get it quite right. I agree that it is better. If BIND10 can make the same step as was made from 4/8 to 9, then BIND10 will finally be a good piece of mission-critical server software. And, yes, that is what is it and has to be. So comparing it to "most other open source projects" is bogus. Not even apache is that critical. Maybe OpenSSH, but it has a truly amazing security record, which certainly is no accident. BIND still has to get there.

      I am not saying it will not, but at this time the ego of the BIND team is still too large and its accomplishments do not quite match what is (and needs to be) expected. Until both states change some more, "do not use BIND unless you have to" (which would be the long title of my posting) remains sound advice.

      This is not criticism of the people doing this. Having a large ego that is not quite matched by actual skill is quite normal until you have a lot of experience. CS graduates suffer the worst from it in my experience. Unfortunately, this is perhaps the worst threat to software security that is there. To create secure software, you have to _underestimate_ your abilities by a significant margin and be very, very careful. The famous quote by Brian W. Kernighan applies with an amplification effect to architecture, design and implementation of secure software:

      "Debugging is twice as hard as writing the code in the first place.
      Therefore, if you write the code as cleverly as possible, you are,
      by definition, not smart enough to debug it."

      If you substitute "security analysis" for "debugging" and "several times as hard" for "twice as hard", then this is a core insight needed for creation of secure software. Unfortunately most code writes cannot manage the required humility. The BIND team seems to be able to learn, but is not quite there yet. And as this is a learning experience, everybody that makes the journey already is on the side of those that either get or or will get it in the future.

      So do not defend BIND9, do better. You likely can.

      --
      Most ACs are not even worth the keystrokes to insult them. Be generically insulted by this and ignored otherwise.
    3. Re:Security tip of the day: Do not use BIND by Above · · Score: 1

      I'm confused why BIND would be more critical than Apache (to use your example).

      DNS is, from the start, a robust, distributed system. If you have 4-6 name servers for your domain (as you should) and one is down for any reason (network unreachable, server dead, BIND crashed, whatever) users _should not notice_. Caching resolvers will automatically query other name servers, life will move on. Compare with widely used software such as Apache, Sendmail, Firefox, when those fail typically a user notices.

      Indeed, I would recommend anyone with _mission critical_ DNS needs operate multiple name servers _and use multiple software packages_. For instance the root servers are mix of BIND and NSD. Every software can have a bug, having ecosystem diversity is a good hedge, particularly when the protocol is already designed to deal with multiple servers.

      I admit BIND9 could do a lot better. It was conceived in the late 1990's, and written in the early 2000's. Computer Science evolves quickly, and there have been a lot of advancements since that time and BIND9 has not kept up. But that is why there is a BIND10 project now. If you have input I strongly suggest you contribute to it as it's a much more open development model than BIND9.

      The only bright line I want to draw is behind BIND 4/8 and BIND 9/10. It's actually sad they all have the same name. BIND 4 and 8 are junk, and gave BIND a very bad reputation that continues to this day. They are a major reason some of the competitive products exist. BIND9 was a clean start to change the gap, and hopefully BIND10 will be a quantum leap forward. Painting them all with the same brush is wrong.

  45. TreeWalk by macraig · · Score: 2

    I use TreeWalk. Since it's an implementation of BIND, do I need to apply this patch to it, and if so how?

  46. qmail backscatter by Onymous+Coward · · Score: 3, Interesting

    Did a little looking into it and, though I'm generally a fan of DJB's wares, unpatched qmail does indeed have the problem of accepting all mail for configured domains, regardless of localpart (box) validity. Which means DSNs will be sent for bad addresses, and since SMTP provides no way of validating senders, backscatter occurs. This is the term for it, by the way.

    I've seen plenty of spam using the mechanism. It's a real problem.

    Patches are available. But, yeah, DJB's licensing made even patching problematic for the longest time. Thankfully, he's conceded on that point. Which suggests to me he's not dogmatic or unreasonable, just rigidly principled.

    I run Postfix, too. Love it. The licensing limbo was part of my decision to go with Postfix, though there were a number of factors. But I still run DJB's tinydns and dnscache.

  47. Re:Open sores == fail by blair1q · · Score: 1

    Repeat after me:

    "There are no impossible conditions in input."
    "There are no impossible conditions in input."
    "There are no impossible conditions in input."
    "There are no impossible conditions in input."
      . . .

  48. Re:Open sores == fail by blair1q · · Score: 1

    So you're releasing your debug version of the code as a product? Nice.

  49. Re:A confusing summary on /., let me try to do bet by operagost · · Score: 1

    No it doesn't. It could have easily first appeared in the oldest of the supported OSes, or via a new feature (like IE) that is only supported on the listed OSes.

    --

    Gamingmuseum.com: Give your 3D accelerator a rest.
  50. Re:A confusing summary on /., let me try to do bet by operagost · · Score: 1

    Oh, and the list doesn't include XP, which is supported as long as you are on the last service pack, or Windows Server 2003. So the vulnerability first appeared in some service level of Vista.

    --

    Gamingmuseum.com: Give your 3D accelerator a rest.
  51. Debian package was updated before this post hit /. by Anonymous Coward · · Score: 1

    n/t

  52. Re:A confusing summary on /., let me try to do bet by xenobyte · · Score: 1

    Its funny, that this morning I had applied security patches to a debian stable box and thought "hmm, looks like BIND is getting fixed, wonder what thats about" before this even got posted to slashdot.

    Same here. Debian rules! :)

    --
    "For every complex problem, there is a solution that is simple, neat, and wrong." -- H.L. Mencken (1880-1956) --
  53. Re:A confusing summary on /., let me try to do bet by Morty · · Score: 1

    Submitter here. Comments:

    0-day refers to the time when the bug is first exploited relative to when it is patched by the vendor. It has nothing to do with whether or not the exploit yield unauthorized access. It is entirely possible to have a 0-day DoS attack.

    There was no evidence on whether or not the bug was triggered deliberately. Hence why the summary referred to it as a "potential" 0-day, and said the problem "is believed to be" a 0-day vulnerability.

    At the time crashes were initially occuring, no patch existed. That made it a 0-day, assuming

    SANS is a well-known security organization. Hopefully folks who care about this sort of thing are aware that isc.sans.edu is not the same entity as isc.org.

    This is a "news for nerds" site. Plenty of folks aren't running BIND 9 directly from isc.org at their workplaces. Perhaps they are using distribution-bundled BIND, or they're running BIND 9 at home, or they're not running BIND 9 at all and are just curious about major vulnerabilities. I know I like to read about flaws in major Internet software even for packages I'm not running.

  54. why? by Chirs · · Score: 1

    People who use asserts in fielded code are either (1) lazy or (2) dumb or (3) cheating their employers.

    Assuming performance isn't a problem, why wouldn't you leave them in on the off chance that you made a mistake in a corner case somewhere?

    1. Re:why? by blair1q · · Score: 1

      The fact that they're even there means you know there's a vulnerability, and you know you don't have a viable way to deal with it, and that your users will, eventually, run into it, probably in a situation where it causes them way more grief than the rest of your code is worth.

      Just using NDEBUG to turn them off is passing the buck to the rest of the code to crash cryptically instead of crashing identifiably, so it's even worse.