QUIRE: : Lightweight Provenance for Smart Phone Operating Systems



Similar documents
Quire: Lightweight Provenance for Smart Phone Operating Systems

Quire: Lightweight Provenance for Smart Phone Operating Systems

Security Guide. BlackBerry Enterprise Service 12. for ios, Android, and Windows Phone. Version 12.0

RE-TRUST Design Alternatives on JVM

Analysis of advanced issues in mobile security in android operating system

Lecture 17: Mobile Computing Platforms: Android. Mythili Vutukuru CS 653 Spring 2014 March 24, Monday

ANDROID OPERATING SYSTEM

Example of Standard API

Overview of CS 282 & Android

WIND RIVER SECURE ANDROID CAPABILITY

WebView addjavascriptinterface Remote Code Execution 23/09/2013

Synthesis for Developing Apps on Mobile Platforms

Homeland Security Red Teaming

Tutorial on Smartphone Security

Cleaning Encrypted Traffic

Security Protocols HTTPS/ DNSSEC TLS. Internet (IPSEC) Network (802.1x) Application (HTTP,DNS) Transport (TCP/UDP) Transport (TCP/UDP) Internet (IP)

Introduction to Mobile Access Gateway Installation

Top Ten Web Attacks. Saumil Shah Net-Square. BlackHat Asia 2002, Singapore

Norton Mobile Privacy Notice

Android Fundamentals 1

Android Programming and Security

System Structures. Services Interface Structure

CrashPlan Security SECURITY CONTEXT TECHNOLOGY

Access Your Cisco Smart Storage Remotely Via WebDAV

A Perspective on the Evolution of Mobile Platform Security Architectures

BlackBerry Enterprise Service 10. Secure Work Space for ios and Android Version: Security Note

WatchGuard SSL v3.2 Update 1 Release Notes. Introduction. Windows 8 and 64-bit Internet Explorer Support. Supported Devices SSL 100 and 560

3. Broken Account and Session Management. 4. Cross-Site Scripting (XSS) Flaws. Web browsers execute code sent from websites. Account Management

Lecture Embedded System Security Dynamic Root of Trust and Trusted Execution

Redpaper Axel Buecker Kenny Chow Jenny Wong

Between Mutual Trust and Mutual Distrust: Practical Fine-grained Privilege Separation in Multithreaded Applications

Programming the Android Platform. Logistics

Linux Web Based VPN Connectivity Details and Instructions

Lecture 2 PLATFORM SECURITY IN ANDROID OS

The SSL device also supports the 64-bit Internet Explorer with new ActiveX loaders for Assessment, Abolishment, and the Access Client.

Building Blocks Towards a Trustworthy NFV Infrastructure

White Paper. Anywhere, Any Device File Access with IT in Control. Enterprise File Serving 2.0

I Control Your Code Attack Vectors Through the Eyes of Software-based Fault Isolation. Mathias Payer, ETH Zurich

11.1 inspectit inspectit

KASPERSKY FRAUD PREVENTION FOR ENDPOINTS

Chapter 7 Transport-Level Security

CompTIA Mobile App Security+ Certification Exam (ios Edition) Live exam IOS-001 Beta Exam IO1-001

The Case for SE Android. Stephen Smalley Trust Mechanisms (R2X) National Security Agency

Android Architecture. Alexandra Harrison & Jake Saxton

SECURITY ASPECTS OF OPEN SOURCE

Analysis of Secure Key Storage Solutions on Android

Device-Centric Authentication and WebCrypto

SkyRecon Cryptographic Module (SCM)

F-Secure Internet Security 2014 Data Transfer Declaration

Microcontrollers Deserve Protection Too

Mobile Performance Management Tools Prasanna Gawade, Infosys April 2014

Legal notices. Legal notices. For legal notices, see

2X SecureRemoteDesktop. Version 1.1

Digital Certificates (Public Key Infrastructure) Reshma Afshar Indiana State University

Security Guide. BlackBerry Enterprise Service 12. for BlackBerry. Version 12.0

Security in Android apps

Cloud Security Overview

Jonathan Worthington Scarborough Linux User Group

Blackbox Android. Breaking Enterprise Class Applications and Secure Containers. Marc Blanchou Mathew Solnik 10/13/

CRYPTOGRAPHY AS A SERVICE

Restraining Execution Environments

CELLS A Virtual Mobile Smartphone Architecture

Key & Data Storage on Mobile Devices

Defending Behind The Device Mobile Application Risks

Is Your SSL Website and Mobile App Really Secure?

Threat Model for Mobile Applications Security & Privacy

Access Control Fundamentals

Enterprise Application Security Workshop Series

Comprehensive Security for Internet-of-Things Devices With ARM TrustZone

Mobile Platform Security Architectures A perspective on their evolution

Mobility, Security and Trusted Identities: It s Right In The Palm of Your Hands. Ian Wills Country Manager, Entrust Datacard

SAMSUNG SMARTTV: HOW-TO TO CREATING INSECURE DEVICE IN TODAY S WORLD. Sergey Belov

