Application Confinement

If we increase the number of application from third parties available to end users then the number of applications that can harm the user will increase.

Classification

Intent

We can split apps in to two categories based on the intent of the developer:

  1. Malicious, either to damage the machine, use its resources, or transmitting the users data elsewhere due to malicious intent on the part of the application developer.
  2. Inadvertent, doing the same things as above but due to unexpected bugs or compromise of the application.

The effects are similar, but the distinction is useful, as the developers of the apps in the latter case are likely to be willing to confine their applications according to expected functionality, whereas the former developers will attempt to circumvent any protections, and not voluntarily allow their app to be confined such that they can't achieve their aims.

Aim

We wish to build a system that reduces the threat to Ubuntu users due to applications, so that they can be confident in using their system, and don't have to spend time cleaning up after malware.

This protection can take two forms:

  1. Protection from malicious apps. If an application is confined such that it is unable to do the malicious thing that it is designed to then it is protected.
  2. Protection from inadvertently dangerous apps. If the application is contained such that it can't do things that are not necessary for its desired functionality then the chance of problems is reduced.

Assumptions

Design

Confining non-malicious apps

In the case where the developer isn't malicious, we can ask for their assistance in confining their application.

They should be able to choose a list of capabilities that their app requires, and anything not chosen should be denied to the app. They can then test that everything still works ok under this policy before pushing the app for review.

In order to encourage people to do this it should cause their apps to be reviewed quicker. In the extreme case of a "deny everything" policy their app should move immediately through the process as possible harm to the system is very limited. The exact details of what should trigger more review are still to be worked out.

Confining malicious apps

Given the the application author is malicious they won't choose to remove capabilities from their applications that are needed in order to perform the intended task.

However, we can use the above system as a way to help point out the apps that need more review. If an app needs something that doesn't seem necessary from its stated purpose then it's ripe for review.

jdstrand: The confinement policy tools should make it easy for reviewers to apply policy to software that is submitted without a confinement policy. The act of using the policy tools and examining their output can provide clues to the nature of the application (at an easier to understand level than strace or the like). If the application runs as intended with the policy used in the review process, it can be applied to the packaging as part of the acceptance process.

Unanswered Questions

Implementation

There are two technologies that would be particularly interesting for an implementation of ideas like these:

However a specific implementation plan is not included here, as the design is not fleshed out sufficiently.

AppConfinement (last edited 2012-02-22 20:06:06 by jdstrand)