Slashdot Mirror


Classic Computer Vulnerability Analysis Revisited

redtail writes "The original authors of the classic vulnerability analysis of Multics have revisited the lessons learned almost thirty years later. Their new paper, along with the original vulnerability analysis is published here by IBM. The original vulnerability analysis inspired the self-inserting compiler back door described by Ken Thompson in his Turing Award Lecture. "

62 of 173 comments (clear)

  1. I see an opportunity for IBM by DaphunK · · Score: 2, Funny

    It would be a great opportunity for IBM to look back on its roots and develop another OS that is built for security from the ground up. Too bad the price for that would be ungodly. They could have a new OS platform that would be innovative, yet built on the ideas that got IBM to where they are today. I would honestly like to see ANOTHER alternative to Microsoft/UNIX/ and yes, Linux. Although I am a true believer in old school UNIX, I would like to see a new platform that is interesting, bullet-proof, and innovative. Anyone else? j

    --
    Step 1. Write code. Step 2. ??? Step 3. Profit!
    1. Re:I see an opportunity for IBM by baldass_newbie · · Score: 2

      Plan 9 from Bell Labs.

      Have fun.

      --
      The opposite of progress is congress
    2. Re:I see an opportunity for IBM by windex · · Score: 2

      They marketed to marketoids. Music/graphics/shit in BeOS was aimed at music/graphics people and not general purpose geeks. That was the problem, I always liked BeOS but the closed source BeOS after years of opensource *NIX clones proved to be the major downfall for me.

    3. Re:I see an opportunity for IBM by Monkelectric · · Score: 2
      Speaking as a music geek, BEOS never attracted a single high end music application (Cubase, Cakewalk, Logic etc).

      They had a real opportunity at the time to, audio under windows NT wasnt possible (crappy driver model/support), 95/98 was unstable (and dont get me started on macs). *EVERYONE* was looking for a new platform and the consensus was "if it works we'll buy it". If they had gotten any one of the 3 major sequencers on BEOS at this exact moment, they would ahve ruled the roost. But when Win2k came out and was stable, the window of opportunity closed, and thats how BEOS lost the music industry.

      --

      Religion is a gateway psychosis. -- Dave Foley

    4. Re:I see an opportunity for IBM by Zeinfeld · · Score: 3, Insightful
      Plan 9 [bell-labs.com] from Bell Labs.

      Plan-9 was not designed from the ground up and certainly not for security. Plan-9 had some features beyond the UNIX core but it was certainly not a clean sheet of paper job. The first version even came out with the typesetter and games programs that were long since obsolete under UNIX.

      The only O/S that I know of to be designed 'from the ground up' since VM-UNIX came out is Windows NT. UNIX was started before VMS but did not leave the research lab until after VMS launched. OS-X is simply a merger of NeXTStep and Mac-OS.

      Windows NT the operating system is designed from the ground up to meet the Orange book B2 security requirements. That statement means less than it might when you find out what B2 means, i.e. almost nothing relevant to the real world. A B2 O/S cannot be connected to any sort of network and remain B2 secure, still interested?

      The point is that design of the O/S is irrelevant unless the applications are also designed to be secure. There have been remarkably few security compromises of either UNIX or Windows NT, almost all the bug reports are in the layered applications. Take Outlook off Windows and Sendmail off Unix and the stats look oh so much better. Ten years ago I had a flame war with Eric Altman which later made it to the UNIX Hater's list, basically he said that he had finaly got a grip on the bugs and I pointed out that he still had no process and no clue when it came to security. Guess what, he still hasn't.

      There are plenty of good replacements for sendmail that do not introduce arbitrary Turing complete languages for arbitrary purposes. Unfortunately the UNIX world simply won't use them.

      There is a company working on a secure O/S, it requires secure hardware and is codenamed Palladium. You still want more security?

      --
      Looking for an Information Security student project suggestion?
      Try http://dotcrimeManifesto.com/
    5. Re:I see an opportunity for IBM by jbolden · · Score: 2

      I'm not a security expert but I believe there are configurations of Z-OS (formerly MVS / S390) which are B security.

    6. Re:I see an opportunity for IBM by Zeinfeld · · Score: 2
      Then by your own description Windows NT wasn't designed from the ground up, either. Bits of Windows 3.x and BSD protocol stacks made it into NT.

      The TCP/IP stack is not part of the NT kernel, nor is it a security subsystem. Microsoft used the reference code released in NET2 under BSD license.

      The design of the kernel is designed to support B2 level security without multi-ring security support in the processor.

      --
      Looking for an Information Security student project suggestion?
      Try http://dotcrimeManifesto.com/
    7. Re:I see an opportunity for IBM by Zeinfeld · · Score: 2
      "A B2 O/S cannot be connected to any sort of network and remain B2 secure, still interested?" Not true. The network connections simply must be part of the defined security architecture

      Which the Orange book gives no information on the analysis of.

      If you take Orange book seriously then a B2 computer can only talk to other B2 computers...

      --
      Looking for an Information Security student project suggestion?
      Try http://dotcrimeManifesto.com/
    8. Re:I see an opportunity for IBM by Zeinfeld · · Score: 2
      BULL$H!T Windows NT is NOT B2 compliant NT 4.0 is the latest NT version security ceritfied and it only rates C2 ( Without a floppy drive installed and all screen savers disabled )

      I said that they designed WNT to be B2 compliant, not that the B2 compliant configuration would be worth anything, VMS was not any use in B2 config either.

      It would be kinda suprising if anyone continued to work on Orange Book certification now it has been replaced by the Common Criteria.

      There is not a tremendous incentive for anyone to get CC certification since the USGovt does not enforce the requirement in most procurement

      --
      Looking for an Information Security student project suggestion?
      Try http://dotcrimeManifesto.com/
    9. Re:I see an opportunity for IBM by Zeinfeld · · Score: 2
      Again, not true. A B2 system can have single level devices and multilevel devices as described in the Orange Book. A single level connection to a untrusted system is quite simple and practical, and consistent with taking the Orange Book seriouisly. Yes, a multilevel connection would require labels and a basis for believing labels (e.g,. connection to another evaluated system). If you need help with the engineering of it, refer to the TNI.

      Yeah, yeah, if you take a legalistic view you can kinda sorta say you are compliant, perhaps but in the process you have pretty much demonstrated why B2 and Orange book mean very little.

      There is a reason the guidelines are generally considered obsolete.

      I remember reading through the guidelines with Ron Rivest and someone pointing out that the guidelines state that cryptographic enforcement mechanisms don't count. Ron summed up the response of the room by calling the requirement 'disappointing'.

      The point is that evaluation criteria are only a guide to the security of an O/S, particularly when ther criteria fail to consider major developments since they were written - e.g. networking.

      Windows NT was written to be B2 secure and does provide a pretty good foundation for secure applications, that has not prevented the terminally clueless from building what they have on top.

      --
      Looking for an Information Security student project suggestion?
      Try http://dotcrimeManifesto.com/
  2. Er, uh, not exactly by baldass_newbie · · Score: 3, Insightful

    With the growth of individual workstations and personal computers, developers concluded (incorrectly) that security was not as important on minicomputers or single-user computers. As the Internet grew, it became clear that even single-user computers needed security, but those ill-founded decisions continue to haunt us today.

    Big shock. AC does not read article. Weakly attempts a troll.

    --
    The opposite of progress is congress
  3. ...last few lines conclude it well by jukal · · Score: 2, Interesting
    ..."Unfortunately, the mainstream products of major vendors largely ignore these demonstrated technologies. In their defense most of the vendors would claim that the market-place is not prepared to pay for high assurance of security"...

    ..."In our opinion this is an unstable state of affairs. It is unthinkable that another thirty years will go by without one of the two occurrences: either there will be horrific cyber disasters that will deprive society of much of the value computers can provide, or the available technology will be delivered, and hopefully enhanced, in products that provide effective security. We sincerely hope it will the latter".

    Poll: what might they refer to with these "major vendors". Sadly, I think that is very true. These "major vendors" are digging a huge hole behind the average users by just kludging together cheap fixes when the system is fundamentally wrong. As result, many will be in deep - unkludgeable - %&t in some 5-7 years when the system collapses.

    1. Re:...last few lines conclude it well by jukal · · Score: 2
      > Nature just takes what is readily available
      > and changes it a bit to fit a new function...what you call kludge

      ...evolution...and nature...software business. Monopolies. End of of evolution. Luckily nature has survived of similar bottle-necks of evolution before, like an asteroid here and there. I actually agree with what you write, but you miss one big point - software business is - to a large extent - still driven by monopolies. And that enlarges the scope so that your evolution theory does not work anymore in this context.

    2. Re:...last few lines conclude it well by jukal · · Score: 2
      > In 5-7 year there will probably STILL be people u sing Windows 98SE, vendors are STILL selling them

      exactly. And the most amusing part is that the Windows 98 will be much more secure than the latest version. You fail to see my (very weak?) point: currently, every kludge added to windows for example - as an instant fix for a vulnerability - further weakens the package in the long run.

    3. Re:...last few lines conclude it well by Panaflex · · Score: 2

      I think someone did try this... it was called Pr1me and it was quite an interesting system... to say the least. Full hardware protection, with ACLs and very restricted socket system.

      I know that the BLM (Bureau of Land Management) used it. I worked on one at college.

      The "unix" compatibility mode was anything but though.. and the C compiler was written by a chimp.

      Pan

      --
      I said no... but I missed and it came out yes.
    4. Re:...last few lines conclude it well by jbolden · · Score: 2

      I have to disagree. I think the average user is getting pretty much the security : cost trade off they want. Any time a customer actually has to pay extra for security features you see pretty fast how little they care about security. Security in the sense of this paper, being resistant to knowledgeable determined insiders acting as hackers; could easy multiply by 5 the IT budget. That is would easily throw most companies annual budgets well into the red. Quite simply the data that would be stolen is likely worth far less than the cost of protecting it.

      People pay lip service about security because its without paying lip service they could get sued. But few agencies care. AFAIK from news stories things like FBI counter intellegence (which are about the most likely places imaginable for a knowledgeable determined attack) don't really have this level of security in place. Lets say 200 computers in the country are setup with that kind of top to bottom security; my guess is that these are the 200 which probably deserve top to bottom security.

  4. Re:Uhhh... Multics?! Yeah, there's a lesson there. by brunes69 · · Score: 2

    Multics was the Java of operating systems.

    What do you mean by this? Do you mean Multices was originally an operating system marketed for web interoperability but eventually found its foothold in the server application arena, and is now very sucessfull both in this regard as well as a web application platform? No? Didn't think so.

  5. Re:How little has changed by Theodore+Logan · · Score: 5, Interesting

    It's disappointing to see that a computer security paper written 30 years ago is still relevant today.

    Indeed it is. However, if I recall correctly (the link is slashdotted, so I cannot check) the whole point of the paper is that this is a security "hole" (actually, it's not really a hole in itself, but more of a way to ascertain that a hole is not discovered) that cannot be closed. It describes a way of inserting a trojan into a program without it being visible in the source; the bottom line being that you can never trust code you didn't write directly for the machine, from scratch, yourself. And if this sort of bug was implemeted at hardware microcode level, you could not even trust writing directly for the machine.

    That summary does not make the paper justice. Read it yourself when someone has posted a mirror. It's fascinating, simple, and absolutely brilliant.

    --

    "If you think education is expensive, try ignorance" - Derek Bok

  6. Re:Alan Turing? by Usquebaugh · · Score: 2

    There was an excellent docu film done on his life. http://us.imdb.com/Title?0115749

  7. Cat out of the bag! by General_Corto · · Score: 2

    This Research Report consists of two invited papers for the Classic Papers sectoin of the 18th Annual Computer Security Conference (ACSAC) to be held 9-13 December 2002 in Las Vegas, NV. The papers will be available on the web after the conference at http://www.acsac.org/

    Uh, it appears that they're already on the web.
  8. Re: Alan Turing? by Black+Parrot · · Score: 3, Informative


    > Is this award named after the A.I. theoretician?

    s/A.I. theoretician/computer scientist/

    He did have an influence on AI (cf. "Turing test") and on the more general concept of intelligence-as-computation (whether natural or artificial), but we generally think of him for his more fundamental contributions to computer science (cf. "Turing machine").

    --
    Sheesh, evil *and* a jerk. -- Jade
  9. Wrong. by Animats · · Score: 5, Informative
    Multics was one of the best operating systems ever in terms of reliablity and security. Go read the papers. People are still reusing basic ideas from Multics, like good CPU schedulers. Ease of use was mediocre, but then, this was ten years before DOS.

    The big problem was that Multics was tied to a specific model of General Electric computer with custom security hardware. GE built some good early time-sharing systems in the 1960s, but sold off their computing business to Honeywell in the 1970s. Honeywell never marketed the Multics product line seriously, because it competed with other product lines that sold in bigger volume.

    1. Re:Wrong. by Citizen+of+Earth · · Score: 2

      Multics was one of the best operating systems ever in terms of reliablity and security.

      If it never saw the light of day, then this statement is definitely true.

    2. Re: Wrong. by Animats · · Score: 2

      NSA ran DOCKMASTER, their external-access system, on MULTICS until 1998. The hardware was donated to the Computer Museum after its retirement.

  10. Re:Uhhh... Multics?! Yeah, there's a lesson there. by Brian_Ellenberger · · Score: 2

    >Isn't Multics the legendary debacle that never >turned into a usable product?

    Nope. Multics begat Unix. Thompson took many of the lessons learned from Multics and used them in writing Unix.

    Brian Ellenberger

  11. DoD use of Multics by Animats · · Score: 2

    DoD used Multics for a long, long time. DOCKMASTER, the NSA's public access Multics machine, ran until 1998. They couldn't find something secure enough to replace it. Finally, Honeywell just wouldn't supply parts any more.

  12. Self-inserting compiler. by Black+Parrot · · Score: 4, Interesting


    > The original vulnerability analysis inspired the self-inserting compiler back door described by Ken Thompson in his Turing Award Lecture.

    This is a nifty concept, but I remain skeptical that it would ever work in practice, at least for an open-source produce such as gcc.

    For starts, the compiler would have to detect that it was compiling itself. I.e., if you compile your favorite flight similator and the resulting program is a compiler rather than a flight simulator, the game is up already.

    But recognizing itself isn't going to be such an easy task. For instance, if it just compressed the input and compared the result to a saved target, you could easily defeat it by something as simple as changing the names of identifiers in the source code. (If the match was done on just part of the code, you would merely need to do global string substitutions on the identifiers.)

    So AFAICT, the trojan would have to identify itself by looking at the structure or semantics of the source file. But that's going to be tricky too. If I add a feature to the compiler or fix a bug in it, recompile, and discover that the feature is missing or the bug is still present, the game is up (after a bit of vigorous head-scratching). So it looks to me like the trojan must not only detect structure or semantics reliably, it must also limit detection to a very small block of code, to reduce the risk that it will be modified and break the trojan. That block of code must be specific enough that the trojan is never triggered when compiling other programs, and non-arbitrary enough that no one will re-write it in a zeal of code clean-up.

    And, as others have pointed out in the past, the trojan has no way of slipping past if you use another compiler to compile it with. Even with two untrusted compilers, you can get a clean compile so long as the two compilers don't support each others' trojans.

    --
    Sheesh, evil *and* a jerk. -- Jade
    1. Re:Self-inserting compiler. by The+Raven · · Score: 3, Insightful

      Skepticism is irrelevant... it *did* work. I believe it simply checked the name of the output file... if it was creating an output target called 'gcc' (or the equivalent, whatever it had back then) then it compiled in the hack. I do not know how robust it was, but from what I remember reading, it worked, so it was obviously robust enough.

      --
      "I will trust Google to 'do no evil' until the founders no longer run it." Hello Alphabet.
    2. Re:Self-inserting compiler. by Citizen+of+Earth · · Score: 2

      For starts, the compiler would have to detect that it was compiling itself. I.e., if you compile your favorite flight similator and the resulting program is a compiler rather than a flight simulator, the game is up already.

      I thought that he had made it so that if the compiler detected a certain special string in the source code that it inserted the trojan-horse code into the compiler-input stream. Not only is this extremely easy to implement, but it inserts the code at the right point in the compiler's source code even if other parts of the compiler are modified. And it should be pretty easy to make the trigger string unique and innocuous-looking.

      So AFAICT, the trojan would have to identify itself by looking at the structure or semantics of the source file.

      I believe that making a computer understand the semantics of a source file would first require solving the Halting Problem.

    3. Re: Self-inserting compiler. by Black+Parrot · · Score: 2


      > Skepticism is irrelevant... it *did* work. I believe it simply checked the name of the output file... if it was creating an output target called 'gcc' (or the equivalent, whatever it had back then) then it compiled in the hack. I do not know how robust it was, but from what I remember reading, it worked, so it was obviously robust enough.

      There's a big difference between working for a demo and working in the face of active countermeasures by a well-informed security administrator. In the example you cite, it would be sufficient for the SA to rename the source file before compiling it.

      Also, notice that I'm not offering "skepticism" as "proof" of anything. I am skeptical that it would work in practice for very long against even fairly trivial countermeasures, but you'll notice that part of my post was an analysis of what it would take to make it work in the face of countermeasures on the user's part.

      It looks to me like the basic requirement is "a very stable block of code that is only used in this compiler". And the result is probablistic, since we all know what "very stable block of code" means in practice. But presumably you could hide it fairly well if you could limit both detection and trojanized output to a single function, so that arbitrary changes elsewhere in the code would neither give a false trigger of the trojan nor disable it during ordinary maintenance. But even then there could be detections, e.g. if I decided to hack gcc to write a Pascal compiler and got stangeness in the output.

      What would be fun, as well as educational, would be to get volunteers to form a Red team and a Blue team, to see whether the Red team could design such a compiler that the Blue team couldn't trip up, and vice versa. I would probably bet on Blue, though that might depend on the details of the rules of the game.

      --
      Sheesh, evil *and* a jerk. -- Jade
    4. Re:Self-inserting compiler. by agurkan · · Score: 2, Informative

      I think you are missing the point. This is more of a theoretical argument than a real threat. I am pretty sure none of the compilers I had used had this kind of bug. It is a very clever and sophisticated attack. And of course, it is hard to implement. The very interesting conclusion is, opensourcing cannot help this kind of attack. This attack moves the broken link in security chain out of the source.

      It is not impossible though. Realize that if you are actually planning to attack someone by this method you must be a trusted party by your victim-to-be. You must be the party that provides the compiler, so you probably also have the manpower to implement this.

      Your suggestion of discovering this during a patch can be bypassed very simply by putting the trojan code into initialization or cleanup part of the code which nobody would dare to change because it would break compatibilities.Also probably we are talking about a well established compiler that comes as the standard compiler with the OS itself. Those compilers have huge areas which are (believed to be) bug-free so will typically never be patched.

      This kind of attack can be prevented though, by monitoring. "Secrets and Lies" by Bruce Schneier deals with this issue. If you cannot stop someone at the gates, you can always catch them inside :-)

      --
      ato
    5. Re: Self-inserting compiler. by The+Raven · · Score: 2

      Trojans and their ilk succeed when people do not know they exist. Do you go around renaming every source file? That's not as easy when you also have to rename every reference to it in the makefile and other related files. Making changes like the name of the output and input files can get annoying... why would you do it for EVERY compile you do just because MAYBE, just MAYBE, this compile contains a trojan based on the input filename.

      The answer is that you would not.

      Even technically savvy professionals can get taken in by a suitably complicated trojan. The saving grace usually is the fact that in this Internet age, we have instant communication disseminating known viruses, trojans, and hacks.

      But even a savvy individual who keeps up on the lists could be the first dupe. Targeted hacks aimed at a single company are even more difficult, since no mailing list will tell you about a hack that is going to be used nowhere else but on your network. A network administrator cannot scan the source of every file from every thing that gets inside their network... assuming the source is available, assuming it is not obfuscated.

      Would you refuse using a well known and useful tool just because you couldn't understand what one function did? What if that tool only activated and became a trojan if it detected YOUR domain on the local computer's reverse resolve?

      There is no security.

      --
      "I will trust Google to 'do no evil' until the founders no longer run it." Hello Alphabet.
    6. Re:Self-inserting compiler. by rgmoore · · Score: 2
      Whether one could get away with this in gcc (or whatever is questionable, but at some point every compile must be done with a binary.

      Not necessarily. It's possible to understand the code that goes into a compiler, so it's theoretically possible to step through a compilation manually by looking through the source of the compiler and the code it's trying to compile. Obviously your first target would be the simplest compiler you could write, which you could then use to compile something more complete like GCC.

      Alternately, you could write a new compiler in a different language and compile the source using that. There's no perfect guarantee that this will protect you against a Trojan, but it can get the risk low enough to be acceptable to anyone but the most diehard paranoid. After all, what's the chance that somebody's Trojaned Java (or Perl, or Visual Basic, or Pascal, or Emacs Lisp) so that it will created a Trojan when it's used to compile gcc using your home-built C compiler?

      --

      There's no point in questioning authority if you aren't going to listen to the answers.

    7. Re:Self-inserting compiler. by spitzak · · Score: 2
      You are talking about the wrong thing. Such an infected compiler, if told to compile the compiler, would make a new program that had the keyboard monitor in it, but the new program would not have the keyboard-monitor *INSERTING* code in it. Using the new compiler might transmit your keystrokes, but would not infect other programs.

      The trick is to recognize that you are compiling the compiler and insert the *inserting* code. You can also infect other programs (and copy this infecting code when compiling the compiler) but that is trivial once you figure out this hard part.

      I agree with the original poster that this is interesting in theory but impossible in practice. I would expect it to quickly fail in that either the inserted code becomes non-effective, or the resulting compiler does not work or crashes.

    8. Re: Self-inserting compiler. by Tony-A · · Score: 2

      There is no security.

      Sure there is. You do things so that the attacker has to pass everybody's scrutiny to get to you at the same time you compartmentalize everything so as to minimize potential damage.

      One cheap shot is to just download from a random mirror. From a different system.
      Another cheap shot is to NEVER blindly apply ANY purported patches. One uncrackable IBM system was cracked by leaving behind an official looking IBM patch tape.
      Yet another cheap shot is to never have just one vendor.

      A well-known and useful tool is extremely unlikely to be targeted at you. Something claiming to be that tool is much more likely, particularly if you can be targeted to receive the "special package".

    9. Re:Self-inserting compiler. by Kynde · · Score: 2

      So AFAICT, the trojan would have to identify itself by looking at the structure or semantics of the source file. But that's going to be tricky too.

      For a compiler? Really? Get real...

      That block of code must be specific enough that the trojan is never triggered when compiling other programs, and non-arbitrary enough that no one will re-write it in a zeal of code clean-up.

      You don't think that the GCC source base has enough such blocks that are relatively static as to uniquely identify it's GCC souce? Especially when the identifier is a compiler itself? Many Ansi C features haven't changed and for a grande part won't.

      How much do you know about programming to begin with? Did you read the article? Did you understand it? Who the fsck moderated you up?

      --
      1 Earth is warming, 2 It's us, 3 it's royally bad, 4 we need to take action NOW
    10. Re:Self-inserting compiler. by armb · · Score: 2

      > For instance, if it just compressed the input and compared the result to a saved target, you could easily defeat it by something as simple as changing the names of identifiers in the source code.

      _If_ you thought there was a Trojan in there to defeat. Until Ken's lecture nobody had thought of it (or if they had, they kept quiet).

      It wouldn't work _now_. Back when there was only one Unix, which had only one C compiler, used to compile the single login source, it could have worked. And apparently did.

      --
      rant
  13. Re:Alan Turing? by Theodore+Logan · · Score: 3, Interesting

    You learned about Turing from a Gibson novel? Is this a troll? I am suddenly overcome by a strange and unusual desire to yell something that usually confronts newbies in #linux on undernet when they want help installing Mandrake.

    But I will resist it. I don't know what you mean by "the subject," so I'll try different angles.

    For a biography, try Hodges' Alan Turing: The Enigma. I've not read it myself, but it has been very well received.

    For an intro to some of his most influential ideas, try Introduction to the Theory of Computation by Sipser (the easiest book on the subject I've come across, but might be too hard anyway if you have no background in math or CS).

    For his ideas on AI, see his original paper from 1950, which is now since long available online.

    Also, you could just do a Google search (and should! Resorting to this kind of off topic questions is usually only defensible when finding information is hard).

    --

    "If you think education is expensive, try ignorance" - Derek Bok

  14. Back doors by ceswiedler · · Score: 3, Interesting

    Ken's back door program is most definitely the most interesting hack ever devised, IMO. Read about it here.

    At the bottom, ESR claims that he "has heard two separate reports that suggest that the crocked login did make it out of Bell Labs, notably to BBN, and that it enabled at least one late-night login across the network by someone using the login name `kt'."

  15. Yes, AI among other things by xenocide2 · · Score: 2

    Turing was an old computer theoritician, responsible for most of the foundations of computing, like the concept of a language to describe an algorithm more complex than simple standard algebraic symbols, and the "Turing Machine." Of course there were others in the field, like von Neumann. He was also noted for being gay during which it was not only discriminated against, but outright illegal. Finally, I believe there's a statue in England of him eating an apple; noteworthy because he committed suicide by eating a poisoned apple. Quite a morbid statue, huh?

    Yes, he did come up with the original Turing Test but compared to his groundwork in Computers, the turing test is like a book of science fiction: somewhat innovative, but mostly inspired by other people's (Asimov) work.

    --
    I Browse at +4 Flamebait

    Open Source Sysadmin

  16. Stacks by Spazmania · · Score: 3, Insightful

    Third, stacks on the Multics processors grew in the positive direction, rather than the negative direction. This meant that if you actually accomplished a buffer overflow, you would be overwriting unused stack frames rather than your own return pointer, making exploitation much more difficult.

    How hard would this be to integrate this into GNU C and Linux? As I understand it, growing the heap from the bottom and growing the stack from the top with the yet unused space in the middle is just a matter of convention. How much trouble would it be to reverse the two so that the heap grows from the top and the stack from the bottom?

    Seems like it ought to be a simple patch to the most vexing class of security problems we all experience.

    --
    Moderating "-1, Disagree" is simple censorship. Have the guts to post your opinion.
    1. Re:Stacks by dbrower · · Score: 2
      two words: interrupts stacks.

      -dB

      --
      "It if was easy to do, we'd find someone cheaper than you to do it."
    2. Re:Stacks by Crispy+Critters · · Score: 2
      You don't need to reverse the stack direction. All the matters is that arrays/strings are written in the same direction the stack grows. In other words, leave the stack the same and write the strings backward. An overflow would run off the stack, and it could not overwrite the return address of the routine and force execution of malicious code. Instead, it would just run into empty space reserved for the stack.

      It can't be that easy, can it? (It wouldn't stop all possible stack smashing attacks, but many.)

  17. Programming in PL/I for Better Security by nutznboltz · · Score: 2, Funny
    1. Re:Programming in PL/I for Better Security by michael_cain · · Score: 2
      Never trust a compiler that eats your source file:
      105. The statement has been truncated.
      120. An identifier or constant has been truncated.
      149. Text was deleted from this statement.
      Ah, I remember writing PL/I extensively on IBM mainframes. IIRC, the language could not be represented using any of the grammar types available at that time (as an example of the difficulty, there were no reserved keywords, "if" could be a variable name, and some people used it that way). The ad hoc parser in IBM's compiler did not like to give up, so when it got desperate it would delete text until it reduced the offending statement to something that would parse.

      You had to declare all your variables in advance, and if the statement that got truncated happened to be a declaration, it would typically be followed by dozens of pages of error messages about using undeclared variables.

      I did get my 15 minutes of fame when I found an error in the optimizer that caused it to emit illegal op codes...

  18. Re:How little has changed by Qrlx · · Score: 2
    I don't think it's disapppointing. Sun Tzu's
    • Art of War
    is still relevant thousands of years later.

    Some people just hit the nail on the head, that's all.
  19. Wrong, boycott them by Billly+Gates · · Score: 2

    WHy? Well first off they are first vendor to introduce pallidium. The proof is in the pudding. Here are some nice crippled laptops, with the ultra secure TCPA security subsystem clearly advertised. ALso here are some nice netvista workstations with the TCPA security 2.0 subsystem all nicely installed for the RIAA oops I mean your convience.

    We all talk about HP comming out with drm pc's this christmass yet IBM has been selling them to the public for several months already! THe difference between the TCPA vs the Pallidium standard is that the TCPA has a protected boot sector. Meaning without a key you can not boot any other OS but WindowsXP. IBM is an enemy of Linux and should righteously be boycotted. They care more about the profits of software developers and hollywood then opensource.

  20. What I found interesting was the reference to the Holy Grail... A1.

    They referenced GEMSOS and a VMS variant as having reached that point. I thought it was only theoretical. Doesn't A1 cert require mathematical proof of security (as well as the usual auditing)?

    --
    Fascism starts when the efficiency of the government becomes more important than the rights of the people.
    1. Re:A1 by oldunixguy · · Score: 2, Interesting
      A1 requires a mathematical proof of the model, and also requires that you show conformance between the source code and the model. It's not easy, but it's not proving the code correct.

      To quote from http://www.radium.ncsc.mil/tpep/epl/epl-by-class.h tml: "The distinguishing feature of systems in this class is the analysis derived from formal design specification and verification techniques and the resulting high degree of assurance that the TCB is correctly implemented. This assurance is developmental in nature, starting with a formal model of the security policy and a formal top-level specification (FTLS) of the design. In keeping with the extensive design and development analysis of the TCB required of systems in class (A1), more stringent configuration management is required and procedures are established for securely distributing the system to sites. A system security administrator is supported."

      There haven't been many A1 systems: GEMSOS, SCOMP, and Boeing's MLS LAN are the only that completed (see http://www.radium.ncsc.mil/tpep/epl/historical.htm l for the full list of every product). The VAX project referred to in the paper never got the A1 approval, although it was clearly designed to meet the requirements.

  21. Security tools by cant_get_a_good_nick · · Score: 2

    One thing I find missing for C programming is a generally accepted security tool. In the rush to get things out the door with new and whizbang features, little is done on security tools. This is true of both commercial and OpenSource environments. People still use gets, people still take things from the environment unsafely. Taintperl is great, why isn't there TaintC or the equivalent? Why is there not a single tool that has a database of past exploits and knows how to detect at least a subset of these? yes, I realize that a program can never replace a good set of eyes looking at a program, but I also keep my compiler warnings cranked up high to detect "I'm a dumb-ass" mistakes. Why can't we hook this into the optimizer, since it must do lexical and data analysis anyway? Get these mistakes caught early before they get stuck in released in the wild code. Why is sling still such vapor? AFAIK, they still haven't updated lint to work with C++ code yet, we're still in someways in the sticks and stones era of tools for programming.

    And no flame wars on language choice, please.

  22. Check out KeyKOS and EROS by Wesley+Felter · · Score: 2

    KeyKOS solved a lot of the problems this paper describes in the 80s, and its descendent EROS is solving them today (and open source, too!).

    Unfortunately, in the 80s people were so infatuated with micros that secure timesharing wasn't a big market, and today people have been living with insecure systems so long they have stopped caring.

  23. Re: Alan Turing? by sielwolf · · Score: 2

    s/A.I. theoretician/computer scientist/

    actually, shouldn't that be s/A.I. theoretician/biologist\/cryptogropher\/computer scientist\/mathematician? I know he was originally a biologist by trade and then was better known for his Bletchley Park which was related to his CS theory but in a more Von Neumann sort of way.

    --
    What is music when you despise all sound?
  24. Price of security by 0x0d0a · · Score: 3, Interesting

    Unfortunately, the mainstream products of major vendors largely ignore these demonstrated technologies. In their defense most of the vendors would claim that the market-place is not prepared to pay for high price for high assurance of security

    Keep in mind that the price to pay for security is often not simply a higher initial purchase price.

    It can be in difficulty maintaining code. If you write something in Eiffel or SML, you avoid buffer overflow attacks on the stack, but you have a much smaller pool of programmers to hire from.

    It can be in performance. Java is the most popular "safe" (array and pointer deref checked) language, but you pay a severe performance hit when using Java over C/C++.

    It can be in convenience. I'm used to troubleshooting my system by just booting into single-user mode. If I was really secure, I'd have the bootloader passworded and an encrypted filesystem. But that's enough of an irritation to me that it's just not worth it.

    And it's very difficult to get a good, objective overview of security. Most security analysts don't really know all that much -- they're working off their own biases and feelings as well. They tend to try to sell companies on one-time-cost, backed-by-a-big-name products like firewalls or expensive IDS systems, because that's what companies want to hear. Also, *so* many products are so insecure that it's really painful and can feel futile to try to secure a system -- you might fix one problem with your device only to find that an IC manufacturer that's one of your vendors has some testing mode that breaks all your security guarantees.

    We need people willing to pay the price, a wider bed of knowledgeable security consultants, software written from scratch in a safe language, with strong constraints on it, components that one can build secure products out of, and a decade to put everything into place before we can really get secure products.

  25. Not that hard by devphil · · Score: 2
    I remain skeptical that it would ever work in practice, at least for an open-source produce such as gcc.

    The technique works fine and not difficult to do -- as long as it isn't GCC. And the rest of your post assumes that GCC is in use. (How many other compilers are out there which have source available (you mention changing contents of the source code) and are designed to be built by multiple arbitrary compilers (the GCC bootstrap mechanism)?

    Of those, how may are meant to be modified by the user? (Where "meant" == "it's possible".)

    So, reminding the rest of /. readers that most compilers in use are not gcc (unfortunately), we proceed:

    Compilers that detect special semantics would be easy, because you don't know what the semantics are, only I do. My compiler can perform some completely useless action with no side-effects (i.e., you can't detect it), and while compiling itself, would a) realize that its own code is being compiled, and b) throw out the useless actions, like any other optimizing compiler would.

    Remember that the special thing being detected doesn't have to be detectable at runtime, only at compile time. That opens the doors much wider.

    So, use GCC and prevent this trojan. :-) Otherwise, yes, it's very possible.

    --
    You cannot apply a technological solution to a sociological problem. (Edwards' Law)
  26. Facts, anyone? by bensonm · · Score: 3, Informative

    Multics had significant commercial success, both in secure timesharing applications in the US and in Europe. In the end, Honeywell placed its bets elsewhere, and Multics withered away. To those of us who worked in it, the sneering comments about 'top down debacle' are an ongoing demonstration of Gresham's law as it applies to information on the Internet. Ignorance is never, seemingly, an impediment to a smart-ass comment. Try using, perchance, a system in which all the command line arguments were consistent and predictable, and the command names were meaningful. Or, for that matter, a system in which the fundamental data access model was mapping into memory. Or in which there are more security domains than 'all-powerful-root' and 'everyone else'. Unix was born as an effort to get some approximation of Multics onto minicomputer hardware. It worked pretty well. The authors of Unix weren't too fond of our rather structured development process. They didn't need the security and reliability that we did all that work to try to get, and they did want heaps of functionality from unpaid grad students in no time flat. Over the years, many of Multics' ideas have slowly leaked back into Unix: dynamic linking, memory mapping, command args with names and not just letters, etc. No surprise: they were good ideas, and Unix has absorbed them as processor power, memory prices, and the slow pace of rediscovery of the wheel has allowed. There's quite a platoon of Multics alumni in the industry, applying the lessons we learned, good and bad, wherever we go.

  27. Re:I hate pdf by jbolden · · Score: 2

    Buy a bigger monitor. Heck I was on a laptop and it read fine.

  28. Re:Greek cosmology by jbolden · · Score: 2

    Actually the classical world was split if we were at the center of things or if the sun was. The real controversy for Kepler... was that the earth didn't orbit the sun in a perfect circle but rather in irregular ellipse. A perfect circle implied a divine hand, an irregular ellipse looks more like chance.

  29. What's IBM's position on Palladium, I wonder? by evbergen · · Score: 2

    From the introduction of the new paper: "However, the bottom line conclusion was that 'restructuring is essential' around a verifiable 'security kernel' before using Multics (or any other system) in an open environment (as in today's internet)".

    Paragraph 3: "We hypothesised that professional penetrators would find that distribution of malicious software would prove to be the attack of choice."

    Dropped in as a random sentence in paragraph 5, without much relation to the surrounding text: "Multics source code was readable by any user on the MIT site, much as source code for open source systems is generally available today."

    From the conclusion of the new paper: "In nearly thirty years since the report, it has been demonstrated that the technology direction that was speculative at the time can actually be implemented and provides an effective solution to the problem of malicious software employed by well-motivated professionals. [...] And customers have said they have never been offered mainstream commercial products that give them such a choice, so they are left with several ineffective solutions [...]".

    If you look at what is actually being demonstrated in the original paper, is that a monitor is needed that governs every memory access, without bypasses. The new paper admits that the VAX was the first to have this, and of course all modern MMUs do exactly that.

    So what's the big deal? Why was this published at this time? If you read carefully, you can correctly conclude that we don't need no steenkin' Palladium to get secure systems today; we already have all the hardware features needed. However, if you skim the new paper, you could be led to believe that Palladium is absolutely essential...

    --
    All generalizations are false, including this one. (Mark Twain)
    1. Re:What's IBM's position on Palladium, I wonder? by evbergen · · Score: 2

      Actually, x86's architecture for call gates and segment descriptors isn't that bad. To some extent, they are always needed; even the Linux kernel (which uses only paging, no segmentation) has to supply correct code, data and stack segment descriptors, and has provide interrupt gates (very similar to call gates) for the syscall and hardware interrupts.

      The only drawbacks is that you have only four rings and that it's non-portable as hell. But it's very well documented, and works, too.

      A setuid program is the exact software equivalent of a call gate, BTW. You need a certain privilege level to use the call gate, and after that, the routine uses the (possibly higher) privilege level set by the call gate. Exactly the same as having a setuid program that's executable only by a certain group. It's a very common (and useful) concept in both hard- and software.

      There's nothing fundamentally wrong with the concept of setuid programs on Unix; you use them to check untrusted input before submitting it to higher privileged programs that need to trust it. The problem is that a lot of setuid programs don't do their job of checking input properly, or worse, don't treat environment variables as untrusted input as well.

      (Aside: I've sometimes thought that Unix' way to connect applications to devices (read/write, seek, ioctl, that's it) is still so successful because it mimicks the way a CPU is connected to periferial devices in hardware: a data bus, an address bus and a few out-of-band control lines.)

      --
      All generalizations are false, including this one. (Mark Twain)
  30. Resource for the curious by bensonm · · Score: 2, Informative

    I hope not to get trolled for posting a reference that is probably not too hard to find on search engines. However, if any of the readers of this would like to see a much broader range of information on Multics, I can recommend:
    The reference web site for Multics history

  31. Stratus VOS is still around by alext · · Score: 2

    About 1980 Paul Green and (I think) other multicians started a successful fault-tolerant computer company called Stratus, an effective competitor to Tandem. VOS, the OS, was clearly inspired by Multics and had, or rather has, a consistency and reliability unparalleled in Unix.

    Its Multics traits include PL/1 as the systems programming language (actually a subset), transparent networking (attach to any device or file anywhere, rather like Apollo Domain), an ancient Emacs port (or clone?) and other useful features like a transactional file system with indexing.

    Lots of these expensive machines were sold to banks and other demanding users in the late 80s, there are plenty still around and indeed they're still available.

    The boxes were large and well engineered. Quality seemed to be taken very seriously since any crash was a major event - I only remember one OS crash bug in 6 years of working with them. Machines were connected via dialup to the service centre, and core dumps uploaded for analysis automatically (security settings permitting).

    All items of hardware, disks, CPU, memory, networking cards were duplicated - except the real-time clock (!) monitored for failures. Any failed device would be removed from service and could be replaced while the system was running - 'go on, pick a board to unplug' demos were always popular.

    Coming back to Unix after platform was a pretty rude shock. What horribly eccentric and buggy shell commands! Why does it keep crashing? In many ways I'd quite like to have one today, certainly something like Java would complement it quite nicely.

  32. Re:So wrong by devphil · · Score: 2
    How do you compile gcc? You build it from source using a binary of gcc and

    When will /. get it through its skull that you don't have to use GCC to build GCC? And in fact, that most people don't use GCC to build GCC?

    --
    You cannot apply a technological solution to a sociological problem. (Edwards' Law)