Securing your Virtual Datacenter. Part 1: Preventing, Mitigating Privilege Escalation

Mobile Application Development Android

Security and Integrity of a Distributed File Storage in a Virtual Environment

elearning for Secure Application Development

Mobile Devices - An Introduction to the Android Operating Environment. Design, Architecture, and Performance Implications

Dashlane Security Whitepaper

The Secure Web Access Solution Includes:

Architecture and Data Flow Overview. BlackBerry Enterprise Service Version: Quick Reference

Securing sensitive data at Rest ProtectFile, ProtectDb and ProtectV. Nadav Elkabets Presale Consultant

Instructions for Configuring Your Browser Settings and Online Security FAQ s. ios8 Settings for iphone and ipad app

Web Security. Mahalingam Ramkumar

Overview. The Android operating system is like a cake consisting of various layers.

AdSplit: Separating smartphone advertising from applications

AppScope: Application Energy Metering Framework for Android Smartphones using Kernel Activity Monitoring

Chapter 2 System Structures

PERFORMANCE ENHANCEMENTS IN TreeAge Pro 2014 R1.0

Live Maps. for System Center Operations Manager 2007 R2 v Installation Guide

OPENID AUTHENTICATION SECURITY

Usable Crypto: Introducing minilock. Nadim Kobeissi HOPE X, NYC, 2014

ITG Software Engineering

Transcription:

QUIRE: : Lightweight Provenance for Smart Phone Operating Systems Dan S. Wallach Rice University Joint work with Mike Dietz, Yuliy Pisetsky, Shashi Shekhar, and Anhei Shu

Android's security is awesome in theory... and fails in practice.

Android differs from other OSs Key Point: Single User System

User separation Application separation One Linux User ID per App File system access control via UID Permissions bound to App UID

Application separation in theory... Private storage for apps Enforced at filesystem level Simple permission system Does the calling UID have permission to access this resource? Crash Insulation

but in practice Application separation is violated all the time

How things work now Third party libraries run in the same context as their host app And with the host's permissions And some third party libraries require the host ask for more permissions Problems Credential phishing, leaked application data, violation of least privilege, bugs

How things should work Third party libraries run in their own context as apps Apps offer services over Inter Process Communication (IPC) Channels

Two Main Goals 1. Protect apps from third party libraries - ex. Bugs, stolen data 2. Protect third party libraries from apps - ex. Click Fraud

Advertisements

A big deal to app developers Angry Birds is making over $1 million a month in ad revenue http://googleblog.blogspot.com/2010/12/great-advice-from-industry-experts-on.html

A big deal to the ad providers Click fraud cost Google $100 million a year http://adwords.blogspot.com/2007/02/invalid-clicks-googles-overall-numbers.html

The next step: Micro-payments http://blog.flurry.com/bid/48418/madison-avenue-and-the-land-of-make-believe

Motivation: Mobile Payment

Motivation: Mobile Payment Visual clues URL indicates this is PayPal SSL indicators

Motivation: Mobile Payment

Motivation: Mobile Payment No visual clues that this is PayPal Hosting app could spoof this dialog PayPal code running in same context as hosting app Hosting app needs internet permission to use this library

Our Approach: QUIRE Quire n. 2. A collection of leaves of parchment or paper, folded one within the other, in a manuscript or book.

Two methods Protect apps from third party libs Enforce application separation Augment IPC with call chain provenance Protect third party services from apps Data integrity from OS verified statements Trusted path for user input Attestation of on-phone state to remote endpoints

Trusted OS Mutually untrusting apps use OS to authenticate IPC Register shared secret between app and OS IPC messages signed with shared secret Authenticated later by OS service Network service creates RPC attestations

Caveat: Rooted phones can't be trusted

Principals On-Phone principal UID assigned at install time, unambiguous Off-Phone principal Can't use UID, only meaningful on phone Resolve UIDs to signing key or package name Signed by OS

MAC functions Built from crypto hash functions (e.g., HMAC-SHA1) Radically faster than digital signatures Require a shared secret Can only be verified if you know the secret Our approach: each app shares secret with the kernel Requires syscall to verify a MAC

Verifiable Statements Fundamental unit of authenticated communication Attached to objects passed over IPC Verified with a MAC over the principal's secret shared with the OS OS authentication service can verify a statement upon request

Contrast: Java stack inspection Same ABLP logic for the design Quoting chains to reduce privileges Annotating Java stack vs. Android IPCs Much lower overhead on Android Supports Android native code transparently Requires recompiling Android apps

Statement Creation DroidGame UID: 1001 Auth IPC Call(M) AdProvider UID: 1002 User Space OS Runtime Authority Manager UID: 1

Statement Creation DroidGame UID: 1001 Auth IPC Call(M) AdProvider UID: 1002 User Space Generate Shared Secret OS Runtime Authority Manager UID: 1

Statement Creation DroidGame UID: 1001 Auth IPC Call(M) AdProvider UID: 1002 User Space Generate Shared Secret OS Runtime KA Authority Manager UID: 1 1001 K A

