Carter Yagemann edited this page Jan 14, 2017 · 4 revisions

Intentio Ex Machina

This is the main repository for the Intentio Ex Machina (IEM) project.

About

IEM is a project started by Carter Yagemann and Dr. Wenliang Du to improve the security of Android. In short, IEM is a framework level hook that replaces the intent firewall in Android. This hook enables a normal app to serve as the system's intent firewall, which can then be easily developed and maintained. For more details, see the abstract and paper sections of this page.

Abstract

Android's intent framework facilitates binder based interprocess communication (IPC) and encourages application developers to utilize IPC in their applications with a frequency unseen in traditional desktop environments. The increased volume of IPC present in Android devices, coupled with intent's ability to implicitly find valid receivers for IPC, bring about new security challenges to the computing security landscape.

We propose Intentio Ex Machina (IEM), an access control solution for Android intent IPC security. IEM separates the logic for performing access control from where the intents are intercepted by placing an interface in the Android framework. This allows the access control logic to be placed inside a normal application and reached via the interface. The app, called a "user firewall", can then receive intents as they enter the system and inspect them. Not only can the user firewall allow or block intents, but it can even (within designed limitations) modify them. Since the user firewall runs as a normal user application, developers are free to create their own user firewall applications, which users can then download and enable. In this way, IEM creates a new genre of security application for Android systems allowing for creative and interactive approaches to active IPC defense.

Papers

Carter Yagemann and Wenliang Du. Intentio Ex Machina: Android Intent Access Control via an Extensible Application Hook. Appeared in Proceedings of the 21st European Symposium on Research in Computer Security (ESORICS'16). Heraklion, Crete, Greece. September 26-30, 2016.

What does IEM mean?

IEM is latin for intent of the machine. Ex Machina is an acronym meaning Extensible Mandatory Access Control Hook Integrating Normal Applications.

Terminology

Here are some terms used throughout the wiki that you should be aware of to avoid confusion:

  • Intent Firewall - A firewall which inspects intents (messages sent between apps in the Android system). The stock Android image has an intent firewall implemented in the framework layer. IEM replaces this intent firewall and allows normal apps to become the intent firewall.

  • IEM - Intentio Ex Machina. Refers specifically to the code which makes up the hook residing in the Android framework (system server). IEM is not to be confused with the user firewalls that use IEM.

  • User Firewall - A normal app that IEM can connect to via one of the app's services. Once bound, IEM communicates with the user firewall to allow the app to serve as the system's intent firewall.

Getting Started

Compile from Source

If you're interested in manually adding IEM to the AOSP source code, check out this guide.

Prebuilt Images

If instead your interest is playing with and building user firewalls, grab one of our prebuilt images of Android with IEM and check out the guide on how to develop your own user firewall.

Guides

License

Copyright (C) 2016 Intentio Ex Machina

Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at:

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.

This is a derivative work of work copyrighted by The Android Open Source Project. The parent license is preserved below.

Parent License

Copyright (C) 2012 The Android Open Source Project

Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at:

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.

You can’t perform that action at this time.
You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session.
Press h to open a hovercard with more details.