Originally posted by: Nothinman
Write once, exploit everywhere?
Originally posted by: DnetMHZ
Originally posted by: Nothinman
Write once, exploit everywhere?
Quite convenient!
Originally posted by: drag
but.. but.. I though managed memory languages was suppose to keep me safe forever???
Originally posted by: cquark
Originally posted by: drag
but.. but.. I though managed memory languages was suppose to keep me safe forever???
Security is a process, not a product. However, getting rid of buffer overflows would eliminate over 80% of CERT alerts and the vast majority of the largest impact malware.
Originally posted by: drag
Heh.
Just remember too that buffer overflows are just a popular thing right now.
Why? Because all of the legacy code left in OS's today from years ago and the fact that buffer overflows can be detected thru brute force means. So it doesn't take any thought to find a buffer overflow flaw...
Buffer overflows are just a easy target, it doesn't mean that when you eliminate buffer overflows it will automaticly make your software more or less secure!
For every screw up with the memory stack that a programmer makes there are a thousand other flaws that exist in software. It may eliminate 80% of current exploits, but it doesn't mean that the amount of flaws that wil be discovered will decrease by any appreciable amount in the future.
Originally posted by: drag
My point wasn't about maximum numbers of potential problems that exist, I was talking about maximum numbers of potential problems that are FOUND by malicious coders/crackers/whatever.
Originally posted by: cquark
Originally posted by: drag
My point wasn't about maximum numbers of potential problems that exist, I was talking about maximum numbers of potential problems that are FOUND by malicious coders/crackers/whatever.
That may be true, but it's not a reason to not solve buffer overflow flaws. Getting to the state where most software is secure is going to be difficult and take time, as there's no single solution for security issues. While secure requirements and design are essential, there will nonetheless be flaws in implementations of the best of designs.
If you aren't doing low level OS/hardware coding, why take the additional risk of using C/C++ for the implementation? If you love C too much, check out Cyclone, C Cured, or D for a safer version of C.
Yes, the JVM has some problems, but compare it to downloading C/C++ code to your system. The attacker doesn't need any security flaws in that case; they already have access.
Originally posted by: n0cmonkey
OpenBSD's libc has some additional calls or whatever that help cut down on issues. One of the problems with using something like JAVA is that it is only "natively" available on a small number of platforms.
Originally posted by: cquark
Originally posted by: n0cmonkey
OpenBSD's libc has some additional calls or whatever that help cut down on issues. One of the problems with using something like JAVA is that it is only "natively" available on a small number of platforms.
OpenBSD is a good example of using multiple solutions: static code analysis to remove unsafe calls from the OS, randomization of the memory space to make exploits likely to fail, privilege separation, and much more.
I'm not sure what you mean by Java only being "natively" available on a small number of platforms though.
Originally posted by: n0cmonkey
If you go to sun's java site to download the JVM and whatnot, your selections are pretty slim. IIRC it's Linux x86, OS X, and Windows. No Linux on other archs, or *BSD on any arch.
So if you are looking for ultimate portability, you probably have to go with an interpretted language (which can often fail to the same problems compiled languages can) or C/C++.
That was my only point.![]()
Originally posted by: kamper
Originally posted by: n0cmonkey
If you go to sun's java site to download the JVM and whatnot, your selections are pretty slim. IIRC it's Linux x86, OS X, and Windows. No Linux on other archs, or *BSD on any arch.
So if you are looking for ultimate portability, you probably have to go with an interpretted language (which can often fail to the same problems compiled languages can) or C/C++.
That was my only point.![]()
Sun Java also runs on sparc architectures (duh!) and will obviously run on solaris systems. Given that, it can probably be modified to run on most unix systems without too much trouble. Of course, since it isn't open you might not find a Sun vm to do that but it is possible to implement your own. IBM makes one.
About the portablility thing, people misinterpret the idea of java being "so" portable. No one ever claimed you could get java to run on more systems than any other language. The point is that, once it has been compiled, you can run it on any system with a compatible virtual machine without recompiling. The original inspiration for java was a platform where different machines could share executable code over the internet. You see that with applets in browsers and to a smaller degree with some distributed systems.
Originally posted by: n0cmonkey
We're "stuck" with C/C++. There's just no way to get support for all of the various architectures/OSes out there without using something like C.
Originally posted by: cquark
Originally posted by: n0cmonkey
We're "stuck" with C/C++. There's just no way to get support for all of the various architectures/OSes out there without using something like C.
I'm not sure why you think that. Most popular languages are available for almost every platform. The GNU Compiler Collection, gcc, compiles code for all of its languages, which include Ada, FORTRAN, Java, and Objective C in addition to C/C++, for all of the dozens of platforms it supports. Well known non-gcc languages like Haskell, OCaml, Perl, Python, Ruby, Scheme, Smalltalk, and SML are available for pretty much any UNIX, Linux, and Windows. In fact, C source code is often less portable because of the language's small set of libraries, requires you to modify much of your code for different operating systems, hence projects like the Apache Portable Runtime to make C easy to port if it's coded against the APR API instead of the native OS API.
Originally posted by: n0cmonkey
Originally posted by: cquark
Originally posted by: n0cmonkey
We're "stuck" with C/C++. There's just no way to get support for all of the various architectures/OSes out there without using something like C.
I'm not sure why you think that. Most popular languages are available for almost every platform. The GNU Compiler Collection, gcc, compiles code for all of its languages, which include Ada, FORTRAN, Java, and Objective C in addition to C/C++, for all of the dozens of platforms it supports. Well known non-gcc languages like Haskell, OCaml, Perl, Python, Ruby, Scheme, Smalltalk, and SML are available for pretty much any UNIX, Linux, and Windows. In fact, C source code is often less portable because of the language's small set of libraries, requires you to modify much of your code for different operating systems, hence projects like the Apache Portable Runtime to make C easy to port if it's coded against the APR API instead of the native OS API.
Can you run that JAVA code without a JVM or anything?
I don't acknowledge Ada as a language because I would lose friends.
I don't think Fortran gets used a whole lot, and besides Apple no one uses objective c.
I don't believe most of those non-gcc languages are low level enough to code an OS in without losing a lot of performance.