Statement Creation DroidGame UID: 1001 MAC Key: K A AdProvider UID: 1002 User Space Auth IPC Call(M) Generate Shared Secret OS Runtime KA Authority Manager UID: 1 1001 K A

Statement Creation DroidGame UID: 1001 MAC Key: K A M S M = [1001, M, MAC(M) Ka ] AdProvider UID: 1002 User Space OS Runtime Auth IPC Call(M) Authority Manager UID: 1 1001 K A

Statement Creation User Space OS Runtime DroidGame UID: 1001 MAC Key: K A Auth IPC Call(M) M S M = [1001, M, MAC(M) Ka ] AdProvider UID: 1002 Authority Manager UID: 1 1001 K A

Statement Verification DroidGame UID: 1001 MAC Key: K A S M = [1001, M, MAC(M) Ka ] AdProvider UID: 1002 User Space OS Runtime Authority Manager UID: 1 1001 K A

Statement Verification DroidGame UID: 1001 MAC Key: K A S M = [1001, M, MAC(M) Ka ] AdProvider UID: 1002 User Space OS Runtime Verify(S M ) Authority Manager UID: 1 1001 K A

Statement Verification DroidGame UID: 1001 MAC Key: K A AdProvider UID: 1002 User Space OS Runtime Authority Manager UID: 1 Verify(S M ) If V M = MAC(M) Ka : T? F S M = [1001, M, MAC(M) Ka ] 1001 K A V M = MAC(M) Ka

Ad Example - Conclusions Sample policy Assume Ad Payout if AdProvider can verify a click originated from the OS OS UI Manager an app AdProvider app RPC to AdProvider.com

Example Confused Deputy Attacks Some App C protects the user's fine grained GPS location App B has permission to retrieve the GPS information from C, but App A does not A can escalate its privilege by triggering B to act on A's behalf

Augmented IPC An app can protect itself by quoting the app or call chain that called it I want access to the GPS, but only because A asked me to get it We use Abadi, Burrows, Lampson, and Plotkin (ABLP) Logic to reason about this

Key Point Quoting can only reduce an app's privilege level B says A says X means B told you don't just do it because you trust me, make sure you're okay with A as well. Insight: quoting strictly reduces privileges Therefore there's no need to encrypt or MAC the call chain (cheap!) MAC-based statements when necessary (also cheap)

Confused Deputy Example

Implementation 2300 lines of modifications to the Android 2.3 OS runtime libraries Main Components Authority Manager OS service IPC stub/proxy code generator Network Provider SHA-1 HMAC used for message authentication Implemented as an Intrinsic VM function to avoid Java / JNI slowdown

Experimental Methodology All experiments performed on Nexus One dev phone running Android 2.3 OS 1 Ghz ARM core 512 MB RAM 512 MB Flash Replacement of CPU intensive live wallpaper with static image to normalize CPU load Stock Android 2.3 Gingerbread from 12/23/10 Quire build based on same source with modifications

Microbenchmarks Purpose Analyze augmented IPC performance as it compares to stock Binder IPC calls Measure verifiable statement creation and verification Methodology Average of 10k operations with varying payload sizes and statement depths Issues: Garbage Collection, JIT Compiler, Imprecise timer

Augmented IPC Performance

Authenticated Statement Performance

Authenticated RPC Performance

Analysis Provenance carrying IPC results in 20% overhead vs. stock Android (no crypto, cheap) Verification and creation of crypto statements are also cheap (symmetric crypto) Microbenchmarks represent worst case scenario

Applications built with Quire PayBuddy Secure mobile payment system IPC call chain and data integrity communicated to remote endpoint Mobile Ad System Verifiable clicks from OS UI mechanisms to detect pop-overs

PayBuddy

Mobile Ad System

Mobile Ad System

Related Approaches Define sensitive resources and protect them Taint tracking Stack inspection Statically verify third party code Google's Native Client Java bytecode verification Process-like isolation Chrome, Gazelle

Taint Tracking: Overview Define taint sources Private app data, GPS info, IMEI, user input, etc. Define taint sinks Internet, Bluetooth, display... Propagate taint from a source to all objects that touch the source, repeat. If a tainted object ever hits a taint sink, yell!

Taint Tracking: Issues Requires annotation of application code Native code can strip taint Definition of a taint source? False positives

Static Analysis Google's Native Client Statically analyzes code to prevent buffer overflow, return-to-libc, and other shellcode attacks against x86 code Only works on x86 (for now), requires special libraries + recompilation of existing code

Process-like Separation Android and modern browsers closely related Mutually untrusting principals Third party code Application / Origin segregation Same class of problems Click fraud Credential phishing Ad driven services Notable: HTTP Origin header similar to our statements

Conclusions Quire: Adds provenance to IPC and RPC Enables true application separation + apps as services Useful to applications and third party services Minimizes coding effort Future directions Integrate static analysis? Foundation for web browser security?