There are lots of other reasons why I think VMs are a good idea, but they're drifting off the topic of this thread... and I'm at work, and need to get actual work done now.

How would you deal with this problem (buffer overflow exploits) without segmentation?pini wrote: ... and also to provide a strong protection against side effects like buffer overflow exploits (executable stacks, and so on).
How VM solves this problem? Joe will have to decide which operations are allowed for each program, e.g, he should be able to know that something goes wrong if FutureAmp is trying to delete system files. A secure system should deny a process any access other than those explicitly granted by users. Of course, the users can use default settings (for example, programs is allowed full access to files in its own directory) to make life easier.Colonel Kernel wrote: But how does the system know that the app being installed is a FutureAmp player? How can the system tell the difference between FutureAmp and a virus scanner that needs permission to delete potentially any file that's infected? And how does it tell the difference between that virus scanner, and a malicious program that will delete pretty much whatever it can? If the system relies on Joe to tell it which is which, you're back to the same problem.
There are lots of other reasons why I think VMs are a good idea, but they're drifting off the topic of this thread... and I'm at work, and need to get actual work done now.![]()
Doesn't the NX bit solve that sufficiently well?sturmstiger wrote: How would you deal with this problem (buffer overflow exploits) without segmentation?
VMs per se don't solve this problem, but they do allow for the kind of stack-based permission check I talked about earlier. The point is that user-based permissions are insufficient, since users are able to (whether intentionally or not) run code that won't act in their own best interests. The idea is to assign permissions to code based on where it comes from, not based on what it says it is supposed to do.How VM solves this problem? Joe will have to decide which operations are allowed for each program, e.g, he should be able to know that something goes wrong if FutureAmp is trying to delete system files. A secure system should deny a process any access other than those explicitly granted by users. Of course, the users can use default settings (for example, programs is allowed full access to files in its own directory) to make life easier.
Maybe I'm missing something here... When Joe installs something, is he specifying that he expects that something to be a Media Player? Now we're back to square #1. If programs tell the system what class they belong to, and these programs can lie, then how is the system supposed to know what class to expect during any given installation?Pype.Clicker wrote: well, one potential idea is to distribute "profiles" of applications. Joe wouldn't be requested to do anything if the FutureAmp identifies itself as a "Media Player" and describes compatibly with what the system expects to be a "Media Player". All joe will see is "installing 'FutureAmp' media player to the system" ...
A trojan player will not match the 'Media Player' class, e.g. because it will attempt to have "program can read text document created by Joe", which doesn't belong to the description of a 'Media Player'. The system can identify that at installation time and warn Joe that "TrojanAmp require the right to 'read text documents created by Joe'. This may disclose private information to unknown tiers. You're suggested to abort installation now. Contact local administrator or support team for additionnal advice."
This is just a flaw in the security model of current mainstream operating systems. There is no reason why each program should run with the priviledges of the user.Colonel Kernel wrote:Example: Joe User has somehow been fooled into running some malicious code he downloaded (it happens... call Joe stupid, call him irresponsible, whatever -- you can't deny the power of social engineering and human stupidity). If this code is allowed to run as a plain old "unmanaged" app, then the only thing preventing it from accessing the file system is the identity of the user that it runs under. In this case, it was run (unwittingly) by Joe, so it's free to delete all Joe's files, much to Joe's chagrin.
I thought NX bit is not available on IA-32.Colonel Kernel wrote:Doesn't the NX bit solve that sufficiently well?sturmstiger wrote: How would you deal with this problem (buffer overflow exploits) without segmentation?
Not until recently. AMD introduced it last year, and Intel has recently added it to the P4 line... not sure which models. Maybe only the brand new ones with EM64T?sturmstiger wrote:I thought NX bit is not available on IA-32.
Indeed. Some of the UI ideas btw are not my own.. search the web and you might hit them. Can't remember where I actually got them so can't cite anything. Sorry about that.Colonel Kernel wrote: @mystran: I've heard about capability-based security. Is this what you're describing? Sounds interesting...
No. the program being installed should identifies the profile it wishes. Seeing "Installing a new document manager TrojanAmp" instead of "Installing a new Media Player TrojanAmp" should make Joe hickup and he should click "abort".When Joe installs something, is he specifying that he expects that something to be a Media Player? Now we're back to square #1
I was thinking at something even higher than this. There are user-owned files (pictures, texts, spreadsheets, ...) and program-owned files (preferences, working temporary files, logs, etc). An 'ordinary' program only has the ability to delete its own files. It cannot delete user's file even if ran by the user, and it certainly doesn't have the ability to delete programs (which even the user himself may not be entitled to do!).Crazed123 wrote: Now to TrojanAmp. If TrojanAmp tries to delete my whole filesystem, and comes upon say... FutureAmp, which I (the username for me) own, than before it can delete FutureAmp it must get the OK from FutureAmp's grant, which might check the application registry for authorized deleters