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.
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.
Some people argue that granting access on per-file basis (in for example, the mentioned email-client) is too much trouble, but in fact you can make a lot of it transparent: make the system-provided "file open" dialog double as a "grant" dialog. No UI changes are needed. Suddenly, the program can only access files that the user specifically chose.
Another nice trick is not to allow programs to be run without installing it with a system-provided "secure installer". This installer can then ask user to confirm the name of the application, and if the application name is always shown in the same place, the application can no longer fool anyone about it's identity.
There are tons of similar tweaks that don't need any real changes to how the system looks and feels to the user, but provide great security improvements.
Now, let's consider the troijan media player. It is installed, and in installer user confirms the application-suggested name "FutureAmp". From now on, "FutureAmp" is always known to be this particular program. When you want to play a media clip, you drag and drop files (which acts as a grant) or use an open dialog (which acts as a grant) or whatever. Now the media player can read the media files. It still can't read anything else.
Next, it needs to ask for a permission to access soundcard. Ok, so pop a dialog "FutureAmp wants to play sound through your soundcard." to which the user can say "ok". Playing sounds isn't very dangerous, so it can be non-dangerous looking dialog. It could be asked as part of the installation too, and it'll be remembered. FutureAmp still can't record sounds from the microphone. That's much more dangerous, and needs a warning sign in the dialog so as to alert the user that something might be wrong.
Ok, consider something went wrong anyway. Now, Joe calls a friend of his to fix his machine. His friend can now look at a list of permissions that have been granted to various applications, which is usually enough to identify which programs aren't doing what they should be doing. The permissions can then be revoked, and if necessary, the applications uninstalled. No reinstallation of the system, or tweaky cleaner applications are necessary.
Welcome to the world of security.