An essential defensive security monitoring task is to determine and trace the flow of data through applications, OSs, and backend systems. TreeDroid is a security policy specification and enforcement framework for Android. It is based on tree automata and exploits taint tracking, a well known program monitoring technique. The results include fundamentals as well as tool support, implemented on top of the TaintDroid taint propagation tool for Android, originally developed at Penn State.

Running TreeDroid

Running TreeDroid involves the following steps:
  1. Make sure you have TaintDroid up and running.
  2. Download TreeDroid's source code and instructions.
  3. Apply the modifications required for TreeDroid to the interface with TaintDroid. That is, make certain taint-functions publicly available to client code. (Instructions are available in 'modifications.txt')
  4. Incorporate the Inliner in your Android-app compile chain. It should be executed between the javac and dx steps (since the inliner works on bytecode, and Android executes dex-code). A wrapper (wrapper.jar) can be used as an eclipse-builder (however, be aware that the wrapper is not carefully tested).
  5. Compile and run an application and policy of your choice, or one of our case studies.

Complementary Material

You can read about TreeDroid's details in

     TreeDroid: A Tree Automaton Based Approach to Enforcing Data Processing Policies
     Mads Dam, Gurvan Le Guernic, Andreas Lundblad
     Proceedings of the 2012 ACM SIGSAC Conference on Computer & Communications Security (CCS'12).

Furthermore, we have collected the policies of some case studies.