Forgot your password?
typodupeerror
Bug

Buffer Overflow in Sendmail 478

Posted by CmdrTaco
from the put-on-your-hardhat-and-rebuild dept.
ChiefArcher writes "On the footsteps of openssh, Sendmail 8.12.10 has just been released due to a buffer overflow in address parsing. Sendmail states this is potentially remotely exploitable. No updates on the Sendmail site yet, but the FTP site has the release notes."
This discussion has been archived. No new comments can be posted.

Buffer Overflow in Sendmail

Comments Filter:
  • Sendmail's future (Score:4, Interesting)

    by nepheles (642829) on Wednesday September 17, 2003 @02:15PM (#6987466) Homepage
    Is it perhaps time for a code rewrite in Sendmail, or maybe a quiet, dignified retirement? It appears, from empirical evidence, that Sendmail is insecure by design. And that's not a good idea for a mail server, in today's world of spam
  • by ajiva (156759) on Wednesday September 17, 2003 @02:16PM (#6987476)
    You'd think that it would be easy to fix this at the language level. It can't be that hard to create a string library that automatically ignores everything past the end of the string.
  • by autopr0n (534291) on Wednesday September 17, 2003 @02:16PM (#6987482) Homepage Journal
    Seriously, it seems like these guys have about as many security holes per line of code as MS (but obviously MS has a lot more code). Anyway, why does anyone use sendmail anymore? The difference between configuring sendmail and configuring postfix is like the difference between banging your head on the wall and having sex with the most beautiful woman on earth [google.com].
  • by jumpingfred (244629) on Wednesday September 17, 2003 @02:17PM (#6987500)
    Does anyone have a good explanation of how a buffer overflow allows you to execute arbitrary code? It seems to me that the memory that gets overwritten is some what random. It is either the stack or some memory in dynamic store. It seems like each time you sent in the overflow data it will be writing a different area of memory so you don't know if you code will get executed or not. Since you have to start executing at the right place you would almost never be able to execute your code.
  • OMFG (Score:4, Interesting)

    by lspd (566786) on Wednesday September 17, 2003 @02:36PM (#6987727) Homepage Journal
    When did everyone decide the standard way of fixing security bugs was no longer worth the effort. You don't release a new version with a security bug fixed until all the distros have been contacted and the fix has been backported. Why have Sendmail and OpenSSH decided this no longer applies to them? Is Apache next? Are they going to force an upgrade to Apache 2 by rolling security fixes into beta versions and not bothering to tell anyone before they are released?
  • by Twister002 (537605) on Wednesday September 17, 2003 @02:44PM (#6987797) Homepage
    The big difference between bugs found in MS products and bugs found in Open Source products seems to be: Bugs in Open Source products seem to make the /. front page the same day a patch is released. MS product bugs are posted about days before a patch comes out.

    Of course that could be because the OS projects fix their bugs as soon as they find them rather than having to wait for the red tape to clear up.

  • by barfy (256323) on Wednesday September 17, 2003 @03:12PM (#6988053)
    because of the addressing scheme used in Intel processors, and the standard ways of creating buffers in C and how they get executed.

    When you create a buffer it tends to use *short* addressing, which means the buffer location is NEAR the code that is being executed. Generally something like,

    Store a char
    Increment buffer pointer by one,
    am I done?
    No repeat

    The problem is that if the buffer "overflows" it wraps the addressing to back over the instructions being executed.

    And it turns out that this behavior is not random, and you can depend on precisely what character will overwrite the code that is being executed and you write a jump statement to replace the store a char instruction into the buffer and your code starts executing... Voila, a buffer overflow exploit.

    It *WAS* standard coding practice in the good old days to place the burden of correctly sized and or terminated inputs onto the code that was creating the string to be inputed. This prevented the need for excessive cycles being wasted making sure that there wasn't bad input going into the buffer. And in the good old days this was the correct thing to do. Which is why all the code was written this way, it was *good* design.

    Today it turns out, that the risk of *malware*, code designed to take advantage of this behavior, for nefarious use is greater than the waste of cycles to detect bad code (which is a lot of cycles wasted). So the code needs to be rewritten to check for malware. This is the NEW good design, but it requires a massive effort to change old practices to new practices. Stuffing inputs into buffers is probably one of the most common of all operations done on computers. And changing all this code, and preventing new code written in the old way (because the code will operate correctly in the absence of malware) is a big and important effort.
  • by pegr__ (144172) on Wednesday September 17, 2003 @03:23PM (#6988160) Homepage
    But you don't have to know exactly where the jmp, etc. is... Pad your exploit code with my favorite instruction, NOP (No OPeration). If you have some idea where the pointer is going to land, just start writing a few hundred/thousand/million NOP's, then your code. As long as the pointer lands in NOP-land, it will eventually get to your code.

    Besides, NOP is one of the FASTEST executing instructions there is! I use them in all my programs to enhance performance...
  • by msimm (580077) on Wednesday September 17, 2003 @04:47PM (#6988929) Homepage
    Instead of use bluebottle.com [bluebottle.com]? They have free 10 meg accounts without MS bs or advertising and use a TMDA like system for anti-spam verification. I'll never understand why technical people would use a hotmail account (bluebottle *will* also check your hotmail account for you).
  • Re:"Email Different" (Score:3, Interesting)

    by Stevedust (560058) on Wednesday September 17, 2003 @05:04PM (#6989065)
    For disposable email accounts (for site registrations etc), take a look at Mailinator [mailinator.com]. It offers automatically generated mailboxen, which are deleted after a few hours.
  • by pr0ntab (632466) <`moc.liamg' `ta' `batn0rp'> on Wednesday September 17, 2003 @09:34PM (#6990885) Journal
    What are you talking about? Can you name a single network operating system since the late 80s that doesn't use virtual memory with 32-bit or larger pointers?!

    Who modded this up?

    There is no way in hell you'll cause a pointer to wrap around and come back up since if you write to the page mmaped at 0 on essentially every OS out there you get a page fault (and the OS kills the program, Null pointer exception). And before that you walk all over the pages that are between the break and stack, unallocated, or maybe all over the read-only shared libs, and they all will cause page faults and SIGSEGV your ass into next Tuesday.

    Here's krog. Krog allocate automatic variable on stack. Stack grow downward. Data fills from lower to upper address (opposite stack growingness). Krog no check length of input. Krog overwrite stack not belonging to his stack frame (previous call). Ooomba, clever hacker, he know offset to return address in leaky function. OOmba, he sendum nasty input Krog no check length on that overwrite return address. When function return, it jump back into buffer instead of last function. Buffer gottem nasty root shell code, not data.

    Krog sad.

    Ooomba does happy dance.

    Yes. Check your inputs.

    YES DONT ASSUME YOU KNOW ANYTHING ABOUT HOW LARGE A BUFFER IS

    YES, FOR GODS SAKE PEOPLE, NEVER ALLOCATE BUFFERS AS AUTOMATIC VARIABLES ON THE STACK!!! ARE YOU INSANE!!!!!!!!>?>>>>>>>

  • by Anonymous Coward on Wednesday September 17, 2003 @11:01PM (#6991338)
    and since that doesn't seem to help Windows NT, that means Microsoft should be DOUBLY ashamed?

    Seriously, no one doubts Microsoft's technical abilities. They have a lot of smart people working there. That's why I'm baffled that they aren't blowing the doors off Linux in terms of security. It's pretty sad that a 40 billion dollars-in-the-bank thousands-of-PhD's company is "neck and neck" or maybe even behind the "geeks and high-school students".

E = MC ** 2 +- 3db

Working...