Slashdot Mirror


Graph of Linux Vs. Windows System Calls

cgrayson recommends Richard Stiennon's blog on ZDNet — a post titled Why Windows is less secure than Linux shows a compelling graphical comparison between system calls on the two operating systems. The blogger tips Sana Security for the images. Quoting: "In its long evolution, Windows has grown so complicated that it is harder to secure... [T]hese images... are a complete map of the system calls that occur when a web server serves up [the same] single page of [HTML] with a single picture."

82 of 302 comments (clear)

  1. Poster? by Anonymous Coward · · Score: 2, Funny

    Where can I get a high res version of that image to print out poster size? That's great!

    1. Re:Poster? by letxa2000 · · Score: 5, Insightful

      Not defending Windows security, but it's entirely possible that the graphical depiction is not "optimized" so that it intentionally looks like spaghetti. It's hard to see what's going on with the resolution given, but some of the call "bubbles" seem to be unnecessarily placed far away from whatever called them with a long strand of spaghetti between them. This isn't necessarily an indication of spaghetti or bad design, but a bad graphical depiction. Also, just because lots of places make a call to the same API (which causes the graph to look like spaghetti) does not mean bad design--to the contrary, it can be very good design.

      I hate Windows as much as the next guy, but I'm not sure this is really a good case for why.

    2. Re:Poster? by EsbenMoseHansen · · Score: 3, Informative

      It looks as is if it was made by graphViz, which draws diagrams based on a textfile containing the dependencies. So it's probably fair enough in that sense, but the posting the number of edges and the number of nodes would probably be nice as well. Though I'd prefer the source for those 2 images :D

      --
      Religion is regarded by the common people as true, by the wise as false, and by rulers as useful.
    3. Re:Poster? by speculatrix · · Score: 2, Informative

      there are graphviz viewers which allow some interaction, so you could drag nodes about a bit to make it less messy.

    4. Re:Poster? by B.+Pascal · · Score: 2, Informative

      Hi Ietxa2000:

      I agree with your post.

      I like to further question the implicit assumption made by the author of this article: that simplicity is always equal to better security. Yes, a system with a simpler, more elegant design feels better to work with. Yet, it doesn't necessarily means better security.

      Rather than looking at a system's design, I think a more meaningful measurement of a system's security is to look at: 1) the number of people looking for new security flaws, and 2) the time it takes for patches to be released given an exploit. (1) measures how much effort is put into finding not-yet-discovered exploits. If there are not enough people who are looking for new security flaws, then at best, the system is secured by obscurity. (2) measures the responsiveness and effort to fix known exploits. Naturally, if an exploit is found, a user wants that exploit fixed ASAP.

      Looking a system's design (graph), then drawing conclusions about the system's security, is like saying that a system can be done right in the first cut. If the design is done well, then it necessarily results in a good implementation. (Granted, if design is poor, then it's harder to make the implementation good...)

      Cheers.

      B. Pascal

    5. Re:Poster? by RazzleDazzle · · Score: 3, Funny

      Yeah, spaghetti... obey your noodly master.

      Next thing you'll be talking about is global warming, then pirates, and the love of Him that is noodly.

      --
      ZERO ZERO ONE ZERO ONE ZERO ONE ONE! Just brushing up for my next big invention: Ethernet over Voice (EoV)
  2. Looks good. by bradsenff · · Score: 5, Funny

    Those pictures look great.

    Suddenly I am hungry for spaghetti.

    mmmMmm Food.

    Damn. Windows *is* evil. It is making me fat!

    1. Re:Looks good. by HomelessInLaJolla · · Score: 5, Insightful

      I just happened to think: Do you suppose it would be possible to refactor the Windows graph to make it look less tangled, or refactor the Linux graph to make it look more tangled? Imagine the graphs in 3-D space and being able to rotate around them or even view them from inside looking out in different directions. The concept is similar to adjusting the axes in the same manner as logarithmic paper can make some plots look like straight lines (once that concept is recognized then the math can become infinitely complex for defining the axes).

      To be perfectly fair: How do we know that the researcher who created the graphs optimized both for clean and concise 2-D layout?

      In response to my own question: No matter how you want to change the visualization the Linux graph looks to have far fewer multiple source intersection points and a larger prevalence of straight line heirarchical structure.

      --
      the NPG electrode was replaced with carbon blac
    2. Re:Looks good. by Atmchicago · · Score: 3, Informative

      I agree with your question. I was thinking of a few ways to analyze the graphs:

      • Count the total number of nodes
      • Count the average number of edges coming out of each node

      The first gives us an idea of the total number of calls involved. The second gives us some idea of how many interactions each call is involved with - more branches would indicate more complexity.

      --

      You can lead a horse to water, but you can't make it dissolve.

    3. Re:Looks good. by nberardi · · Score: 5, Insightful

      This shouldn't be titled why Windows is less secure than Linux. If the author actually had an integrity or an understanding of what he was writing about it should be title why IIS is less secure than Apache. Because I bet Apache running on Windows looks very close to the Apache running on Linux. Mostly because the Apache team has an excellent set of developers.

      This blogger should be shunned out of the internet world as a worthless hack.

    4. Re:Looks good. by Thrip · · Score: 5, Funny

      I just happened to think: Do you suppose it would be possible to refactor the Windows graph to make it look less tangled ...? Yes. The easiest way would be to throw out the Windows code base and start over with a set of competent programmers, then regenerate the graph.
      --
      I'm awake! The answer is BONK!
    5. Re:Looks good. by shawb · · Score: 2, Insightful

      The reason the Linux version has a lot of empty space and wider pixel size is because... there are so many fewer connections between nodes. There is more room to represent them. If appears that while Linux does have nearly as many nodes, many more of the calls are in a linear fashion. This is good security-wise as you can get a better idea of what data should be passed through a particular chunk of code and can better plan for exception checking and out of bounds conditions so malformed data will be handled gracefully.

      --
      I'll never make that mistake again, reading the experts' opinions. - Feynman
  3. OLD news by sproketboy · · Score: 2, Informative

    Posted in last year sometime on zdnet. Is slashdot that out of touch?

  4. nice pics by Anonymous Coward · · Score: 5, Funny

    what can I say? I'm impressed, you can click on the larger images and still not see a god damn thing

  5. FUD? by EveryNickIsTaken · · Score: 3, Insightful

    Can anyone verify the accuracy of the "graphs"?

    1. Re:FUD? by ejdmoo · · Score: 4, Informative

      Accurate or not, it's a graph of Apache vs. IIS calls, NOT Linux vs. Windows. Also old as hell.

      Another quality article from Slashdot.

    2. Re:FUD? by ajs · · Score: 4, Informative

      It's good that Slashdot is covering it, though. I do like the fact that we periodically get the chance to debunk some of the misinformation on the Web.

      Taken completely out of its original context, the graphs are a useful way to compare real-world examples of C and C++ calling models, though. You'll notice that IIS (C++) has these "clusters" of activity where one routine acts as a nexus for calls into many others. This is fairly standard practice in C++ where you might have an accessor that triggers lots of behavior. In the C version, there's a much more visually procedural pattern where a function calls a few others, and then returns to a function that calls its tree of functions, but might overlap with a few calls to the previous function's utility functions, etc.

    3. Re:FUD? by YellowElf · · Score: 2, Insightful

      But these are system calls, and should not be part of the IIS application itself. Of course, Microsoft loooves to say everything is part of the OS, and we can't see the actual calls that are being made, but whatever is being called should be outside of IIS in order for the article to make sense.

      --dv

      --
      Insert witty saying or aphorism here.
    4. Re:FUD? by Red+Flayer · · Score: 2, Insightful

      Another quality article from Slashdot.
      Have you done your part with firehose?

      You've got the power to make a difference in the story selection process, why don't you use it instead of complaining meaninglessly? Especially since it'd already been pointed out by several posters?
      --
      "Trolls they were, but filled with the evil will of their master: a fell race..." -- J.R.R. Tolkien on Olog-hai
    5. Re:FUD? by timeOday · · Score: 4, Insightful

      The graphs are a useful way to compare real-world examples of C and C++ calling models, though.
      No, because they're only counting system calls. There's no inherent reason for C++ code to make more numerous or more varied system calls. The difference between C and C++ is purely user-mode. The summary's assertion is correct - the Windows server is simply making many more system calls to serve a page.

      Is that a surprise? Those of you who doubt the general claims made using these graphs, why don't you find a more compelling statistic to the contrary? Show us how the XP (or better yet, Vista) kernel API is NOT a sprawling mess. Good luck, since even Microsoft has admitted Vista is nearly unmaintainable, and years of schedule slippage proves it no matter what they say.

      I don't even blame them. Feature-richness and backwards compatibility are key aspects of what Microsoft provides, and it inevitably results in a mess. These are practically requirements if you have a big expensive software infrastructure built over a long period of time, as many businesses do. But don't kid yourself that the costs avoided by not refactoring all that old code come free. Complexity does impact security.

    6. Re:FUD? by Red+Flayer · · Score: 2, Informative

      The link does nothing more than redirect to the front page. Was it supposed to do something else?
      I checked the link, it goes to firehose. Maybe you don't have access to firehose (it's in Beta, maybe it's karma-dependent for access)? Or maybe you just need to look a little closer, since FireHose does look a little like the main page.

      FYI, FireHose lets users affect submission acceptance by rating the submissions before (and after) they get approved -- this allows for pre-emptive action, and also feedback.
      --
      "Trolls they were, but filled with the evil will of their master: a fell race..." -- J.R.R. Tolkien on Olog-hai
    7. Re:FUD? by plalonde2 · · Score: 2, Insightful

      That's a completely bogus statement. In straight C you know your call graph. You know which function is called where and when. In C++ any method call might be virtual and you have no way to know at the call site. Or the function call might be a non-virtual override. No way to tell at the call site. It is much easier to mis-use (unintentionally) a C++ OO library than a straight C library. I see many more errors in C++ code than I do in straight C.

    8. Re:FUD? by jgrahn · · Score: 3, Interesting

      I don't even blame them. Feature-richness and backwards compatibility are key aspects of what Microsoft provides, and it inevitably results in a mess. These are practically requirements if you have a big expensive software infrastructure built over a long period of time, as many businesses do.

      OK, but shouldn't that make a Unix syscall interface even more messy? After all, it was created thirty-five years ago.

      On the other hand, you might want to count each ioctl and each read(2) or write(2) of different character devices as separate system calls ...

    9. Re:FUD? by timeOday · · Score: 2, Insightful

      OK, but shouldn't that make a Unix syscall interface even more messy? After all, it was created thirty-five years ago.
      How much backwards compatibility does it really retain though? I realize some basic concepts and even the names of some basic functions (e.g. "read") have actually been around that long, but how many binaries from back then would run on Linux? I doubt you could find one. And that's what I mean by maintaining backwards compatibility on a feature-rich platform.
  6. Interesting by theqmann · · Score: 2, Insightful

    Interesting, they look hand drawn. I wonder if arbitrary complexity could be visually added by using a suboptimal drawing pattern.

    1. Re:Interesting by 0xABADC0DA · · Score: 4, Informative

      It's not hand drawn. They obviously used dot from graphviz. You can't mistake that layout once you've seen it.

  7. Vista by IflyRC · · Score: 2, Insightful

    Where is the Vista version?

    1. Re:Vista by Fnord666 · · Score: 5, Funny

      Where is the Vista version?
      They're waiting for additional funding for the ink.
      --
      'The tyrant will always find pretext for his tyranny.' - Aesop's Fables
  8. Old and Pointless News by garcia · · Score: 5, Insightful

    The article is dated April 14th, 2006. Nice.

    The photos are completely unreadable and mean absolutely nothing. Let's see the entire graph with labels so that we can know exactly what's going on during the calls. From that graph, for all we know, we could be looking at more than what they claim.

    1. Re:Old and Pointless News by *weasel · · Score: 2, Insightful

      Not to mention that we should be looking at Apache-on-Windows vs Apache-on-Linux.

      Why mix up the comparison of Linux/Windows with Apache/IIS with C/C++ if you don't have to?

      An actual apples-to-apples comparison would be interesting.

      --
      // "Can't clowns and pirates just -try- to get along?"
  9. A single page with a single picture? by fireman+sam · · Score: 3, Funny

    and I thought goatse was taken down.

    --
    it is only after a long journey that you know the strength of the horse.
  10. Re:Pudding graph by ajs · · Score: 2, Insightful

    NO! This is a terrible, terrible misuse of information. The person who came up with those graphs should be forced to read "The Visual Display of Quantitative Information" Edward R Tufte until their eyes fall out!

    IIS is written in C++.

    Apache is written in C.

    These graphs show the different calling models of C++ and C.

    That is *all* they show.

  11. Complete FUD by DrDitto · · Score: 2, Insightful

    Never have I seen papers or research that implies the number of system calls correlates to security. What's next, implying MS-DOS is more secure than Linux based on numbers of system calls and lines of code?

    1. Re:Complete FUD by flyingfsck · · Score: 3, Funny

      Of course DOS is more secure than Linux. It doesn't do networking...

      --
      Excuse me, but please get off my Pennisetum Clandestinum, eh!
  12. I call FUD by LighterShadeOfBlack · · Score: 5, Insightful

    Comparing the complexity of system calls made by two different programs on two different OSes and then using that solely to judge the two differing OSes seems like an astoundingly flawed comparison. Seeing as Apache runs on Linux and Windows it seems pretty obvious that they should've used at least used the same program to make this comparison even slightly relevant.

    I'm not saying Windows isn't worse than Linux in this respect, just that this article proves nothing.

    --
    Spelling mistakes, grammatical errors, and stupid comments are intentional.
  13. Re:Pudding graph by j00r0m4nc3r · · Score: 5, Insightful

    Well, not only that, but it has nothing to do with Windows and Linux. More like, Apache and IIS. You could run Apache on your Windows box, which I'm sure LOTS of people do.

  14. Very suspicious of what "syscall" means here. by Nevyn · · Score: 5, Insightful

    The normal usage of syscall is something that has to transfer control to the system, from your program. Things like accept(), write() and sbrk() but not strcpy() or malloc(). While I haven't done an strace on Apache-httpd I have done it on my own webserver and I find it hard to believe that Apache-httpd is as bad as the graph in the article implies. And given there's no text in the graph it's hard to check.

    At it's simplest a HTTP response is: accept(); read(); open(); fstat(); write(); sendfile(); close(); close();. A lot of servers will set options like: FD_CLOEXEC, O_NONBLOCK, TCP_CORK and call shutdown() at the end. You can also easily blow a few more syscalls on config. options which don't do anything for the simplest case, but the graph implies 50-100.

    The confusing thing, to me, is that if by "syscall" they meant something like "library calls" then I'd expect much more for Apache-httpd (as large bits of code are in libapr etc.) ... but the comparison is worthless then anyway.

    --
    ustr: Managed string API with ave. 44% overhead over strdup(), for 0-20B
  15. I'm so confused by Anonymous Coward · · Score: 4, Funny

    Windows is less sucure because more blimps are firing more laser beams at other blimps in its picture than in linux's picture. ??? Wouldn't the larger swarm of blimbs with more lasers make it more secure it has the better army?

  16. Well, kind of right by varmittang · · Score: 2, Insightful

    Yeah, its Apache on Linux and IIS on Windows, but what about Apache on Windows. What are the system calls there. If they are about the same from Linux to Windows for Apache, then all this proves is that MS wrote a crappy Web server. But if there are more calls to be made with Apache on Windows, then I would say that Windows makes its programs do more system calls and possibly makes all programs more likely to be cracked into. But its not fair to put one program against another on different OSs, then say the OS is the problem.

    --
    -----BEGIN PGP SIGNATURE-----
    12345
    -----END PGP SIGNATURE-----
  17. Re:Linux developers should take note.... by Fred+Ferrigno · · Score: 5, Funny

    Obviously, the solution is to code everything as a single function. Then the graph will look very nice and tidy.

  18. Re:Pudding graph by Malc · · Score: 4, Insightful

    Twaddle. The report comes from a company that makes money selling security software for Windows. Scaremongering is good for their sales.

    What would be interesting is an analysis of the types of system calls. What about a comparison of the functionality of IIS vs. Apache? Perhaps Windows provides some calls that Apache has had to implement in it's own application code. How many of those so called system calls trap in to the kernel?

    This is just insubstantial FUD as far as I can see, backed up by indecipherable pictures.

  19. more calls could just as easily mean more security by harlows_monkeys · · Score: 3, Insightful
    This is kind of ridiculous. More calls could indicate that some things are being broken down into more fine-grained, simpler, subproblems, or that more use is being made of existing libraries as opposed to writing new code. Both of those would tend to lead to better security.

    In other words, number of system calls tells us nothing useful about security.

  20. Unavoidable. by Kadin2048 · · Score: 5, Interesting

    I think you'd have to resort to a lot of trickery, like stacking vertices on top of each other with zero-length edges, to make the Windows graph appear less complicated than the Linux one. Provided that you model them in the same way, it ought to be pretty apparent that one just has a lot more vertices and edges than the other, even if you did it in a multidimensional space.

    Really, the graphs are just a way of artfully showing a simple fact, which is that Windows requires more system calls than Linux, to complete a particular task. If you assume that each system call is a potential vulnerability, and that less calls are inherently better and more secure, than the result is a foregone conclusion. But those are pretty big "ifs," and it seems like someone who was pro-Windows would do better to attack those premises, rather than trying to dispute the graph, if it's indeed representative of the true number of system calls.

    --
    "Ladies and gentlemen, my killbot features Lotus Notes and a machine gun. It is the finest available."
    1. Re:Unavoidable. by jpmattia · · Score: 4, Insightful

      If you assume that each system call is a potential vulnerability, and that less calls are inherently better

      I think that's severely oversimplifying, because rewriting the system to take only one system call would certainly result in more bugs, no?

    2. Re:Unavoidable. by SL+Baur · · Score: 2, Insightful

      Really, the graphs are just a way of artfully showing a simple fact, which is that Windows requires more system calls than Linux, to complete a particular task That's what it looks like and I hate to say this, but who cares and what has this to do with security? The average Unix program doesn't make its own system calls and the most exploited misfeatures were in the standard C library like sprintf, strcpy, and gets, none of which involve system calls.
    3. Re:Unavoidable. by 51mon · · Score: 4, Insightful

      I think that's severely oversimplifying, because rewriting the system to take only one system call would certainly result in more bugs, no?
      I thought Alan Cox had already done a kernel module for serving http?

      But no rewriting the system to more specifically do the task in a more focused way would almost certainly result in a lot less bugs, of course the system would be less "generally useful".

      Clearly it is a simple argument, less is more.

      Backwards compatibility has huge costs, one of them is security. Supporting those apps with 8.3 filename limits, and 3 or 4 different ways of accessing the file system, all mean there is a lot more around to go wrong.

      If you are actively using large chunks of "more" you probably don't care, as your system is more flexible, or more featured.

      But I'm really not interested in the performance hits the more bizarre features of SMB gives to my webservers, but I daren't switch it off, as I know I'd be running an IIS configuration that is practically unique in the world, and it is flaky enough as it is. Similarly I don't care about that 8.3 compatibility, I know I could switch it off, but I'd worry something obscure might break. So I'm stuck with the "more" even when I want "less". Where as my Linux webservers don't have a GUI, most don't have SMB (or NFS), I lost all that network filesystem junk with the last update on most of them (scp (or http) will do fine for most things).

      Guess it comes down to design - the secret of elegance is about what you take out, not what you put in.

      And if you want (or are unsure if you need) binary backward compatibility to DOS 1 (or whatever level is provided), you can take out very little.
    4. Re:Unavoidable. by newt0311 · · Score: 2, Insightful

      The thing to consider however is that they are not accomplishing the same task. At a high level, sure they are talking HTTP. But at a low level IIS in it's default state does a lot more that Apache does in it's basic state. Another thing to consider is the different architectures of the two web servers. They're completely different. Unnecessary complexity is a bad thing you know. Does IIS re-init everything for every page? If so, it should be redesigned. If not, your argument falls apart. The fact that their architectures are different is one of the basic facts that is being relied upon. If the core architecture was the same, security characteristics would be a lot similar. Besides, the defect pointed out is primarily a design defect, namely that IIS has a much more complicated design. Such a statement assumes different architectures.
  21. Re:Pudding graph by Rycross · · Score: 4, Funny
    Quote from the article:

    This second image is of a Windows Server running IIS.

    You are wrong.
  22. Quick Summary by bendodge · · Score: 2
    A quick summary:

    http://blogs.zdnet.com/images/SysCallApache.jpg
    http://blogs.zdnet.com/images/SysCallIIS.jpg 1. These are old
    2. They have nothing to do with Linux vs Windows; they are Apache vs IIS
    3. They are unlabeled, so they are only good for showing the difference between C (Apache) and C++ (IIS)

    So this tells you that Apache is simpler than IIS, and C is simpler than C++.
    --
    The government can't save you.
  23. Re:Pudding graph by iusty · · Score: 3, Informative

    The article says syscalls, not function calls. The difference between calling models has no relation to syscalls, which are between userland and kernel space.

    More likely, the article shows the difference between Apache and IIS, on one side, and the glibc and however-it's-called windows' base library, on the other side.

  24. No, it was IIS on Win vs Apache on Linux. by Kadin2048 · · Score: 2, Insightful

    I don't know what you're talking about. In TFA it's quite clear that the top graph is Apache on Linux, and the bottom is IIS on Windows, both serving the same page. So there are two factors (at least) between them, a different OS and a different webserver. It's not fair, as much as I'd like to, to attribute the increase in calls purely to the design of Windows -- that would only be possible if it was Apache vs. Apache (and even then, there would be other things to control for).

    If you accept that more system calls are inherently bad, than the graphs might indicate that "IIS on Windows" is less secure than "Apache on Linux," but it says nothing about Apache on Windows, or Windows as a platform inherently.

    --
    "Ladies and gentlemen, my killbot features Lotus Notes and a machine gun. It is the finest available."
  25. In the boardroom: by rehtonAesoohC · · Score: 2, Funny

    Corporate Linux Fanboy: "As you can see here Gentlemen, the Linux web server has far less tubes going everywhere, which means the information travels a shorter distance through these tubes."
    Board: "Oooohhh. Ahhhhh. Tubes..." *nod nod*
    Corporate Linux Fanboy: "Now as we look at the Microsoft version of the same exact thing, you can see that the tubes snake every which way with no sense of order. Chaos ensues, and the tubes are tangled every which way. Obviously, less tubes means better."
    Corporate Microsoft Fanboy: "Your Mom has more tubes!"

  26. Re:Pudding graph by HomelessInLaJolla · · Score: 2, Insightful

    > This is just insubstantial FUD as far as I can see, backed up by indecipherable pictures

    So your assertion is that an overhead road map of cities, such as New York, NY vs. Kalamazoo, MI, would be entirely useless in generalizing points of traffic congestion and points of traffic collisions?

    Maybe you don't design operating systems (computer or civil), or, if you do, maybe you shouldn't.

    --
    the NPG electrode was replaced with carbon blac
  27. His Noodly Goodness Does Not Approve by sehlat · · Score: 2, Funny

    I have prayed to the Flying Spaghetti Monster for guidance about these graphs, and yea, verily did He appear before me and said "What? No sauce?" Then he Frowned his Terrible Frown, and did drown my monitor in Parmesan, bellowing "Away, demons!" and vanished.

  28. Plethora of issues by DLG · · Score: 4, Insightful

    #1. Old news
    #2. Apples and Oranges (IIS on Windows versus Apache on Linux? Which are we comparing?)
    #3. Lack of detail: You can't see what system calls are really involved. No indication of configuration. No version numbers.

    So that puts it in the realm of FUD, although the blogger does explain that its just a blog.

    From my experience with Linux and Windows, the philosophical difference has to do with what is doing most of the work. In Windows a great deal of functionality is granted by the Windows API. As most programmers throughout the 90's know, Microsoft created their API around the functionality they needed for their own development, and then the rest of us had to buy the 'Secret' API manual with all the treats.

    In Linux the Kernel where all those system calls go, is pretty limited compared to Windows. Where most functionality is added for developers is in shared libraries. Windows of course has the too, but its more a matter of where the real action is running. Is it in the kernel or in userspace. With Linux mostly its userspace, so there is less issues with software errors being capable of interfering with the machine itself. Still there are ways developers, especially of servers requiring some superuser priveleges (listening to ports under 1024) have provided security holes in basic interfaces (Sendmail and Bind for example). Still thats not reserved to Linux. Beyond that, we talk about the fact that Linux users don't run as root, but I have seen alot of irc session where the username of root is in the GID. So SOME folks do run as root. Whether the distributions now make that less necessary, that is also how Vista is going.

    Apache is a bad project to compare other software too. It has been remarkably well developed both for stability and resisting sneaky security issues. Obviously one can muck up their configuration to reduce their security, but Apache itself (despite its initial moniker of being A patchy webserver) is a terrific example of well run coding projects.

    IIS on the other hand is one of the posterchildren of security problems, with early versions not checking for navigation of parent directories, along with other trivial insecurites, based in some ways on permitting the developer to easily integrate IIS with other Microsoft tools.

    So yes, IIS on Windows is more insecure than Apache on Linux. And Apache on Linux has always kicked IIS's ass in market share. I wonder if we compared Apache on Linux to Apache on Windows what we would find.

    1. Re:Plethora of issues by PsychicX · · Score: 2

      I don't know if you intended this or not, but there's sort of a veiled implication in your post that the Win32 API lives in the kernel. It does not. In fact, the Win32 API is a pure userland API, and calls through to a much smaller set of kernel syscalls when necessary. So a Win32 API call does not equate to a 'syscall' in the normal sense, as such a call may make 0 or more calls to the kernel depending on what needs to be done.

  29. Not to jump to Microsoft's defense... by HerculesMO · · Score: 2, Funny

    But IIS is probably one of their best products, and most secure as far as security bulletins go.

    I think the rest has been covered ad nauseum, as far as C versus C++ procedure calls.

    --
    The price is always right if someone else is paying.
  30. Just what we always heard ... now visualised by golodh · · Score: 3, Insightful
    One of the main architectural security problems with MS Windows that we keep hearing about is that even ordinary application such as email clients, browsers, etc. tie in so intimately with the Windows OS, that once your application is compromised, your OS is compromised.

    These pictures seem to show that IIS is much more tied in with the Windows OS than Apache is with the Linux OS.

    I think that's credible, and that it illustrates that in case of Windows, the wider (and much more complicated) interface between applications and OS is real. I have no difficulty believing that this offers many more opportunities to compromise the OS, and hence is less secure.

  31. say what you want by circletimessquare · · Score: 2

    but i think windows is clearly a more artistic operating system than linux

    --
    intellectual property law is philosophically incoherent. it is your moral duty to ignore it or sabotage it
  32. Re:Pudding graph by hangareighteen · · Score: 5, Insightful

    He said 'syscall' right?

    [ pasted from http://en.wikipedia.org/wiki/Syscall ]
    System calls often use a special CPU instruction which causes the processor to transfer control to more privileged code, as previously specified by the more privileged code. This allows the more privileged code to specify where it will be entered as well as important processor state at the time of entry.
    When the system call is invoked, the program which invoked it is interrupted, and information needed to continue its execution later is saved. The processor then begins executing the higher privileged code, which, by examining processor state set by the less privileged code and/or its stack, determines what is being requested. When it is finished, it returns to the program, restoring the saved state, and the program continues executing.
    [ end paste ]

    So, forgive me.. I could just be naive; but what does C or C++ calling semantics / methods have anything to do with calls into the OS? Seems like you'd have to make the same calls regardless of the language that you use, or more to the point, that the calls represent the facilities that the OS has made available to you. Seems pretty language independent from my readings.

  33. that's the path of chairs at a MS board meeting by swschrad · · Score: 4, Funny

    write to steveb@microsoft.com, I'm sure he'll let you have the video ;)

    --
    if this is supposed to be a new economy, how come they still want my old fashioned money?
  34. Re:Linux developers should take note.... by sploxx · · Score: 2, Insightful

    It is tempting to add more and more features and functionality over time. Ultimatly, you risk getting consumed by "entropy".

    KDE and Gnome developers also....lest XFCE surprise them both over time. More functionality is better, as long as the software is integrated in a sane way. The problem is functionality in the wrong places, not functionality itself. I think everyone here knows what harm the will to reduce functionality did to GNOME... (awaiting flames already :)
  35. Re:This is more a comparison of efficiency to me. by SatanicPuppy · · Score: 3, Informative

    Except for the whole: "[T]hese images... are a complete map of the system calls that occur when a web server serves up [the same] single page of [HTML] with a single picture."

    RTFS: Read The Fucking Summary.

    --
    ad logicam Claiming a proposition is false because it was presented as the conclusion of a fallacious argument.
  36. Re:Linux is less secure than Windows by DaveG,+the+Quantum+P · · Score: 3, Insightful

    If it were that unsecure, why would it have zealots in the first place? Why would anyone stick with it? What about all those secure apache servers out there?

  37. Bad protocol w/ Good encryption by Zarf · · Score: 4, Insightful

    Good protocol can secure bad encryption more easily than good encryption can help bad protocol.

    The Sana Security diagrams show us just how bad the windows internal protocols really are. There is no securing this system with Digital Rights management or any other encryption scheme. Any security method placed on top of a such bad messaging protocols will fail miserably because even if the encryption or other security suite is perfect... windows isn't. And the system will be compromised by drilling down through windows... not through the security system.

    What good is a bullet-proof pad lock if you put the combination on a yellow sticky note next to the lock itself?

    --
    [signature]
  38. Re:Pudding graph by Duhavid · · Score: 3, Insightful

    I dont know I would say it has *nothing* to do with Windows vs Linux.

    It is a map of OS calls required to accomplish a task.

    Your point is good, though, a better test would be apache on windows
    versus apache on linux.

    --
    emt 377 emt 4
  39. Re:Linux is less secure than Windows by ashridah · · Score: 2, Insightful

    "If it were that unsecure, why would it have zealots in the first place?"

    it's called money, as in, people make money from what they know about it, and lets face it, ms was just lucky, followed by having smart (for them) marketing practices, and finally, having good strong-arm tactics.

  40. Re:Pudding graph by imroy · · Score: 4, Insightful

    These graphs show the different calling models of C++ and C.
    That is *all* they show.

    No they don't. They show *system calls*, into the kernel, not method or function calls within the user-space program. The language shouldn't make much difference at that level.

  41. Re:Pudding graph by Chris+Burke · · Score: 4, Insightful

    So, forgive me.. I could just be naive; but what does C or C++ calling semantics / methods have anything to do with calls into the OS?

    No, you're right, it has nothing to do with C/C++. The GP was just another example on /. of "I'm going to seem smart by discrediting the article, and the easiest way to do so is make something up without reading the article".

    --

    The enemies of Democracy are
  42. Good question! by Cheesey · · Score: 2, Insightful

    As well as wanting to know what the nodes represent (system calls or procedure calls?), I'd like to know what the edges represent. Control flow? Data flow? What are they supposed to be?

    This article is unbelievable, apparently presenting a conclusion that the writer doesn't understand, using meaningless data.

    --
    >north
    You're an immobile computer, remember?
  43. More importantly these graphs show how Linux by Master+of+Transhuman · · Score: 3, Interesting

    - or at least a Web server - is more efficient than Windows.

    This explains why Linux server editions tested in the past tend to outperform Windows Server versions by a factor of two in number of users they can handle linearly.

    They obviously are calling a hell of a lot less than Windows is.

    And it's not clear that those Windows calls are really necessary. I suspect they are mostly redundant calls to multiple versions of the same code from multiple calling modules. This is a result of the size of the Microsoft development teams re-inventing each others code regularly with every new release of the OS. This is pretty clearly what is going on based on Jim Allchin's remarks two years ago about how Vista would "never" be done if they didn't change their development practices.

    And it's the only thing that explains the millions of new lines of code in each new release of the OS, without a concomitant increase in OS capability. Vista has what, twenty million new lines of code? For what capability over XP - DRM? I doubt it.

    --
    Richard Steven Hack - This sig is TOO GODDAMN SHORT TO DO ANYTHING USEFUL WITH! MORONS!
  44. More proof that Windows is the Chosen OS by davevr · · Score: 2, Funny

    It seems clear which OS is preferred by the Flying Spaghetti Monster. I feel safe knowing that my web server is doing homage to His Noodly Goodness every time I refresh a page. After all, what is really going to help secure your site: a bunch of fancy-smancy kernel programmers or the divine protection of His noodly appendage?

  45. Re:Pudding graph by EvanED · · Score: 2, Insightful

    The point is not perfectly on the mark, but it is not wholey off the mark either.

    That's right. It's close enough to the mark that it looks like it's making a good point while masking the point that drawing any conclusions besides "this might be why Windows is less secure" is complete BS.

    As to apache and iis as the choices, they have bearing in that apache will likely be the choice on linux, and iis will likely be the choice on windows.

    Ahhhh, now might be a reasonable conclusion.

    However, that's not what the article says. The article says "these graphs are why Windows is less secure", not "these graphs are why IIS/Windows is less secure than Apache/Linux" or even "this is why web servers on Windows are less secure than web servers on Linux."

    And if iis has that much to do with the chart, then why is the graph *that* much more involved? Is it doing it's task inefficiently? Are the hooks for ASP or other things that numerous?

    I don't know. It's not ASP, because they're serving the same page from both. At the same time, I can't imagine what all the additional system calls that Windows would need are either. Some investigation seems to indicate that the APIs are about the same, so why would you need more calls on one than the other?

    The only other thing I can think of besides "IIS sucks" is that the Windows subsystem is making multiple syscalls for each library call. For instance, on a read or write the library hides the fact that sometimes not all the data is transfered by making multiple syscalls, while on Linux the kernel hides that fact. But this doesn't necessarily indicate a problem with Windows at all -- quite the contrary, it means that in that respect the Windows kernel is actually simpler because that logic moves to user space.

  46. Re:Linux developers should take note.... by nwhitehorn · · Score: 2, Interesting

    This actually makes a very good point. Some arguably secure coding styles (microkernels, for instance) involve a fantastic number of syscalls, as operations trampoline through kernel space.

    On the other end of things, the way to get the fewest possible number of syscalls is to implement the entire web server in the kernel (in a single function, as the OP wrote). Then you just call the handle_http_request() syscall and walk away. This is, of course, the least secure and most dangerous possible way to implement a web server.

    The only thing with which number of system calls actually correlates is request handling speed -- barring other performance issues, context switches take some amount of time, which is why microkernels typically have poor performance. Given the massively different software architectures involved, however, I would imagine that any important performance differences lie elsewhere.

  47. IIS is more secure than is Apache by I'm+Don+Giovanni · · Score: 2, Interesting

    Accept that IIS6 is more secure than Apache 2.x. Go to secunia.com and compare the two security records since 2003 (when IIS6 was released). IIS6 has had only three vulnerabilities since then, all minor, and all patch. During the same time period, Apache 2.x has had over 30 vunlerabilities, multiple them rated as "critical", and some are still unpatched today, and others are only partially patched.

    So, not only does the article fail at attempting to say why Linux is more secure than windows, the example they use doesn't even show that apache is more secure than IIS.

    --
    -- "I never gave these stories much credence." - HAL 9000
    1. Re:IIS is more secure than is Apache by dbIII · · Score: 4, Insightful

      Remember that your are comparing public results about a peer reviewed application against a development black box we cannot see into. Personally I don't think that is a very good comparison. Also I think they should have compared apache on both platforms.

  48. Compilcated Call Graphs versus Simple functions by SporkLand · · Score: 2

    I don't follow the argument that simple call graphs == simple functions. At the extremes you could argue that you can have a monster of a function that is a total of mess that doesn't call any other functions and has a simple call graph.

    Knocking down straw men is fun.

    My overall point is that a well factored program will more than likely have more function calls than a non-well factored one. If factoring a program better leads to better overall comprehensibility (and hence security according to a model), then these graphs might well imply the inverse.

    My true belief is that call graphs won't provide a good data point for this type of analysis. I think program comprehensibility is tough analyze and requires a number of different metrics. Although Lisp is provably better than anything. Left as exercise to reader.

  49. What? by abshnasko · · Score: 2

    This is not Windows vs Linux, it is IIS vs. Apache. Where's the test running Apache on Windows?

  50. Re:Linux is less secure than Windows by Anonymous Coward · · Score: 2, Informative

    (I can't believe I'm feeding a troll, but I couldn't let this just slip by.)

    All evidence shows that Linux is less secure than other operating systems, in particular Windows.

    Wrong.

    For one thing, this can be explained by the open nature of Linux where anybody has access to all of the encryption algorithms, sources and keys. In the computer world, just like in the human world, it is in environments where anything goes that the worst viruses come to existence.

    Linux uses standard encryption algorithms, just like Windows. 3DES and DSA are the same everywhere. Private keys are still private (Linus didn't pack his GPG key into the latest kernel source, if that's what you're thinking), and public keys public.

    Also, Linux distributions are filled with various backdoors since anyone, including ill-intended foreigners, can add anything to the kernel base and its surroundings. At some point, there was even a hacked version of a compiler that introduced backdoors in every program that it produced!

    OSS isn't run on the Wiki model. All submissions to open-source projects are looked over and verified by the project maintainers. At least with OSS I don't have to worry about backdoors added by certain ill-intended Americans.

    Finally, and probably most importantly, Linux growth happens through the actions of the low-key movement of techies that try to replace everything they can in their organisations with Linux. Apart from acting unprofessionally, these zealots let their feelings for the beloved OS trump any kind of common sense behavior, such as using the right tool for the job. Instead they carelessly introduce vulnerabilities in environments that were previously locked down.

    Wow! Shocking! A valid point! Not exactly a problem with Linux itself, though...

    Yes, this can be a problem. Linux is good, but not perfect for everything. There are some things Windows just does better. The proper response is to fire these idiots. They'd do just as much damage administrating a Windows server

    In short, organisations who value computer security should stay away from Linux, and refrain from hiring those who mention Linux in their resume.

    Really? You should let IBM know about this.

  51. Re:Linux is less secure than Windows by mdhoover · · Score: 2, Insightful

    Prove it. I dare you to put a freshly installed M$ system and a freshly installed linux box side by side outside your firewall and see which gets pwned first. My last attempt the XP box lasted precisely 24 seconds. Try it, it will be an eye opener...

  52. Other simple examples... by octogen · · Score: 2, Insightful

    ...of how NT-based Systems are misdesigned are the security design and implementation in general.

    For example, to get the current SID (Security Identifier, "user id") of the current process on NT, one must:
    * Open a handle to the current process
    * With that handle, open a handle to the process token of the current process
    * Call GetTokenInformation with a NULL pointer to query the length of the data it would return
    * Allocate memory for a buffer receiving Token Information
    * Call GetTokenInformation again with a pointer to that buffer
    * Resolve a pointer in the data received to get the SID_AND_ATTRIBUTES structure
    * Resolve a pointer in that structure to get the actual SID

    The length of the SID is unknown, so to compare two ore more SIDs, one must use additional library functions

    After using all that information, don't forget to close all the handles and to free the memory you've allocated.

    NOW THE SAME THING ON UNIX:
    uid_t myUID = getuid();

    ONE line of code. Guess on what platform you can mess that up easier.

    Or another example:
    ===================

    As a privileged user, create a file in a certain directory.

    On NT, you need SeTakeOwnership, SeRestore and SeBackup privileges.
    You can't use existing applications, because CreateFile() / CreateFileEx() will fail, even when you have the privileges enabled. You have to write your own application, which uses the FILE_FLAG_BACKUP_SEMANTICS flag in these API calls, so the privileges will actually be used (well-designed operating systems use a unified method called privilege bracketing instead of different flags for every system call).
    Now you could theoretically create the file regardless of the ACL, IF THE DIRECTORY ALREADY EXISTS.
    If the directory does not exist, you have to create the directory first.
    Unfortunately, CreateFile() / CreateFileEx() can OPEN directory handles, but you can't create directories using these APIs. But the API for creating directories does not have a FILE_FLAG_BACKUP_SEMANTICS flag, so the privileges are ignored, and you can't create the directory, if you don't have access because of the ACL of the parent directory.

    So, what are you going to do?

    One solution would be the following:
    * Open a handle to the parent directory
    * Backup the current security descriptor of the directory
    * Initialize a new security descriptor for the directory
    * Place your own SID into the security descriptor as owner (see above on how to get your SID, it's a lot of fun)
    * Initialize a new empty discretionary access control list
    * Initialize a new access control entry with your SID and a full-access permission
    * Place the access control entry into the discretionary access control list
    * Place the discretionary access control list into the security descriptor
    * Write the new security descriptor to the directory
    * Then CLOSE the handle and REOPEN the handle to the directory (with different access flags)

    Now you can create the file. After you've done that, undo the operations above. If the program gets killed while you're doing that, you have messed up the ACL of the parent directory (because this method is not transaction-safe).

    This is maybe the WORST API design I have ever seen.

    If you want to do the exactly same thing on, for example, Solaris, you just enable file_dac_write and file_dac_search privileges (from the permitted privilege set into the effective privilege set), create the directory using mkdir() and the file using creat().
    No need to write your own program, Solaris has utility programs to let you change the privileges of your shell. Even if you write your own program, privilege bracketing is much easier on Solaris than on NT, although the Solaris privilege model is much more powerful than the one of NT.

    =============

    There are numerous examples of that sort.

    This is why I am totally convinced that NT is a poorly designed operating system. There is no unified API. One system call works c

  53. Re:Linux is less secure than Windows by cant_get_a_good_nick · · Score: 3, Insightful

    1) Interestingly enough, the grandparent post was a Linux troll, and you responded about MS.

    2) Whether or not you like MS (and i don't really, though i grudgingly call them useful at times) they weren't really lucky. They seized opportunities others didn't see, capitalized on other's mistakes, relentlessly focussed on how to usurp their competitors and steal their customers, saw the value of network effects and also leverage their dominance in one area to another. None of it was real luck. Though he likes to think of himself as a technical genius (which i don't really) Bill Gates really is a business genius, a true shark amongst techs without business acumen, and used it to amass a huge fortune.

    MS strongarm tactics require them to have a market dominance in some field. At one time, MS was just another company, smaller than Lotus and others. Yet they grew to where they now can use strongarm tactics. They bought code from others, polished it, made it work together very well (to the exclusion of others) and make a lot of money from that.

    As far as marketing, their consumer marketing really sucks. Seeing an ad saying "WOW" really isn't making me want to buy Vista. The dinosaur ads really don't make me want to buy Office.

    If the Linux desktop is to succeed, they will need to take an honest look at how MS succeeded, and how to counter that. When MS saw a market dominated by a competitor (Lotus) they looked at every reason why someone would stay with Lotus and came up witha counter, when most Linux geeks look at MS market dominance, they say "luck" or "marketing" and just sit and wait for people to somehow realize Linux is technically better and then sit and wait until everybody switches.