Slashdot Mirror


Secretly Monopolizing the CPU Without Being Root

An anonymous reader writes "This year's Usenix security symposium includes a paper that implements a "cheat" utility, which allows any non-privileged user to run his/her program, e.g., like so 'cheat 99% program' thereby insuring that the programs would get 99% of the CPU cycles, regardless of the presence of any other applications in the system, and in some cases (like Linux), in a way that keeps the program invisible from CPU monitoring tools (like 'top'). The utility exclusively uses standard interfaces and can be trivially implemented by any beginner non-privileged programmer. Recent efforts to improve the support for multimedia applications make systems more susceptible to the attack. All prevalent operating systems but Mac OS X are vulnerable, though by this kerneltrap story, it appears that the new CFS Linux scheduler attempts to address the problem that were raised by the paper."

56 of 250 comments (clear)

  1. A Useful Tool by Bios_Hakr · · Score: 4, Funny

    I run several websites off of a single host. If I need to login to do maintenance during peak hours, I'm slowed by Apache and MySQL. This would be a nice utility if it were wrapped into SUDO.

    --
    I'd rather you do it wrong, than for me to have to do it at all.
    1. Re:A Useful Tool by CastrTroy · · Score: 3, Informative

      you could always renice apache and mysql down to a lower priority. Possibly in a log-on/log-off script which would change the priorities and then reset them when you log out.

      --

      Anthropic principle: We see the universe the way it is because if it were different we would not be here to see it.
    2. Re:A Useful Tool by lecithin · · Score: 4, Funny

      alias renice 'echo Renice\? You must mean kill -9.; kill -9 \!*'

      --
      It could be worse, it could be Monday.
    3. Re:A Useful Tool by cichlid · · Score: 4, Insightful

      "you could always renice apache and mysql down to a lower priority. Possibly in a log-on/log-off script which would change the priorities and then reset them when you log out."

      Much easier to just renice your root shell automatically at login

    4. Re:A Useful Tool by oglueck · · Score: 2, Insightful

      Still thread creation can kill you. Renicing a fork bomb won't give you more cycles for your shell.

  2. Google-cache article by Anonymous Coward · · Score: 3, Informative

    For those harboring poisonous grudges against PDFs, the Googlerised HTML version is here.

    1. Re:Google-cache article by brunascle · · Score: 5, Informative

      and for those who dont have the time to read the paper...

      it works by avoiding running during the exact moment of a clock tick (which would be the moment when CPU usage per-process is checked). to start running immediately after a clock tick is (apparently) easy, but to stop before the next tick is harder. the paper suggests using some kind of get_cycles assembly instruction to count how many CPU cycles there are per clock tick, and use that number to gauge when the next clock tick is going to occur by counting how many CPU cycles have elapsed.

    2. Re:Google-cache article by TheVelvetFlamebait · · Score: 3, Insightful

      For those harboring poisonous grudges against PDFs...
      Speaking of userland processes using 99% cpu...
      --
      You know, there is a difference between trolling and pointing out the flaws in your reasoning. Just saying.
    3. Re:Google-cache article by Bobb+Sledd · · Score: 4, Funny

      and for those who dont have the time to read the paper...

      it works by avoiding running during the exact moment of a clock tick (which would be the moment when CPU usage...


      --Uhm... (looks at watch...) Say, I really don't have time for wordy summaries... could you maybe cut this down into about 10 words or less? Hurry it up! I ain't got all day!

      --
      "They said I probly shouldn't fly with just one eye," "I am Bender. Please insert girder."
    4. Re:Google-cache article by Anonymous Coward · · Score: 2, Insightful

      Kind of like Alt-Tabbing off Slashdot when the PHB strolls by?

    5. Re:Google-cache article by brunascle · · Score: 5, Funny

      it run when OS not looking

  3. gnome by dattaway · · Score: 2, Funny

    The gnome desktop for years has been hiding processes that h0rk the cpu.

  4. What the?! by Rik+Sweeney · · Score: 4, Funny

    Using up 99% of the CPU's easy!

    #include

    int main(int argc, char *argv[])
    {
          while (1) {}

          return 0;
    }

    1. Re:What the?! by AKAImBatman · · Score: 2, Informative

      This is a bit different. It's a way to convince the OS to give you more time slices than you'd normally be allocated. e.g. If you ran that program of yours twice at the same priority level, both instances should get ~50% of the CPU time. If one of the instances implemented this privilege boosting scheme however, it would get to hog all the CPU time while your other spinlocked program starved.

    2. Re:What the?! by MajinBlayze · · Score: 2, Insightful

      or, just

      $ :(){ :|:& };:

      But that really isn't the point here. This lets your run any arbitrary program, using max resources, (despite scheduling), AND hide the fact that the process is using *any* resources

      --
      "Hate is baggage. Life's too short to be pissed off all the time." Danny Vinyard -American History X
    3. Re:What the?! by Random832 · · Score: 2, Informative

      "fork while fork" won't have the exponential effect, since fork returns 0 (false) in the child process, terminating the loop and causing growth to only be linear. You'd need fork while true.

      --
      We've secretly replaced Slashdot with new Folgers Crystals - let's see if it notices.
    4. Re:What the?! by francium+de+neobie · · Score: 2, Insightful

      This would render the machine unusable.. until about a year back, when something changed - which leads me to suspect that the kernel has had protection against this sort of thing for a while now.
      I guess they just put on a nproc limit on each user. It's just a trivial security measure against simple fork bombs. Assuming your Linux system uses PAM (most modern distros do), take a look at /etc/security/limits.conf.
    5. Re:What the?! by MajinBlayze · · Score: 2, Interesting

      Yeah, it surprised me too when I ran it for the first time. it is easy enough to fix (can't remember right now, but i recall something about a "limits" file) but should hint that that default is set too high.

      --
      "Hate is baggage. Life's too short to be pissed off all the time." Danny Vinyard -American History X
  5. Old news by Edward+Kmett · · Score: 3, Informative

    Not quite sure what justifies a paper out of this.

    If you check the linux kernel mailing list for Vassili Karpov, you should find test cases that demonstrate this behavior and tools for monitoring actual CPU usage for a variety of platforms, though I notice no mention of any of that in the paper.

    See http://www.boblycat.org/~malc/apc/ for the tool and 'invisible CPU hog' test case.

    --
    Sanity is a sandbox. I prefer the swings.
    1. Re:Old news by Anonymous Coward · · Score: 5, Informative

      Publishing papers takes a lot of time, as anybody who ever done it would know... For example, the post you mention is from Feb 2007. By then, according to the usenix-security call for papers, the paper has already been submitted. Also, google-ing "cheat" around revealed this technical report: http://leibniz.cs.huji.ac.il/anon?View=1&num=1&pid %5B1%5D=870&abstract=1 (seems the initial version of the paper) which is dated May 2006.

  6. ok by nomadic · · Score: 3, Interesting

    Back in my day we called it renice.







    Yes, I'm kidding. Please don't post a long reply explaining how renice differs from this cheat thing. It isn't necessary.

  7. Re:What does this mean? by pauljlucas · · Score: 5, Informative

    What?! I'm really not sure what's being said here. I understand the idea behind this, but the wording of the Slashdot piece is difficult to penetrate, even by Slashdot standards.
    I hard a hard time reading it as well, but then I saw it (kind of like when you suddenly "see" the picture in a stereogram). Proper punctuation, whitespace, formatting, and font changes help a lot. It should have been:

    .. allows any non-privileged user to run his/her program, like so:

    cheat 99% program

    thereby insuring ...

    where cheat is the name of the compiled utility that lets you "cheat", 99% is an argument to cheat, and program is the name of some other program that you want to run at 99% of the CPU. I.e., the command line syntax resembles renice.
    --
    If you reply, do so only to what I explicitly wrote. If I didn't write it, don't assume or infer it.
  8. Re:So, is vista security good enough.... by dbIII · · Score: 2, Interesting

    Once windows is equal or better than *nix in terms of security

    That isn't likely to happen without a change in attitude due to both starting furthur behind and progressing more slowly. The current malware situation looks like bad SF and a morality tale of what happens when you allow really stupid things to happen (eg. letting arbitrary code embedded in images run - hopefully that person was dismissed from Microsoft).

  9. Re:What does this mean? by Da+Fokka · · Score: 5, Funny

    If you reply, do so only to what I explicitly wrote. If I didn't write it, don't assume or infer it.


    You gun-toting marxist redneck zealot astroturfers make me sick!

  10. Talk about a fair share scheduler ! by ivan_w · · Score: 5, Insightful

    I wasn't aware the schedulers for those systems were so deficient !

    In my days (yes, I'm an old fart) - the schedulers had basic principles :

    - Voluntary yielding led you to get accounted for the time you spent running.
    - You could stay in the interactive queue for only a certain amount of time. After some amount of time had passed (a few secs) you were either bumped to non-interactive if you were running (with longer time slices but lower priority) or removed off the scheduler list for good (if the time spent there was idling). They had a special 'idle but interactive' (not eligible for dispatching) queue for that.
    - Scheduling a new task restarted a new time slice

    That particular scheduler even had a 3 queue system so that if you got accidentally bumped into the non-interactive queue or if your process was semi-interactive you had a better chance of gaining interactive status again. And they had a 'really' not interactive queue for those CPU hogging processes.

    Of course this requires the hardware to have a precise timing feature (something with a granularity that is finer than the process interleaving time slice time and ideally in the magnitude of instruction execution). And this scheduler wasn't using time sampling and time quantums.. (but something more like the OSX timer on demand paradigm).

    --Ivan

    1. Re:Talk about a fair share scheduler ! by ivan_w · · Score: 3, Interesting

      Some instances of IBM's VM.. (VM/HPO, VM/ESA and z/VM.. VM/370 and VM/SP had a more simplified version with only 2 queues).

      --Ivan

  11. Re:What does this mean? by SatanicPuppy · · Score: 4, Insightful

    I don't know. I think retractions would screw with everything else. If you make a boneheaded statement (and I've done it more than once myself), it should stand. Otherwise, everyone who responds to correct your misstatement will look insane, and it'd be hard to metamod, because the comments wouldn't necessarily fit the context anymore, etc.

    --
    ad logicam Claiming a proposition is false because it was presented as the conclusion of a fallacious argument.
  12. How It Works by Shimmer · · Score: 5, Informative
    The cheat program hogs the CPU by using it when the host OS isn't looking. As a result, it avoids the scrutiny of the OS's scheduler and is actually given a priority boost by some schedulers because of its good behavior.

    This is accomplished by sleeping for a fixed amount in between OS clock ticks. The timeline looks like this:
    1. Hardware is set to generate a "tick" event every N milliseconds.
    2. Tick event occurs, which is handled by the OS.
    3. OS notes which process is current running on the CPU and bills it for this tick.
    4. OS wakes up cheating process, which is currently sleeping, and allows it to run.
    5. Cheating process runs for M (< N) milliseconds, then requests to go to sleep for 0 milliseconds. This causes the cheating process to sleep until just after the next tick.
    6. Repeat from step 2 above.
    --
    The most rabid believers in American Exceptionalism are the exact same people whose policies are destroying it.
    1. Re:How It Works by Anonymous Coward · · Score: 2, Funny

      Like in Superman 3.

  13. Back at NYIT we hacked the "nice" command... by Thagg · · Score: 2, Funny

    We had a user who insisted on abusing the "nice" command, to run his jobs at a higher priority. Pleading and cajoling didn't work, so we decided to get creative.

    We changed nice so that whenever this particular user ran it, it lowered his priority by exactly as much as he was attempting to raise it.

    He stopped coming to work soon after that. I suppose he had the last laugh though -- NYIT continued to pay him for another six months.

    Thad

    --
    I love Mondays. On a Monday, anything is possible.
  14. Re:What does this mean? by networkBoy · · Score: 5, Interesting

    Why not leave the post but allow a "retracted" tickbox? Thus at least the owner of the comment can effectively say "I was wrong, boneheaded, whatever" without having to post another comment and wait two minutes to do it? and all that shows up it a one-liner under the comment:
    This comment has been retracted by its poster

    -nB

    --
    whois gawk date unzip strip find touch finger mount join nice man top fsck grep eject more yes exit umount sleep dump
  15. Linux 2.6.21 is probably immune too by Wyzard · · Score: 5, Informative

    According to the paper, the reason Mac OS X is not vulnerable is that it uses one-shot timers scheduled for exactly when the next event needs to occur, rather than periodic "ticks" with a fixed interval between them. The "tickless idle" feature introduced in Linux 2.6.21 (currently only on x86, I believe) takes the same approach, and very possibly makes Linux immune too.

    (Ironically, immediately after discussing OSX's ticklessness, the paper mentions that "the Linux 2.6.16 kernel source tree contains 8,997 occurrences of the tick frequency HZ macro, spanning 3,199 files", to illustrate how difficult it is to take a tick-based kernel and make it tickless. But those kernel hackers went and did it anyway.)

    The tickless feature isn't yet implemented on all architectures that Linux supports, though. I think AMD64 support for it is supposed to come in 2.6.23, along with the new CFS scheduler.

  16. Re:Sounds great in some respects. by cnettel · · Score: 2, Informative

    It works by sleeping at the right point in time. You really hack up the timeslices and decrease the overall efficiency (more context switches), so it's only good if you want to steal cycles where you are not really allowed to.

  17. Re:What does this mean? by SatanicPuppy · · Score: 4, Insightful

    That'd be fine, or even cool. It'd deflect the inevitable storm of 500 people saying, "Wrong n00b!" and not reading down far enough to see that you admitted it already, and let the whole discussion move on to more productive things.

    --
    ad logicam Claiming a proposition is false because it was presented as the conclusion of a fallacious argument.
  18. Fixed recently in Linux by iabervon · · Score: 4, Informative

    They took too long to publish this. Linux 2.6.21 (released in April) added support for using one-shot timers instead of a periodic tick, so it avoids the problem like OS X does. In addition to resolving this issue, tickless is important for saving power (because the processor can stay in a low-power state for long enough to get substantial benefits compared to the power cost of starting and stopping) and for virtual hosting (where the combined load of the guest OS scheduler ticks is significant on a system with a large number of idle guests). As a side effect, while the accounting didn't change at that point, the pattern a task has to use to fool the accounting became impossible to guess.

    The CFS additionally removes the interactivity boost in favor of giving interactive tasks no extra time but rather just quick access to their available time, which is what they really benefit from.

  19. Inevitable reply by lilomar · · Score: 4, Funny

    My mother is a gun-toting marxist redneck zealot astroturfer, you insensitive clod!

    --
    The creator of this post (Jacob Smith) hereby releases it, and all of his other posts, into the public domain.
    1. Re:Inevitable reply by Some_Llama · · Score: 4, Funny

      My mother is a Clod! you insensitive.. um.. nevermind.

  20. Re:The "sue" command by db32 · · Score: 4, Funny

    This is an outrage. You cannot 'sue' without lawyerd! What about the required functionality of 'sue --counter' and 'appeal'?!

    --
    The only change I can believe in is what I find in my couch cushions.
  21. Here's the difference by KlaymenDK · · Score: 2, Informative

    (reply to self after RTFA)

    What 'saved' the Mac OS was its different use of timing triggers. "All" other OS'es use one common steadily ticking clock as a dealer of time slots. This allows the cheat to "skip to the start of the line (queue)" every time it's had its turn.

    OTOH, the Mac uses a stack of alarms set to specific points in the future, and polled in order as they occur. So the difference on Mac OS is that there's no skipping the queue, it's rather "there is no queue, we'll call you when it's your turn".

    I don't know the details of the OpenBSD scheduler, but it's very likely the same (clock tick) method as used by the rest of the susceptible OS'es.

  22. Summary and Questions by Aaron+Isotton · · Score: 5, Informative

    The paper is quite long, so here's a summary (take this with a grain of salt, who wants accurate information should still RTFP):

    Most OSes (Linux, Solaris, Windows but not Mac OS X) are tick-based. This means that the kernel is called from hardware periodically (this is the "HZ" value you set in the Linux kernel). Some of them (Linux) simply check which process is running at each tick and compute statistics based on that ("sample-based statistics"). This means that the process running when the tick happens is billed for the entire period of the tick.

    Since ticks are typically "long" (typically 1-10 ms on Linux) more than one process may run during this period. In other words, using this approach leads to inaccuracies in the process billing. If all programs "play by the rules" this works quite well on average though.

    Next thing: the classic schedulers typically maintain some sort of "priority" value for each process, which decreases whenever the process is running and increases when it's not. This means that a process runs for some time, its priority decreases, and then another process (which hasn't been running for some time) takes over.

    You can exploit that by always sleeping when a tick happens and running only in-between ticks. This makes the kernel thinks that your process is never running and give it a high priority. So, when your process wakes up just after a tick happened, it will have a higher priority than most other processes and be given the CPU. If it goes to sleep again just before the next tick, its priority will not be decreased. Your process will (almost) always run when it wants to and the kernel will think that it's (almost) never running and keep its priority high. You win!

    Another aspect is that modern kernels (at least Linux and Windows) distinguish between "interactive" (e.g. media players) and "non-interactive" processes. They do so by looking how many times a process goes to sleep voluntarily. An interactive program (such as a media player) will have many voluntary sleeps (e.g. inbetween displaying frames) while a non-interactive program (e.g. a compiler or some number crunching program) will likely never go to sleep voluntarily. The scheduler gives the interactive programs an additional priority boost.

    Since the cheating programs go to sleep very often (at every tick) the kernel thinks they're "very interactive", which makes the situation worse.

    Some of the analyzed OSes - even if tick-based - do not use sample-based statistics in the kernel but they do use sample-based statistics for scheduling decisions. So the kernel sees that a process is taking more CPU than it should but it will still keep on scheduling it.

    Mac OS X is not affected because it has a tickless kernel (e.g. without periodic interrupts). Because of that sample-based statistics don't work and it has to use accurate statistics, which make it unaffected by the bug.

    This bug can be exploited to (at least)

    - get more CPU than you're supposed to
    - hinder other programs in their normal work
    - hide malicious programs (such as rootkits) which do work in the background

    Here's a list with the OSes (this USED TO BE a nicely formatted table, but the darned Slashdot "lameness filter" forced me to remove much of the nice lines and the "ecode" tag collapses whitespace).

    OS, Process statistics, Scheduler decisions, Interactive/non-interactive decision, Affected
    Linux, sample, sample, yes, yes
    Solaris, accurate, sample, ?, yes
    FreeBSD 4BSD, ?, sample, no?, yes
    FreeBSD ULE, ?, sample, yes, yes
    Windows, accurate, sample, yes, yes
    Mac OS X, accurate, accurate, not needed?, yes

    I guess that Mac OS X doesn't need a interactive/non-interactive distinction because of its different (tickless) approach. I assume that interactive applications can (implicitly or explicitly) can be recognized as such in a different way. Does anyone have more information on that?

    How does tickless Linux compare? What abo

    1. Re:Summary and Questions by swinefc · · Score: 4, Informative

      Windows is affected, but not Vista.
      Vista changed to counting actual CPU cycle count register. The goal was to prevent process starvation in high I/O situations, but it also addresses this issue as well.
      http://www.microsoft.com/technet/technetmag/issues /2007/02/VistaKernel/

  23. Clever but what loss? by redelm · · Score: 2, Insightful
    Yield()ing just before timer tick is a neat trick to grab cycles, but what use are cycles? This might have been interesting on time-share machines 20 years ago. But now cycles are in gross surplus on most machines. And processes carefully controlled on loaded machines. Until this piggy can be remotely deployed, it isn't much of a hazard.

    A very simple patch is to issue RDTSC instructions at process restart and blocking syscall to count the cycles actually used. That way the extensive tick-code doesn't need to be modified.

  24. Re:Linux 2.6.21 is probably immune: RDTSC? by redelm · · Score: 2, Informative
    A very cheap simple patch is add RDTSC instructions at process restart and blocking syscall to count the cycles actually used. That way the extensive tick-code doesn't need to be modified.

  25. Per-user process limits by Valdrax · · Score: 2, Insightful

    Besides the syntax comment the other poster said, it could've also been that the school implemented per-user process limits on the machine. Linux has had this capability for years and years; most people just don't bother setting it, but universities hosting machines for programming students pretty much have to set it for exactly this sort of thing, whether it be accidental or malicious.

    --
    If it's for-profit but free, you're not the customer -- you're the product (e.g., the Slashdot Beta's "audience").
  26. Re:The "sue" command by Wite_Noiz · · Score: 2, Funny

    lawyerd

    What a scary, scary thought...
  27. Way back in the '90s by kithrup · · Score: 2, Interesting

    Chris Torek gave a presentation at UseNIX about how a constant quantum could result in a process having its CPU usage unaccounted.

    His solution was to use a randomized quantum. Not unique per process, but randomized when the kernel starts running each process. That gave you a better accounting of the CPU time (statistics, doncha know :)), but also made this kind of attach much, much harder.

    I'm somewhat disappointed that I did not see Chris and Steven's paper referenced in this one. (I believe that the title of that paper was "Randomized Sampling Clock for CPU Utilization Estimation and Code Profiling," for those who care to find it.)

  28. Re:What does this mean? by Kenshin · · Score: 2, Interesting

    I'm assuming that we're saying that this application can get 99% of the time-slices on an otherwise occupied system, starving other tasks for resources.

    We already have that. They're called McAfee Automatic Update and Windows Automatic Update.

    God dammit, I hate those things. I turn on my office computer in the morning, and just let it sit for ten minutes because it's otherwise useless. (I turned-off Windows Automatic Update, but McAfee was more than happy to fill its shoes in needless resource hogging.)

    --

    Does it make you happy you're so strange?

  29. Re:Security! by orclevegam · · Score: 2, Interesting

    If you just want to DoS the box as a local user (which is all this lets you do, from a security standpoint), then there are much easier ways of doing this on OS X via the VM subsystem.

    You're missing the point here. Because the CPU accounting is off it's possible to do a QoS attack on a box rather than a DoS, that's virtually impossible to detect as the end user. From his or her standpoint, the system will be sluggish, but because of the way the attack works various random processes will seem to be taking up all that extra slack so that most likely no one process will appear to be hogging the CPU.

    There's also the possibility when combined with a worm or rootkit, as well as a bot net to setup a difficult to detect distributed computing environment to perform massive computations in short amounts of time.

    Like any concealment based vulnerability this is just a tool to be combined with others for a complete attack, but a serious issue nonetheless.

    --
    Curiosity was framed, Ignorance killed the cat.
  30. Re:First announced exploit.. by Minwee · · Score: 4, Funny

    Somewhere a middle school English teacher is crying, and doesn't know why.

    Do you think this might be related to that incident where thousands of English teachers all burst into flames moments after the first SMS-enabled phone was released?

  31. Re:How To Defend Against This Attack by Tacvek · · Score: 2, Interesting

    The second one is obviously the better one. I think this is basically what the CFS does. (the following is my understanding. It may be wrong) For processes it figures out what amount of time each process should have (based on the the number of processes. It tracks how much time each process is owed (in the case of 5 processes each deserves 1/5 of the total processor time). It subtracts the time used on each scheduler event (clock tick or voluntary yield.) Each clock tick the scheduler transfers control to the process owed the most time (but there is a minimum number of clock ticks before mandatory switching to prevent cache thrashing.) I presume voluntary yielding has some form of impact on the time owed amount, or else idling processes would always stay at the top of the list. Obviously there is more complications, such as nice levels, and everything.

    The big thing is that is (AFAIK) tracking the exact amount of time used by each process. The only proper way to do that is to do it at both each clock tick, and each volentary yield.

    One other rant I have is the naming of the so called O(1) scheduler. That scheduler was apparently O(1) but only because there is a limit to the maximum number of processes. In nearly every case it is possible to construct on O(1) algorithm if the maximum number of possibilities is known in advance. Technically the algorithm's timing was some function of the maximum number of processes. Since the maximum number of processes is a compile time constant, the algorithm is constant-time.

    --
    Stylish sheet to fix many problems in Slashdot's D3: https://gist.github.com/801524
  32. Re:Security! by orclevegam · · Score: 2, Interesting

    I guess I'm not hip, but what exactly is the difference between a QoS attack and a DoS attack? I mean severly degrading the quality of the service potentially up to the point of denying it *is* a DoS attack.

    A DoS attack is an extreme form of QoS. If you perform a QoS attack on someone their performance is reduced, but the system is still usable, where as in a DoS the goal is to make the system totally unusable. In some ways a QoS is even more effective than a DoS because it's more subtle and causes more frustration. If for instance a website gets DoSed the owner is upset and will try to get someone to investigate and shutdown if possible whoever is DoSing them, and the users simply cannot connect to the service and go somewhere else. If, on the other hand you QoS attack a server, the owner will be frustrated because performance is poor, but they will have to spend a good bit of time trying to track down WHY exactly the performance is poor, but, more importantly the users connecting to the service will have a very poor experience, and that hurts the servers owner. A user is willing to cut someone slack if the server goes down, but they're much less forgiving when the servers performance is just poor.

    I think a mistake you are making a mistake in understanding, the process isn't invisible or even hard to spot, but rather the resources being used are, a simple ps would still show the process.

    The process is not invisible, you are correct, but it is hard to spot. If the malicious program is named something innocuous such as srvchost.exe (check your process list in Windows, there's a ton of the suckers), or maybe httpd in linux, and the user attempts to figure out what's causing slow downs on their system, they will be looking at anywhere but these processes because they will be showing 0% CPU utilization. Also, as I said, this is only part of a proper attack, this combined with some other exploit that hides the presence of the process will be even more confusing to the user because this attack actually re-allocates the used timeslices for the process to other random processes, so to the user it looks like the entire system is just using way more CPU time than normal. Of course, if you have a root kit you can perform this re-allocation at the kernel level, but part of the point of this exploit is that it's 100% userland so has a much smaller barrier to entry.

    --
    Curiosity was framed, Ignorance killed the cat.
  33. Why is this new? by Quixadhal · · Score: 2, Insightful

    Nothing new here.

    I remember seeing this done on the VAX/VMS mainframe back in 1987. In that environment, it simply meant that you kept track of your timeslice and voluntarily gave it up before the scheduler took it away from you. That meant you got put at the top of the run queue, and unless someone else was doing the same thing, you were the next program to run. Voila... 99% CPU for you!

    Of course, ordinary users were given a limited amount of CPU time (as well as connect time, disk space, etc), so for the ordinary student, this just meant they used it up in a day or two instead of having a whole month. But then again, for class accounts, they could usually beg for more.

    Under unix variants, one could do the same by implementing cpu quotas at the user level. I've seen network packet quotas, and I'm sure someone out there has done cpu quotas along the same lines.

  34. Re:Security! by Fred_A · · Score: 2, Funny

    At least this paper should help dispel that old "Mac OS X is BSD with eye candy" meme. While reading it, it's hard not to realize that XNU (the OS X kernel) and the BSD kernel are completely different beasts. Figure 1 in particular drives the point home: it shows that with respect to the timing model used, you have OS X and RTOSs on one side, and FreeBSD, Linux, Windows etc. on the other.
    I'll prove you wrong as soon as that stupid spinning beach ball of death lets me do something.
    --

    May contain traces of nut.
    Made from the freshest electrons.
  35. Re:What does this mean? by arodland · · Score: 3, Interesting

    Absolutely. In fact I think it should go half a step further. In the interest of civility, using this feature should hide the message from casual viewing. But a single click will still bring up the original so that you can't use slashdot to be a complete ass and then censor yourself after the damage is done :)

  36. Re:So, is vista security good enough.... by vtcodger · · Score: 2, Insightful
    ***that others are starting to look after the *nix world for weaknesses? Once windows is equal or better than *nix in terms of security, then all the security and malware people will start looking at us.***

    Of course not. It shows that OS research work is likely to be done on a Unix of some sort where the source code is available for anaylsis

    TFA points out that Windows is just as vulnerable to these cheats as BSD, Linux and Solaris. The cheat works by releasing the CPU just before the end of a time tick there by allowing the whole tick to be charged to whatever task gets the rest of the tick. Windows, like Solaris, has accurate job accounting information available, but choses not to use it for scheduling. In addition, like the Linux 2.6 kernel, Windows will actually artificially raise the priority of a cheating task under the misaprehension that the job is interactive.

    --
    You can't see ANYTHING from a car, You've got to get out of the goddamned contraption and walk...Edward Abbey
  37. Re:It was news,... in 1980 by vtcodger · · Score: 2, Informative
    ***I seem to recall usenet discussions about this circa the time of !uucp!newsglop!..... Not exactly smokin' hot off the press.***

    Not exactly. This is a technique that will, in prinicple, work with any scheduler that prioritizes tasks on the basis of time ticks previously used by the task. That turns out to be most of them. The technique does not require being an I/O driver, other special task, or having unusual user priviliges.

    So yes, it IS news.

    --
    You can't see ANYTHING from a car, You've got to get out of the goddamned contraption and walk...Edward Abbey