Slashdot Mirror


Mac OS X Buffer Overflow Found

MacDork writes "Well, if default settings in Mac OS X made Lance Ulanoff excited, this is really going to make him do the monkey boy dance... SecurityFocus's Bugtraq mailing list just posted a buffer overflow, in the utility for mounting and probing ISO 9660 file systems. No exploits were mentioned. No word on whether 'Max' alerted Apple or anyone outside of the Bugtraq mailing list though." Also, 'Max' made entirely unfounded, sweeping statements about the general quality of Mac OS X from this one little item, but oh well. When you're on top, you make a tempting target.

63 of 161 comments (clear)

  1. Looks low risk to me... by MarkusQ · · Score: 5, Interesting

    From looking at the posting, I don't see any demonstration (or even any indication) that this is exploitable. What I see is that, if you put a goobered up CDROM in the drive (or use perl to simulate same)...

    ...it won't work.

    Yes, it might be possible to craft some clever exploit in the usual way, but that is by no means easy and is often impossible (depending mostly on what gets allocated around the buffer).

    And if it is exploitable? Will we see a rash of strangers in London Fog coats trying to slip CDs into unsuspecting Macs? We already prevent that, since anyone who could do that could do anything they wanted anyway, up to and including installing an old copy of BeOS over OSX anyway.

    -- MarkusQ

    1. Re:Looks low risk to me... by MSG · · Score: 4, Insightful

      The potential for exploit doesn't require you to insert a CD. It may be exploitable by command line arguments. If so, then there may be a vector for an attacker to begin privilege escalation if he can achieve access to a local account, in which case this would present a full root vulnerability to a remote user.

    2. Re:Looks low risk to me... by Anonymous Coward · · Score: 3, Interesting

      [Jonathan-Dobbies-Computer:/Users/jsdobbie] guest% /System/Library/Filesystems/cd9660.fs max$ ls -la cd9660.util
      su: /System/Library/Filesystems/cd9660.fs: Permission denied.

      makes me question it's usefulness even more

      If one has physical access to the machine, it isn't secure; everyone knows this

    3. Re:Looks low risk to me... by ag0ny · · Score: 5, Interesting

      And if it is exploitable? Will we see a rash of strangers in London Fog coats trying to slip CDs into unsuspecting Macs? We already prevent that, since anyone who could do that could do anything they wanted anyway, up to and including installing an old copy of BeOS over OSX anyway.

      That's not the way it works. The problem is a typical input validation problem in a setuid root binary. You don't need a CD. In fact, you don't even need physical access to the computer.

      This is a privilege scalation vulnerability. If exploitable, this means that someone with non-superuser access to the computer could exploit the (as of yet unconfirmed) vulnerabilty in this binary to gain superuser privileges.

      You must take into account that you don't need to be a local user in order to run this program. Some other vulnerability or misconfiguration can be used first in order to run an exploit against the cd9660.util binary.

    4. Re:Looks low risk to me... by klui · · Score: 3, Interesting

      Maybe you're running Jaguar or some other version of OS X. Panther 10.3.1 has the directory world readable and I was able to reproduce the seg fault.

    5. Re:Looks low risk to me... by Micro$will · · Score: 2, Informative

      I have Jag (10.2.8) and was able to do it as a non-admin user.

    6. Re:Looks low risk to me... by You're+All+Wrong · · Score: 5, Interesting

      "I don't see any demonstration (or even any indication) that this is exploitable."

      Then what the fuck is "#2 0x41414141 in ?? ()"?

      To me, that looks like user data in the stack frame.
      To me, that means that an arbitrary jump can be executed.
      To me, that means that arbitrary NUL-less code can be executed.

      And the chances of there existing NUL-less BSD PPC shell-code are what, you ask?

      Here's your answer -
      0x7CC63278, 0x2F867FFF, 0x41BC005C, 0x7C6802A6,
      0xB0C3FFF9, 0xB0C3FFF1, 0x38867FF0, 0x38A67FF4,
      0x38E67FF3, 0x7CA52278, 0x7CE72278, 0x7C853A14,
      0x7CC419AE, 0x7C8429D6, 0x7C842214, 0x7C043A14,
      0x7CE72850, 0x7C852A14, 0x7C63212E, 0x7C832214,
      0x7CC5212E, 0x7CA52A78, 0x44FFFF02, 0x7CE03B78,
      0x44FFFF02, 0x4BFFFFA9, 0x2F62696E, 0x2F73685A,
      0xFFFFFFFF, 0xFFFFFFFF

      All someone's got to do is calculate the offset for the overwritten return stack to contain such that it calls the above code. That could be calculated with just 2 more probes with perl - use 'abcdefghijklmnopqrstuvwxyz' x 20 and 'abcdefghijklmnopqrstuvwxyz123456789' x 16
      and tell me the values read off the stack.

      If anything you should be thankful that 'Max' didn't publish real live exploit code, as then the script kiddies would be doing their best to run it already. At least this way they need to still fill in the gaps. Gaps that unfortunately I've just had to explain on a very public forum because a Mac user had his head in the clouds.

      YAW.

      --
      Your head of state is a corrupt weasel, I hope you're happy.
    7. Re:Looks low risk to me... by MyDixieWrecked · · Score: 2, Informative
      up to and including installing an old copy of BeOS over OSX anyway.

      Well, BeOS doesn't run on any G3/G4/G5. Only original PowerMacs (601/603/603e/604/604e).

      OSX only runs on NewWorld G3s and newer, so pretty much BeOS wouldn't be a threat, there. ;)

      Linux on the other hand........

      --



      ...spike
      Ewwwwww, coconut...
    8. Re:Looks low risk to me... by Anonymous Coward · · Score: 2, Funny

      We're talking about OS X here, not Windows. There are no script kiddies.

    9. Re:Looks low risk to me... by guuyuk · · Score: 2, Funny

      Besides, most people would look for an eject button on the CD drive. The last Mac that I saw that had that was a Beige G3.

      (For the humor impaired, it's supposed to be a joke)

      --
      We're sorry, the phone number you have reached is imaginary. Please rotate your phone 90 degrees and try your call again
    10. Re:Looks low risk to me... by freerangegeek · · Score: 5, Insightful

      Excuse me, but to execute a mount I have to at least have a shell on the affected machine, right? I may not need console access, but I do need shell access.

      And, by default, the firewall is ON, and sshd is disabled, so 'by defualt' I do need local access. And to execute a 'shell capable' program I can't just mail an attachment to the user, the user has to actively open it.

      Admittedly, this is a serious problem that needs fixing, but this won't be narachi, codered, etc. I'll bet you we have a fix in less than 2 weeks available for download via the system update command. (probably less)

      Lee

    11. Re:Looks low risk to me... by b1t+r0t · · Score: 3, Informative
      And the reason NUL-less shellcode is even possible under OS X is that it ignores the middle two bytes of system call instructions. (The high byte is the system call instruction, and the low byte is used for the system call number.)

      Way to go, Apple. (Actually, this probably dates back to NeXT.)

      --

      --
      "Open source is good." - Steve Jobs
      "Open source is evil." - Microsoft
    12. Re:Looks low risk to me... by Jesrad · · Score: 4, Informative

      2 weeks ? Why wait ? Get the fix for this vulnerability, and another similar one freshly discovered, from here.

      --
      Maybe we deserve this world ?
  2. wtf by prockcore · · Score: 2, Interesting

    When you're on top, you make a tempting target.

    I see, so you buy into the argument that MS is only targetted because it's so popular?

    I'm always amazed at how fast Mac users will resort to MS-style tactics and excuses.

    1. Re:wtf by hype7 · · Score: 4, Insightful
      I'm always amazed at how fast Mac users will resort to MS-style tactics and excuses.


      The difference is that Apple, unlike Microsoft, provides timely patches. Not timely excuses.

      -- james
    2. Re:wtf by idontsmoke · · Score: 2, Insightful
      I'm always amazed at how fast Mac users will resort to MS-style tactics and excuses.

      The difference is that Apple, unlike Microsoft, provides timely patches. Not timely excuses.

      No, the difference is the grandparent poster quoted out of context. Pudge was referring to the "entirely unfounded, sweeping statements about the general quality of Mac OS X" that 'Max' made while reporting the bug, he wasn't trying to play down the fact a bug exists.

  3. Harsh, but not incorrect by MSG · · Score: 5, Interesting

    "Max" was definitely harsh, but he's not entirely out of line. cd9660.util *is* a SUID binary, and one would expect educated developers to take that into account and carefully validate any and all input. It's just what you *do* in a SUID program.

    This type of attack is nothing new, and this vulnerability may be an indication that security isn't being taken seriously.

    So... Darwin users/developers. Does this problem affect the open source Darwin? Just how many SUID binaries do you find on Darwin?

    1. Re:Harsh, but not incorrect by zangdesign · · Score: 2, Informative

      This type of attack is nothing new, and this vulnerability may be an indication that security isn't being taken seriously.

      Or possibly that these developers are delving into a new area where they don't have all the answers yet. I expect that there will be many more security issues found - it's the nature of the game when building something new or something old in a new way. It happens; you fix it and move on.

      Or you take the Max alternative - burn your bridges and execute any developer and his/her family and friends as they try to escape.

      --
      To celebrate the occasion of my 1000th post, I will post no more forever on Slashdot. Goodbye.
    2. Re:Harsh, but not incorrect by brass1 · · Score: 4, Informative

      > So... Darwin users/developers. Does this problem affect the open source Darwin?

      Well, for one, it made it easier for me to find the issue in the source tree: <a href="http://cvs.opendarwin.org/index.cgi/isoutil/ cd9660.util_main.m?rev=1.1.1.6&content-type=text/x -cvsweb-markup&cvsroot=apple">here</a>)

      i nt main( int argc, const char *argv[] )
      {
      const char *myActionPtr;
      int myError = FSUR_IO_SUCCESS;
      char myRawDeviceName[256];
      char myDeviceName[256];
      int mnt_flag;

      /* Verify our arguments */
      if ( (myError = DoVerifyArgs( argc, argv, &mnt_flag )) != 0 )
      goto AllDone;

      /* Build our device name (full path), should end up with something like: */
      /* /dev/disk1s2 */
      strcpy( &myDeviceName[0], DEVICE_PREFIX );
      strcat( &myDeviceName[0], argv[2] ); <======

      Now.. I personally wouldn't have used strcat in this case, strncat is your friend. One also notes DoVerifyArgs(), which does check the length of argv[2]:

      /* Make sure device (argv[2]) is something reasonable */
      myDeviceLength = strlen( argv[2] );
      if ( myDeviceLength < 2 )
      {
      goto ExitThisRoutine;
      }

      Sigh.. to make sure it's not too short. I've seen worse, but I have also had a CS 202 prof who would fail a student for this kind of thing.

      [ Three cheers for the paranoia in slash that made this post nearly impossible ]

    3. Re:Harsh, but not incorrect by RatPh!nk · · Score: 2, Interesting

      What made the comment out of line was his remark that any code that did not come from the FreeBSD side of the road was of poor quality.

      -ph!nk

      --
      Argh. The laws of science be a harsh mistress.
    4. Re:Harsh, but not incorrect by MSG · · Score: 2, Interesting

      You could also drop the length checks entirely, and stat the file indicated by the arg. If it's a block device, the arg is valid.

  4. What! by Anonymous Coward · · Score: 2, Insightful
    Also, 'Max' made entirely unfounded, sweeping statements about the general quality of Mac OS X from this one little item, but oh well. When you're on top, you make a tempting target.

    Huh? How do you figure this? All he said was that parts of MacOSX that didn't come from BSD were not very well written. Whoopdeedoo - any operating system of that size will be likely to have some not so great code in it. It's beyond me how you managed to interpret Max's comment as an 'unfounded, sweeping statement' about the quality of MacOSX, given that 'parts' is a rather indeterminate quantity.

    1. Re:What! by pudge · · Score: 4, Informative

      All he said was that parts of MacOSX (sic) that didn't come from BSD were not very well written.

      Because it implies anything written in Mac OS X may be written poorly, while nothing from BSD is. Note that the majority of security fixes lately in Mac OS X, that I recall, were in BSD code (esp. ssh). I'm not criticizing ssh or BSD or anyone, it's just a stupid statement for the guy to make. Fine, it's a bug, no need to attempt to impugn Apple's programmers over it. I've said similar statements about people who criticized the ssh crew's code, or abilities, when a new bug is found.

  5. You aren't doing a thing for Apple's image by 0x0d0a · · Score: 4, Insightful

    Blind, stupid fanaticism doesn't do anything to help Apple -- it just means that people ignore Mac fans.

    MacDork writes "Well, if default settings in Mac OS X made Lance Ulanoff excited, this is really going to make him do the monkey boy dance... SecurityFocus's Bugtraq mailing list just posted a buffer overflow, in the utility for mounting and probing ISO 9660 file systems. No exploits were mentioned. No word on whether 'Max' alerted Apple or anyone outside of the Bugtraq mailing list though." Also, 'Max' made entirely unfounded, sweeping statements about the general quality of Mac OS X from this one little item, but oh well.

    I've seen *tons* of vulnerability releases about companies that contain harsh criticism of their security policies. This is not unusual. At the least, Apple screwed up on an important utility. They can take their lumps, same as everyone else does when they screw up.

    When you're on top, you make a tempting target.

    Apple isn't "on top" of much of anything that I can think of. Small/midrage servers? That's Linux-dominated. Workstations? That's Windows-dominated. I suppose they have more users than the other BSD variants, for what that's worth.

    Frankly, "Max" may be biased. I suspect that he's mostly right -- that the hammered-on and designed-by-folks-with-security-experience BSD code is more reliable than the new stuff Apple churned out. I do know that "MacDork" definitely *is* biased.

    I wish editors would reject stories that are just blatently biased, or at least reserve the right to re-summarize story submissions.

    1. Re:You aren't doing a thing for Apple's image by steeviant · · Score: 5, Insightful

      Apple isn't "on top" of much of anything that I can think of. small/midrage servers? That's Linux-dominated. Workstations? That's Windows-dominated. I suppose they have more users than the other BSD variants, for what that's worth.

      Or more users than all of the other Unix systems put together if you're talking about the desktop.

      Apple sell more Unix than any other vendor in the world at the moment, so they are on top in at least one respect.

    2. Re:You aren't doing a thing for Apple's image by MacDork · · Score: 2, Interesting

      I wish editors would reject stories that are just blatently biased, or at least reserve the right to re-summarize story submissions.

      You've got me, I'm definitely biased. I think Apple is the greatest thing since sliced bread.

      However, on the note of editorializing, who says they don't? My submission was exactly like my post except it used the 'monkey boy dance' line rather than 'wet dreams' line. I felt it was more appropriate for a general /. crowd :-) For the record, I have also posted this to bugreporter.apple.com just in case they were in the dark about it.

    3. Re:You aren't doing a thing for Apple's image by macdaddy · · Score: 3, Informative
      "Frankly, "Max" may be biased. I suspect that he's mostly right -- that the hammered-on and designed-by-folks-with-security-experience BSD code is more reliable than the new stuff Apple churned out."

      Apple didn't "churn it out." It's derived from OpenStep Workspace Manager as anyone with any relevant knowledge of OS X would know. Hell it even states in it the man page:

      Derived from the Openstep Workspace Manager filesystem utility programs.

      "I do know that "MacDork" definitely *is* biased....I wish editors would reject stories that are just blatently biased, or at least reserve the right to re-summarize story submissions."

      Why would the Slashdot folks do something so stupid? All of their articles are biased. It's that biasness that gives whiny little wish-I-knew-it-all people such as yourself a place to bitch and moan and make people think you're smart.

      Your village called. They want their idiot back. Shoo. Go on now. Shoo.

    4. Re:You aren't doing a thing for Apple's image by aftk2 · · Score: 2, Informative

      I seriously doubt that. Ever heard of linux?

      Ever heard of...(ahem)...

      Adobe Photoshop, After Effects, InDesign, Illustrator, Acrobat, Logic Audio Platinum, Digidesign Protools, Macromedia Flash, Fireworks, Dreamweaver, Freehand, Apple Final Cut Pro, DVD Studio Pro, Shake, QuarkXPress, Microsoft Word, Excel, Powerpoint, Propellerheads Reason, TC Spark, Ableton Live, Corel Painter, Avid Xpress, Symphony, Media Composer ...

      ...to name a few.

      These are programs which people use every day to get work done. They are available on Mac OS X. They are not available on Linux.

      Apple used to hold an important niche in the DTP market. Maybe they still do. At least, it's a more important market then commercial desktop unices...

      Agreed. Being on top in commercial desktop publishing, graphic design, professional video and audio is much more important than being on top in commercial desktop unices.

      --
      concrete5: a cms made for marketing, but strong enough for geeks.
    5. Re:You aren't doing a thing for Apple's image by geoffspear · · Score: 5, Funny
      I wish editors would reject stories that are just blatently biased

      Well, that would pretty much leave Slashdot with the Science and Ask Slashdot categories, and nothing else. Show me a fair and balanced story about SCO or RIAA.

      --
      Don't blame me; I'm never given mod points.
    6. Re:You aren't doing a thing for Apple's image by One+Louder · · Score: 3, Interesting
      Apple isn't "on top" of much of anything that I can think of.
      I suspect he meant "on top" with regard to the lack of exploited security vulnerabilities. Nobody I know running MacOS X has ever had their machine actually compromised.

      Certainly this makes the OS a bigger target for fanboys of other operating systems trying to be the first to "prove" that Macs are somehow equally insecure.

  6. In All My Years... by Bloodmoon1 · · Score: 4, Insightful
    On OS X, about 2 of them, actually, I've seen 1 bug that COULD have posed a problem for me. Maybe I'm just not as big of a power user as I think I am, but I really fail to see how virtually any of the bugs/exploits/whatever that are found for OS X are any type of problem. Yes they need patched, but they almost don't seem worth mentioning except for the sheer novelty of it, and maybe as some sort of strange inferiority complex kick for Windows users, as a recent article seems to suggest.

    Take this one for example, which many considered to be a "big security issue". Basically it only was a problem:
    1. On laptops.
    2. When someone had sudo running in Terminal.
    3. When the computer was put to sleep.
    4. For 10-20 SECONDS after the computer was woken up, but before the clock was updated, someone with physical access to the computer could execute code.
    What a massive, gaping, goatse proportioned hole. Who knew it was a bad idea to leave your computer running sudo just laying around in Starbucks while you went to the can? And Apple still had a patch out in a week or two. And in 10.3, passwords can be required to wake the computer, further negiating this and any similar problems.

    Now compare that to the 50 critical security fixes needed immediately for an install of a year old Windows XP disk. And the fact that there are about a hundred different ways to execute code in Windows, either legitimate or malicious, all across the system, even in the damn web browser.

    Basically what I'm getting at here is that this is newsworth simply for the fact that it really isn't. I'd be willing to bet 0 people will have any problem with this before it is patched.

    And on a personal note, "Max" sounds pretty fucking stupid and ignorent. "It appears that parts of MacOSX that didn't come from BSD are not very well written and have significant security issues." Oh boy! I found a buffer overflow that will effect no one and that I probably didn't even bother to inform Apple about before hand! I'm a L337 haX0r bitches! Now if he just would have thrown in something about how Apple is beleaguered and BSD is dying, we could just chaulk up "Max" as a lucky troll.
    --

    Request: ECM unit, 1000 km fullerene cable, 1 tactical nuclear weapon. Reason: Birthday party for foreign dignitary.
    1. Re:In All My Years... by Bloodmoon1 · · Score: 3, Insightful

      50 is a kind of randapher guess I took. I'm sure it would be more if I went and actually bothered to check, but I don't really care. If Apple (OS What? Details son, details) has had 78 holes, Microsoft has probably had about 8 million. Besides, who cares? We all know MS systems are less secure than Apple systems. No news there. Stop trying to defend against every anti-MS comment, it's to much work for a person to do. Besides, I said 50 critical fixes. I guarantee there haven't been that many critical fixes to OS X.

      And I'm well aware, as are virtually all Mac users, that we don't have the perfect OS by any means. It has it's issues. All of them do. Just ours has fewer issues than almost all others (especially compared to our user base), is probably the easiest to use (approx. 10 years of usage, never had to even deal with device drivers) and learn, has a decent amount of software support, has 0 viruses (besides the ones that affect all Microsoft products on all platforms), and is by far and away just the nicest looking. No one ever said it was perfect. Jaguar was the same way. And it's better now in Panther. And OS X will be better still in 10.4, and then 10.5, and so on. Things are as good as they ever have been, but they can only get better from here.

      On a totally unrelated note, I'm updating my post reply policy for ACs.

      --

      Request: ECM unit, 1000 km fullerene cable, 1 tactical nuclear weapon. Reason: Birthday party for foreign dignitary.
    2. Re:In All My Years... by b1t+r0t · · Score: 3, Interesting
      As loads of people point out, this *is* remotely exploitable.

      No. Unless your definition of "remotely exploitable" includes the words "already has a shell account on the system". My definition doesn't.

      --

      --
      "Open source is good." - Steve Jobs
      "Open source is evil." - Microsoft
    3. Re:In All My Years... by Huge+Pi+Removal · · Score: 2, Informative

      The point is privilege escalation. If there's a hole in one of your services (as there are, from time to time), it won't hurt you too much if, say, an intruder is roaming around as an unprivileged user, such as www or nobody. If they can exploit a setuid binary to give themselves a backdoor, change accounts, basically do anything root can, then that's a hell of a lot worse.

      Security comes in layers. I want as many layers as possible.

      --
      - Oliver

      The right to bear arms is only slightly less stupid than the right to arm bears...
  7. When OSX becomes popular... by eyeball · · Score: 5, Insightful

    Unfortunately, when OSX becomes popular enough, it will become a huge security target. But it won't be security exploits that pose a problem, it will be the same problems that plague Windows today:

    Just like in the Windows world, it's social engineering that causes installation and execution of quasi-legal applications like Comet Cursor and Bonsai Buddy, as well as downright unethical and illegal programs (virus and worms) that get installed when a user is told "click on the .exe to see boobies." No type of security can possibly stop that type of human behavior (being an IT I'm convinced that education, warnings, and even threats can't stop it).

    --

    _______
    2B1ASK1
    1. Re:When OSX becomes popular... by dema · · Score: 3, Funny

      Unfortunately, when OSX becomes popular enough

      Lucky for us Mac users, that will never happen :D

    2. Re:When OSX becomes popular... by McAddress · · Score: 3, Funny

      it can't become popular b/c it is built on BSD, and BSD is dying. Or b/c Apple is dying. 2 for the price of one.

    3. Re:When OSX becomes popular... by Durindana · · Score: 2, Funny

      ... then people who have never used it will understand the importance of requiring admin password entry before installing anything.

      That's why you don't, and won't, see malware on OS X - when the machine demands a password for some shite you think is dodgy, people stop and squint; they don't just click the big button that says 'Yes! Show me boobies!'

  8. Probably flamebait but I can't resist by captainkibble · · Score: 3, Funny

    Reaction to bug/vunerablity/error reports: Windows User: Ahhh crap another bug/vunerablity/error how long shall I have to wait till that gets patched Linux User: Ahhh crap another bug/vunerablity/error better get the patch Mac OS User: What bug/vunerablity/error? There have never been any bugs/vunerablities/errors in Mac OS. Mac OS bugs/vunerablities/errors are just Windows propoganda. The bugs/vunerablities/errors are throwing themselves against the city walls. We are killing them!

    --
    Warning! This post may contain a pun!
  9. Re:Ehh.. it don't work for me. by GMontag451 · · Score: 4, Informative
    Read, comprehend, post, generally in that order.

    The command line was just a demonstration of the vulnerability, not exploit code. All it was supposed to do was segfault. The attached gdb output shows that the 'A's overwrote one of the return addresses on the stack frame. That means it might be possible to jump to an arbitrary memory address and execute code, as root I might add.

  10. sarcasm by zerosignull · · Score: 2, Insightful

    "When you're on top, you make a tempting target." I beleve it was ment as a sarcastic pun. After the recent plaming from other articles sayin that mac os x would have more holes found in it 'if' it were on top. This is s prity hard to exploit bug though. "Persuming" that u can execute malitious code think of the steps you would have to go through to get to actuallly execute the buged program? If by the time you can execute command line argument's then the OS is in trouble cause ne thing can be done. It doesnt seem likely that a hacker would gain acces to your computer just to run a buggy program that "may" or "may not" give them more access to your computer. It seems to me that all the mac bug's are hard to exploit as apposed to something like blaster and it's variants. Written on Windows XP BTW. Patched and fealing safe. Hardware router u know people :)

  11. Re:Look, pudge.. by pyrotic · · Score: 4, Informative

    you have to realize that Apple has no experience when it comes to the world of Unix security.

    They weren't great, but then who was back in the day.

    Next were developing their unix since 1988, and Apple merged with them in 1998. Apple's current CTO is formerly of Next

    A/UX, Apple's unix, ran on M68030 Macs in 1989

    AIX, IBM's unix, ran on the PPC604 Newtork Servers in 1996

    MK/Linux, Apple's Mach/Linux hybrid, ran on PPC Macs in 1996

    MacOSX server has been going since 1999.

  12. local vs remote holes, overall quality by 47PHA60 · · Score: 4, Insightful

    Even OpenBSD has local root exploits, and they have been fixing them for years. A local exploit could be used to load a root program that listens on the network, so you fix it.

    I've seen lots of security advisories make fun of or insult the product and company in question. Big deal, a programmer skilled enough to find a buffer overflow makes fun of Steve Jobs' product. Mr. Jobs can afford a gold thread hanky to wipe his tears, but more likely it just rolls off their backs; people have been making fun of Apple for decades.

    In general, it is hard to program an OS, and once it is out there, easier to poke holes in it. That is why security is difficult. Fix the problem, review your code for similar problems, fix those, move on.

  13. Re:Didn't work for me either by Fulkkari · · Score: 3, Informative
    nor does it give any root privileges

    No. That command wasn't meant to give you root privileges; it was just a demonstration that there *is* a buffer overflow in this program. Makes me wonder why anyone hasn't noticed/told about this earlier. There is quite many set-uid and set-gid programs in OS X (I have 79), so maybe people have been lazy finding these things. This is hoply going to change some of that.

    To check your set-uid and set-gid programs, use:
    find / -perm +6000 -print

    Neither it writes a core dump file

    From man core:

    NOTE

    Core dumps are disabled by default under Darwin/Mac OS X. To re-enable core dumps, a privlaged user must edit /etc/hostconfig to contain the line:

    COREDUMPS=-YES-
    --
    I demand the Cone of Silence!
  14. Details: by Jesrad · · Score: 5, Informative

    The error lies in the cd9660.util_main.m file from the isoutil package, specifically, right in the start of the main function:

    if ( (myError = DoVerifyArgs( argc, argv, &mnt_flag )) != 0 )
    goto AllDone;

    /* Build our device name (full path), should end up with something like: */
    /* /dev/disk1s2 */
    strcpy( &myDeviceName[0], DEVICE_PREFIX );
    strcat( &myDeviceName[0], argv[2] );

    The strcat function fails with the huge devicename. DoVerifyArgs should check the length of argv[2] to be under 255 characters, but it only checks if it is longer than 2 characters:

    /* Make sure device (argv[2]) is something reasonable */
    myDeviceLength = strlen( argv[2] );
    if ( myDeviceLength < 2 )
    {
    goto ExitThisRoutine;
    }

    I'll make a quick fix and test it.

    --
    Maybe we deserve this world ?
    1. Re:Details: by Arkham · · Score: 4, Insightful

      And THIS parent post, ladies and gentleman, is EXACTLY why open source is good, and why Apple was VERY SMART to release its Darwin source code under an open-source license.

      Windows has a root exploit, and we are dependent on Microsoft to get around to fixing it. Thanks to Darwin, we can fix our own OSX bugs much of the time.

      --
      - Vincit qui patitur.
    2. Re:Details: by nickovs · · Score: 4, Interesting

      I have to say thank-you for finding that, although of course now you've wasted the afternoon I just spent building a shellcode to exploit the bug :-) (With a 520 byte argument the return address is at 479 bytes through the argument!)

      A couple of things are worth noting about this bug. Firstly, it appears that the utiliy gets run by some other setuid process so the program didn't need to be setuid in the first place (looking at the files /System/Library/Filesystems/*/*.util this is the only one that is setuid). This is fortunate because of the seond observation, which is that a cursory inspection reveals that other of these programs are also vulnerable (ufs.util needs a rather longer string but gives a segmentation fault with ufs.fs/ufs.util -p `perl -e "print 'A'x6750;"`).

      It might be useful if someone were to trawl through the other related utilities to see if there are any more unchecked string copies. I didn't find he source to all these utilities but the msdos_util seems to have some unchecked sprintf() calls. While these are probably not security critical because hopefully the root process that calls them can't be fooled into passing bad arguments it's still indicative of a lack of care in programming.

      --
      If intelligent life is too complex to evolve on its own, who designed God?
  15. Re:Look, pudge.. by MouseR · · Score: 4, Interesting

    Apple has no experience when it comes to the world of Unix security.

    Er... this Mac OS X that Apple has... including all of it's developers... actually are NeXT's OpenStep (and NeXTSTEP before that) and NeXT employees that built the thing in the first place. In the late 80s.

    Apple's got a pretty good idea of how Unix works.

    There have been exploits found in Apache before. That does not imply Apache developers don't have a clue about web servers.

    So, if an exploit has been found, it's only because it wasn't found before. There has been exploits for Linux, and I'm sure there will be more, like there will be more Mac OS X exploits to be found.

    It's how Apple and the Linux community handles found exploits that matters. And how MS doesn't. unfortunately.

  16. DONE by Jesrad · · Score: 4, Informative

    Get the fix with source code here, just double-click the install.sh script, it will make, copy and setuid the file at the correct location. Somebody please test and review this !

    --
    Maybe we deserve this world ?
  17. Why does it matter? by ITR81 · · Score: 2, Informative

    Apple will just post a fix for it in Jan. if they've been already told about it. They have new OS update coming this week so it could include a fix for this issue as well if it's an easy fix.

    1. Re:Why does it matter? by Jesrad · · Score: 3, Informative

      And Macbidouille has a fix NOW. Gotta love OpenSource ;)

      --
      Maybe we deserve this world ?
  18. Details of the fix by Jesrad · · Score: 4, Informative

    The change is in the DoVerifyArgs function, from:

    myDeviceLength = strlen( argv[2] );
    if ( myDeviceLength < 2 )
    {
    goto ExitThisRoutine;
    }

    to:

    myDeviceLength = strlen( argv[2] );
    // Added check for lengths of myDeviceName over 255 chars; 16/12/2003 Namu
    if (( myDeviceLength < 2 ) || (myDeviceLength > 255))
    {
    goto ExitThisRoutine;
    }

    The tar.gz archive is just the same as the one from OpenDarwin, except for the fix in the code and the install.sh shell script that makes the utility, installs it under sudo, setuid's it and then cleans.

    --
    Maybe we deserve this world ?
  19. Re:Exploitable! by Paradox · · Score: 4, Informative

    Well, Mac machines ARE slightly harder since their instructions are aligned. You need to hit the alignment and the offset.

    Is is different from the x86 variable-length world. There are 3 possible alignments.

    In this scenario, it doesn't matter though, since it's a non-service.

    --
    Slashdot. It's Not For Common Sense
  20. Does this work on a G5? by Paradox · · Score: 2, Interesting

    I had heard some suggestions that G5s didn't allow NOPs to overwrite their null bytes with random data. It seemed that the motorolla behavior for this was a bug to begin with, since those flags are reserved for future meaning, and as such the instruction is different if they are set.

    Does anyone know if these eggs fly on a G5? Here is a perfect chance to test! :)

    --
    Slashdot. It's Not For Common Sense
  21. Can you test it on a G5? by Paradox · · Score: 2, Interesting

    Hey,

    I do not have a G5, nor do I know anyone with a G5. So I cannot test this, but I've heard some of my security-friends (like the super friends, only ugly, fat, and obnoxious instead of ugly, healthy and obnoxious) that the G5's don't allow the NOP's with non-0 flags.

    This is probably the proper behavior. I'm convinced that Motorolla's acceptance of these facts was a bug, not a feature.

    Could you test it and find out? I'm really curious.

    --
    Slashdot. It's Not For Common Sense
  22. There's a buffer overflow even in the fix... by kirby81_it · · Score: 2, Informative

    argv[2] gets strcat-ted with DEVICE_PREFIX:

    DEVICE_PREFIX = "/dev/"
    strcpy( &myDeviceName[0], DEVICE_PREFIX );
    strcat( &myDeviceName[0], argv[2] );

    and myDeviceName is declared as a 0..255 array.

    So the right check should be:

    myDeviceLength > 250

    Even worse, there's the following code after the strcpy-strcat couple:

    strcpy( &myRawDeviceName[0], RAW_DEVICE_PREFIX );
    strcat( &myRawDeviceName[0], argv[2] );

    and
    RAW_DEVICE_PREFIX = "/dev/r"

    myDeviceLenght should not be more than 249 character long.

    So the right code should be:

    myDeviceLength = strlen( argv[2] );
    // Added check for lengths of myDeviceName over 255 chars; 16/12/2003 Namu
    if (( myDeviceLength < 2 ) || (myDeviceLength > 249))
    {
    goto ExitThisRoutine;
    }

    1. Re:There's a buffer overflow even in the fix... by dzerkel · · Score: 2, Insightful

      Actually, using strlcpy() and strlcat() in place of most strcpy() and strcat()s would go a long way to preventing buffer overflows from happening.

      Now, strlcpy() and strlcat() are relatively new, and may not have been available when this was written, but they are certainly available in Darwin now.

      Danny

      --
      "What's the point of going abroad, if you're just another tourist..."
    2. Re:There's a buffer overflow even in the fix... by Bimble · · Score: 4, Funny

      This is the first time I've seen Slashdot put to a practical use. Doesn't that violate the terms of service?

      --
      Naked.
  23. Re:Please explain by You're+All+Wrong · · Score: 5, Informative

    NUL is '\0' the byte valued 0.

    C uses '\0' to delimit strings. Therefore a strcat will not go past the first '\0' in the shellcode (or whatever exploit it is you're trying to run).

    So, if the code you want to run needs '\0's in it it must build those values on the fly. (e.g. subtract any value from itself and you instantly have a register loaded with 4 zeroes.) If you need opcodes that have 0 somewhere in them, then you need to self-modify, or you need to find a way to write what you want without using such opcodes. Most people go for the former.

    That's all there is to being NUL-less. It's easy on x86, but slightly more challenging on fixed-length opcode machines (RISCs and VLIWs). Similarly, avoiding just '\0' is pretty easy - the real skill is from avoiding anything but [a-zA-Z0-9] such that you can pass some input sanitisers. (See posts by Herbert Kleebauer on alt.lang.asm for examples of ascii-only executables (one was called 'beth.com' IIRC, google should find it).)

    To calculate the jump, just work out which of the 512 'A's are the 4 that you can see in the debugger stack trace. It's easiest to work this out by not having every character in the overflowing string being the same character. That's why I suggest 'abcdef...'
    If you now see the backtrace as containing 0x66676869 then you know it was one of your 'fghi's that you're now looking at. However you don't know which one yet, so try again with a different repeated string with a different length, and 'triangulate'. Or simply use a single probe with a string that doesn't repeat, such as "aaabacad....azbabbbcbd....bzcacbcccd..."
    Anyway, that tells you where in the string you need to put the address that you want to jump to. The next problem is working out what that address should be. This you can get from the debugger.

    Read Aleph One's "smashing the stack for fun and profit" for more info. Once you can do it on one architecture, you'll be equipped to do it pretty much on all of them.

    Have fun, but remember to practice safe hex.
    YAW.

    --
    Your head of state is a corrupt weasel, I hope you're happy.
  24. Found another flaw by Anonymous Coward · · Score: 4, Funny

    I found ANOTHER security flaw in OS X. It turns out that if I leave my password laying around, someone might actually pick it up and log on under my user name when I'm not around! The security folks at Apple are not doing their job.

  25. buffer overflow != exploit by aminorex · · Score: 2, Insightful

    A buffer overflow is a bug. While all
    exploitable defects allowing unauthorized
    priviledge escalation are bugs, not all bugs
    are defects which can be exploited to effect
    unauthorized priviledge escalation.

    --
    -I like my women like I like my tea: green-
  26. Re: timely patches? by Jesrad · · Score: 3, Interesting

    ...because there is no need for a patch. Just open Directory Access and uncheck a box. If you insist for running a patch you might be able to make the process into an AppleScript.

    Happy ?

    --
    Maybe we deserve this world ?
  27. Re:on top? by all+your+mwbassguy+a · · Score: 2, Interesting

    3rd in the desktop? behind windows and what?