Stories
Slash Boxes
Comments

News for nerds, stuff that matters

Slashdot Log In

Log In

Create Account  |  Retrieve Password

Linux Kernel 2.6 Local Root Exploit

Posted by kdawson on Sun Feb 10, 2008 03:23 PM
from the batten-the-hatches dept.
aquatix writes "This local root exploit (Debian, Ubuntu) seems to work everywhere I try it, as long as it's a Linux kernel version 2.6.17 to 2.6.24.1. If you don't trust your users (which you shouldn't), better compile a new kernel without vmsplice." Here is millw0rm's proof-of-concept code.
+ -
story

Related Stories

This discussion has been archived. No new comments can be posted.
The Fine Print: The following comments are owned by whoever posted them. We are not responsible for them in any way.
 Full
 Abbreviated
 Hidden
More
Loading... please wait.
  • Beauty of OSS (Score:5, Insightful)

    by bigtomrodney (993427) * on Sunday February 10 2008, @03:24PM (#22372452)
    I don't think I'm the first of us to say "Ah shit".

    On the other hand though this is the beauty of open source. The problem is now known so I'm sure a fix is already on the way.
    • Re:Beauty of OSS (Score:5, Interesting)

      by IBBoard (1128019) on Sunday February 10 2008, @03:33PM (#22372536) Homepage
      And even if it isn't on its way (and while it isn't here) you can still get the source and remove the problematic part if you don't need it. Try recompiling Flash or some other commercial software without the section that has the exploit in ;)

      .

      Note: The above assumes that the kernel compiles, which may not always go as smoothly or be as you'd like. That doesn't change the fact that it is theoretically possible, though.
    • Re:Beauty of OSS (Score:5, Insightful)

      by nacturation (646836) <nacturation@@@gmail...com> on Sunday February 10 2008, @03:41PM (#22372640) Journal

      On the other hand though this is the beauty of open source. The problem is now known so I'm sure a fix is already on the way.
      Of course, the problem may also have been known six months ago. Not that that differs from closed source, but I don't see the openness of the code as a particular benefit in this case. The real benefit seems to be that when someone releases something as open source and they put their name on it, they're more inclined to be responsive to problems and provide quick fixes than when it's just some company's product and the developer's reputation is shielded by the company.
       
    • Re:Beauty of OSS (Score:5, Informative)

      by fuzzix (700457) <fuzzbucket@eircom.net> on Sunday February 10 2008, @03:50PM (#22372742) Homepage Journal

      On the other hand though this is the beauty of open source. The problem is now known so I'm sure a fix is already on the way.

      Or already here...
      This appeared to work... [gmane.org]
    • Re:Beauty of OSS (Score:5, Informative)

      by Anonymous Coward on Sunday February 10 2008, @03:55PM (#22372790)

      The problem is now known so I'm sure a fix is already on the way.
      Holy shit, no kidding - the form of an exploit which fixes the bug live in the kernel mem.
      nobody$ ./exploit
      [..]
      [+] mmap: 0xb7f29000 .. 0xb7f5b000
      [+] root
      root# ^D

      nobody$ ./disable-vmsplice-if-exploitable
      [..]
      Exploit gone!
      nobody$ ./exploit
      [+] mmap: 0xb7f34000 .. 0xb7f66000
      [-] vmsplice
      nobody$ no root for me anymore!


      By Morten Hustveit:
      "a modification of the exploit that finds the address of sys_vmsplice in the
      kernel (using /proc/kallsyms) and replaces the first byte with a RET instruction
      (using mmap of /dev/kmem)" from
      http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=464953#14 [debian.org]

    • by caluml (551744) <slashdot&spamgoeshere,calum,org> on Sunday February 10 2008, @05:16PM (#22373502) Homepage

      I don't think I'm the first of us to say "Ah shit".
      No, you are, you really are! Google confirms it!

      Your search - "Ah shit" - did not match any documents.
        • by LizardKing (5245) on Sunday February 10 2008, @07:24PM (#22374564) Homepage

          However, bricks = shat.

          Come on now, that simply assigns shat to bricks (and that's some nasty use of the comma operator to separate statements). I think you meant:

          while (exploitable) {
          Bricks *bricks = malloc(sizeof(Bricks));
          shit(bricks);
          sleep(1);
          }

          Note that we don't have to dispose of the bricks we shit, as that's taken care of elsewhere. And of course, if we all still wrote VAX assembler we would be able to optimise this by using the SHTBRCKS instruction.

      • Re:Beauty of OSS (Score:5, Informative)

        by Dan Farina (711066) on Monday February 11 2008, @01:22AM (#22376592)
        > The security linux enjoys is because it is 1% market share, so bad guys don't care about it.

        This is probably true when it comes to malware targeting grandma, (note: you don't need a root exploit to do plenty of bad things, like install a keylogger on a user's session; IMO things like browsers should one day be relegated to another user as well) but you don't you think that people would be interested in breaking sendmail or BIND and the overwhelmingly UNIX (and increasingly GNU/Linux) systems that they run on? (They have in the past, many times in fact...)

        I think this position understates the incentives to attack Linux, because, quite frankly, virtually everything actually important infrastructure-wise runs on a UNIX-alike nowadays (VMS holdouts withstanding), and now it seems clear that with the possible exception of Solaris that all UNIX-alikes except Linux are in their death throes.

        > There are flaws in both open source and closed code, but I would say that closed code is better for security.

        I disagree. With closed source there is substantially less research and review that goes on. Important security bugs that are thought to not be "in the wild" can be swept under the rug indefinitely because they don't jive with business goals of the owning company. In the case of open source development any agent with an axe to grind (and oftentimes clients to reassure) can make it their priority to get the damn thing fixed.

        I think an axiom people have when they hold security-by-obscurity as a credible advantage is a defeatist regarding the nature of bugs: one *can* write a nearly-correct code; see qmail, TeX, dovecot, djbdns, and OpenSSL. It just takes time, effort, and sound engineering (which may include the limitation of scope, something that is hard to do in product-oriented firms). Linux 2.4 may be reaching this point; that's probably why NASA is considering deploying it on things that are actually important.
  • by downix (84795) on Sunday February 10 2008, @03:25PM (#22372460) Homepage
    And the next sound you shall hear are millions of nerds rushing into their offices to compile a new kernel on a sunday afternoon... along with the millions of cell phones ringing as the bosses read this...
  • by Anonymous Coward on Sunday February 10 2008, @03:26PM (#22372480)
    I strongly suspect this code doesn't do what it says on the tin.
  • Thank God (Score:5, Funny)

    by Zoxed (676559) on Sunday February 10 2008, @03:29PM (#22372504) Homepage
    Phew, lucky I run MS Windows then !!
    • by Anonymous Coward on Sunday February 10 2008, @03:35PM (#22372566)
      That's like finding out there's a new 24-hour flu going around, and thanking God the AIDS will kill you first.
    • by monkeySauce (562927) on Sunday February 10 2008, @03:39PM (#22372604) Journal

      Phew, lucky I run MS Windows then !!

      I know what you mean. It's nice not having to freak out periodically like this since you live in a constant state of panic anyway.
  • by ZorbaTHut (126196) on Sunday February 10 2008, @03:32PM (#22372522) Homepage
    "But see, Linux sucks! It has holes just like Windows does!"

    The difference is that we know about this hole, and can now fix it - I'm just going to bed, and it will no doubt be fixed by the time I wake up. How many Windows security issues are known that haven't been fixed?

    "Oh man, this is why Linux is great! We can find holes, and fix them, like, immediately!"

    Yes, that's a strength of Linux. What I want to know is, what steps will be taken to ensure that bugs of this type - whatever they might be - don't crop up again? One advantage that a large paid organization can have is strict testing requirements - I'm honestly not sure if I believe the Linux kernel is held to the strong standards that a commercial kernel theoretically could be.

    The existence of this bug is a failure on Linux's part. There's no way to get around that. Many mistakes were made, from the original code or design decision that caused this bug all the way up to it not being found until now. The bug will be fixed rapidly - but the process that let this bug be released needs to be looked at, casually at the very least, to figure out if there's a way to stop this class of error from ever happening again. (Whatever class of error it ends up being - I don't pretend to know.)
    • by RonnyJ (651856) on Sunday February 10 2008, @03:42PM (#22372662)

      The difference is that we know about this hole, and can now fix it
      We know about it now, but how long have some other people known about it? There's this quote from the code:

      This is quite old code and I had to rewrite it to even compile.

      • Yeah, this is an example of one of the millions of Linux kernel holes there are out there. Every now and then, a blackhat gets a job and wants to impress his employer so he pulls out some of his old code and polishes it up. You can tell when it happens because they are so childish that they make the exploit trivial to demonstrate and distribute it far and wide. And you just know that every blackhat who had a variant of this exploit in their personal collection are like "well thanks asshole, now I've got one less Linux kernel exploit.. bastard."
  • by the_humeister (922869) on Sunday February 10 2008, @03:44PM (#22372684)
    The proof-of-concept code only supports x86 and x86_64. Does that mean other architectures are immune?
  • Funny comments :) (Score:5, Informative)

    by K. S. Kyosuke (729550) on Sunday February 10 2008, @03:49PM (#22372734)
    There are some pretty funny comments in the source code, regrettably, most people won't understand them. Hell, as a Czech, I *am* probably supposed to understand them, if it were not for the obscure north-eastern dialect of Czech that all the rest of our country finds hilarious (and incomprehensible at the same time).

    "Dovalim z knajpy a cumim ze Wojta zas nema co robit, kura." == something like "Just returned from the pub and saw that Wojta [a machine? Or a person? Unclear...] has nothing to do." [The last word might be a Czech expletive with a typo...?]
    "Gizdi, tutaj mate cosyk na hrani, kym aj totok vykeca." == something like "Here's something for you to play with, boys, ..." [last for four words utterly incomprehensible :)]
    "Stejnak je to stare jak cyp a aj jakesyk rozbite." == "Anyway, it's old as hell and somehow broken anyway"

    The style (no way am I able to render *this* in English :)) makes me think that had drunk quite a bit before he wrote these gems. Pity that I don't have a good dictionary of spicy English. I'm just rolling on the floor and seriously laughing. :) Oh, and the exploit works, which is not that *funny*.
  • by FliesLikeABrick (943848) <ryan@u13.net> on Sunday February 10 2008, @03:51PM (#22372754)
    http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=464953 [debian.org]

    The workaround posted in a follow-up in that thread works. I had a few vulnerable (tested) machines that I cannot reboot even if a patched kernel is released in the near future. I tried that fix, then tried the exploit again. The exploit no longer worked after using the fix (workaround).

    Those machines were debian x64.

    Ubuntu kernels do not appear to have vmsplice enabled by default.
  • by iamamoose (243231) on Sunday February 10 2008, @03:59PM (#22372830) Homepage
    Upstream patch for the vulnerability tickled by that specific exploit is here
    http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commitdiff;h=712a30e63c8066ed84385b12edbfb804f49cbc44 [kernel.org]

    Red Hat tracking bug (Enterprise Linux 5 is affected, but 4,3, and 2.1 are not)
    https://bugzilla.redhat.com/show_bug.cgi?id=432251 [redhat.com]

    Fedora tracking bug
    https://bugzilla.redhat.com/show_bug.cgi?id=432229 [redhat.com]
  • SELinux? (Score:4, Informative)

    by Rob Riggs (6418) on Sunday February 10 2008, @04:28PM (#22373084) Homepage Journal
    Well, I can tell you that SELinux (enforcing, targeted) on Fedora 8 was no help in preventing this exploit. Does "strict" make a difference?
  • by bcrowell (177657) on Sunday February 10 2008, @04:54PM (#22373338) Homepage

    It seems to me that slashdot's system for filtering submissions is doing a very poor job these days with stories about security bugs.

    Within the last day or two, we've had the following:

    1. Adobe PDF Exploits In the Wild [slashdot.org] - IMO this was not sufficiently well thought out to be useful. There has been a long series of problems with AR related to the fact that it allows javascript in pdf files to be executed, and that leads both to privacy problems (authors can track readers) and security problems (buffer overflows). But the article didn't specify whether it was such a problem. If it is such a problem, then the correct solution is to disable js in AR. In fact I'd already done that in AR 7, but if I'd blindly followed the advice from the article, here's what would have happened. I would have just upgraded to AR 8 and assumed the problem was fixed. But upgrading to AR 8 reenabled js, so in fact I'd be less secure than I'd been before.
    2. Serious Vulnerability In Firefox 2.0.0.12 [slashdot.org] -- Turns out to be FUD.
    3. OpenBSD Will Not Fix PRNG Weakness [slashdot.org] -- Possibly of interest to openbsd users, but basically what seems to be happening here is that each BSD's maintainers are making their own judgments about how serious the problem is, and the seriousness of the problem is a complicated and controversial question.
    4. Linux Kernel 2.6 Local Root Exploit [slashdot.org] -- The summary makes it sound as though this affects Ubuntu, but later on we get this post [slashdot.org] pointing out that it doesn't affect a default install of Ubuntu.

    This is really getting to be a Boy Who Cried Wolf thing.

  • by Toreo asesino (951231) on Monday February 11 2008, @03:34AM (#22377064) Journal
    ...I have a question for you. I 100% agree this is an advantage of open-source than closed-source software will never have, ever. You've got me on that one, but my immediate thought was "ok, how much would I like to change my own kernel in production systems? About 0% thank-you-very-much".

    I mean, hacking stuff in and out of a production system kernel; surely that's a process that would require months of intensive regression testing, etc, etc? I mean, I doubt there are people that know the kernel well enough to do such changes for their own systems, but really, what percentage of you guys honestly and confidently can say "Yeah, let me just fix that for us" knowing your job is on the line if your systems crash around you.

    This isn't a troll, this is an honest question.
    • Re:Misleading (Score:5, Informative)

      by shadow42 (996367) on Sunday February 10 2008, @03:36PM (#22372584)
      I just successfully used this exploit on a Fedora 7 box running 2.6.22.4. A bit out of date, yes, but a great deal of "home users" who are running Fedora, Debian, Ubuntu (especially Ubuntu), etc., either don't know how to compile their own kernel, or don't care enough to try. Not everyone who uses Linux is going to bother compiling a custom kernel in order to fix a problem like this, especially if they don't have the skills of a sysadmin.
      • Re:Misleading (Score:5, Insightful)

        by Anonymous Coward on Sunday February 10 2008, @03:43PM (#22372674)
        The average home user that's not willing to put in the effort to compile a new kernel is the home user that doesn't have anyone but either themselves, or people with physical access to the machine using it.

        If the only people that have accounts on the machine have physical access to it, this exploit is a lot more work than just opening the box...
      • Re:Misleading (Score:5, Insightful)

        by kitgerrits (1034262) on Sunday February 10 2008, @04:14PM (#22372962)

        You know, I haven't built my own kernel since 'make menuconfig' was the most advanced method around.
        I got rather tired of picking and choosing what I need, just to get faster boot times.

        That, and any time you need (professional) support for a third-party application, the first thing they ask you is wether you are running a stock kernel.
        I -want- to be able to tell MySQL and RedHat to fight it out amongst themselves if my database does not live up to expectations.
        I have better things to do with my time than to set-up and analyse endless system profiles, straces and stack dumps.

        Grow up, get a real job and see what the real world is like.
        You'll find that you no longer have the time to check SANS and packetstorm every day, just to see if your system is secure, spend days just to get that library to compile and then see the entire system go out the window, because it cannot be maintained (because you have be re-assigned to another project).
        • Re:Misleading (Score:5, Insightful)

          by Penguinisto (415985) on Sunday February 10 2008, @06:30PM (#22374186) Journal

          You'll find that you no longer have the time to check SANS and packetstorm every day

          Dunno about you, but it's my job to (among other things) keep abreast of emerging security issues, then decide on their severity and priority. A quickie scan of SANS ISC is just as much a morning habit to me as log reviews and sucking down the morning caffeinated liquid.

          Shit, man... a sysadmin who doesn't check at least some source of leading-edge security news daily is IMHO either incompetent or lazy, and tend to be the ones who look really stupid once they get blindsided by a compromise.

          I'd much rather be chided for pushing something off by a few minutes, than to have to explain to my boss and his peers why I didn't know about XYZ exploit, and more importantly, why I didn't do anything to prevent it from chowing down on the production servers...

          (and no, I don't run Gentoo, and I avoid recompiling any kernel unless absolutely necessary).

          /P

    • Re:Misleading (Score:5, Insightful)

      by Unoti (731964) on Sunday February 10 2008, @03:41PM (#22372636) Journal

      Yet another good example of why you shouldn't hire the sysadmins who blindly use what the vendors ship
      I suppose. But honestly, not everybody really needs a sysadmin that's going to diddle around for weeks and compile kernels just to set up a mail server and samba, for example. For most things, I'd rather have someone who just gets the work done rather than goofing off compiling kernels, installing ReiserFS and doing god knows what else other than things that really matter. Sure, there's a place for all that, but honestly most environments don't require it.
    • by fo0bar (261207) on Sunday February 10 2008, @03:42PM (#22372666)

      This is not an universal problem. It only occurs for those kernels with a specific function compiled in that most installations won't need, and which halfway decent sysadmins won't have as part of the kernel anyhow when they don't need it.

      Yet another good example of why you shouldn't hire the sysadmins who blindly use what the vendors ship, but security and performance minded sysadmins who reduce installations to what's actually needed.

      Which reminds me, have you done your emerge -abuop6QvvvvVVvVVxz world yet today?
    • Re:Misleading (Score:5, Insightful)

      by Kjella (173770) on Sunday February 10 2008, @03:57PM (#22372816) Homepage
      You've got to be kidding me right? Like every sysadmin out there is supposed to know about every feature he doesn't use? Most of the time if you compile out something you'll end up breaking something you do want because you don't understand the internal kernel dependencies or what this really means in terms of functionality. Don't forget I now expect you on duty 24/7 to compile new kernels whenever there's a kernel patch available, particularly when you're sick and or vacation and whoever is filling in for you only knows apt-get/yum/whatever. Anyone that spent that much time on managing a Linux server would probably be fired because he'd be less efficient than a Windows server and an MSCE.
    • by BasharTeg (71923) on Sunday February 10 2008, @05:18PM (#22373522) Homepage
      Quick, cue the Linux apologists! Damage control! Spin it! Only noobs and bad administrators would be affected!
    • Re:Misleading (Score:4, Insightful)

      by Actually, I do RTFA (1058596) on Sunday February 10 2008, @05:34PM (#22373646)

      This is not an universal problem. It only occurs for those kernels with a specific function compiled in that most installations won't need, and which halfway decent sysadmins won't have as part of the kernel anyhow when they don't need it.

      Yet another good example of why you shouldn't hire the sysadmins who blindly use what the vendors ship, but security and performance minded sysadmins who reduce installations to what's actually needed.

      Suppose there is a bug in Windows (stretch your imagination to include that possibility) that is part of one of the unpopular services on by default. No one on /. would excuse it because the user (or their sysadmin) should have disabled that service.

      Also, options should never, as a principle, cause security holes.

    • This is incorrect (Score:5, Informative)

      by bconway (63464) on Sunday February 10 2008, @05:52PM (#22373834) Homepage
      Vmsplice is part of the core kernel, it is not a configuration option. It is used all over the place.

      • Re:Misleading (Score:5, Insightful)

        by Tony Hoyle (11698) <tmh@nodomain.org> on Sunday February 10 2008, @04:32PM (#22373120) Homepage
        PHBs aren't stupid (err.. did I just write that??). They understand that crap happens. They're not on your back because it happened, they want to know what you're going to *do* about it.

        So the right answer is not 'It's not really a problem, honest!' The right answer is 'Yes, I fixed the problem on all our servers first thing this morning, with no downtime.'
          • Re:Whatever... (Score:5, Insightful)

            by Tony Hoyle (11698) <tmh@nodomain.org> on Sunday February 10 2008, @04:57PM (#22373356) Homepage
            I get the impression the 'custom kernel' brigade have never worked on a corporate environment.

            Out there in the real world you use RHEL because it has paid support. You then use hardware certified by Redhat and use their packages (btw. RHEL doesn't appear to be vulnerable - you get an mmap failure trying to run the exploit).

            If your oracle server goes titsup and oracle refuse to support you because although you're running on the supported RHEL your cowboy IT guy recompiled the kernel and broke it.. that costs money (potentially millions if the downtime is extended). And time. And stress. And the IT guy's job, and his job reference, and, we would hope, his career.

    • by McDutchie (151611) on Sunday February 10 2008, @03:39PM (#22372614) Homepage
      Nope, all you need is remote access to a local user account via ssh or something. Many users use weak passwords. Now you won't have to guess the root password.

      Yes, I just verified the exploit on Linux 2.6.17.13 (Slackware 11.0) and Linux 2.6.21.5 (Slackware 12.0) and it works as advertised.
    • by tabrisnet (722816) on Sunday February 10 2008, @03:44PM (#22372694)
      Inaccurate. It does require shell access, but it does not require it to be physically local.

      A 'local root exploit' only means that you have to have a shell of some kind first. This can include an SSH shell account. This can also include any kind of non-root shell exploit.

      Say that you can exploit some webapp to get a shell as wwwrun/apache/www. That combined with a local root exploit to get root. It doesn't even need to be a DIRECT shell exploit. Perhaps your hack/program opens up a port with telnet listening.

      Thus all 'local root exploits' are potential remote exploits, if we allow for chaining. Chaining can be used by anyone who isn't just a script kiddie. Hell, you could probably make an auto-rooter that will chain the exploits.
      • by SwashbucklingCowboy (727629) on Sunday February 10 2008, @04:26PM (#22373064)

        For example - when it's gonna have a real filesystem with name/file (or inode if you like) separation?

        NTFS has had that for a while now.

        Or ulimits? Will Windows ever have those? How do you even run any real server without ulimits?

        Suggest you check out Windows System Resource Manager

        The real problem here seems to be not Windows, but your ignorance about Windows.

    • Re:But... (Score:4, Interesting)

      by Mr. Roadkill (731328) on Sunday February 10 2008, @06:41PM (#22374260)

      I, for one, trust myself and am the sole user of my heavily-password-protected computer. Looks like I'm fine, and it sounds like the easiest solution in a private setting to me.
      Indeed, it's only exploitable if someone can get at it. If you don't offer any services whatsoever to the outside world, then you should be okay.

      The problem is, even though you're the sole user, that if other exploits appear they could piggyback this to escalate from, say, access as www-user to access as root. Got any http services on that box for your own convenience, and any of those use PHP? Based on past experiences, this might hose you. Got SSH on there? Again, based on past experiences, this might hose you. Sendmail and some kind of mailscanning? Again, this might hose you.

      It's not just a matter of whether or not you trust your users - it's also a matter of whether or not you trust anyone who attempts to exploit some other service your box offers to not try for root access once they get in. "Please, Mr Blackhat, you've gained access to my box, but please don't elevate that to root!" sounds more than a little naieve, and even a little stupid, but that's exactly what people who leave a whole lot of locally exploitable vulnerabilities on their boxes are saying. By not leaving this kind of thing laying around, you are making it a little bit more difficult for anyone who does manage to gain access to your box to gain full access to it.

      Security is all about healthy paranoia, and a belt AND braces AND duct tape approach can pay dividends.

      Am I personally worried about this? On my work machine and servers I administer, hell yeah - always on, always connected, running various things that in the past have had vulnerabilities - of course I am, I'd be stupid not to be. At home (dial-up, behind a firewall with NAT, nothing much in the way of services, turned off most of the time even though I don't usually bother turning off my WEP-protected wireless access point), not so much - and not just because the only accounts are held by me. I don't broadcast the SSID, I have a couple of neighbors with no security on their broadband-connected wireless access points, and I don't run an awful lot in the way of remote services when I do have my home machines running. If I had broadband at home and a machine that was running anything that was remotely accessible, or if I didn't have a vertiable smorgasbord of less security-conscious neighbours - I'd fix this at home in a heartbeat.