inktag : secure applications on an untrusted operating system

22
InkTag: Secure Applications on an Untrusted Operating system Paper from The University of Texas at Austin By: Hofmann, Owns S. Kim, Sangman Dunn, Alan M. Lee, Michael Z. Witchel, Emmett Presented by: Anwaar Alsulaiman

Upload: ishi

Post on 25-Feb-2016

125 views

Category:

Documents


0 download

DESCRIPTION

InkTag : Secure Applications on an Untrusted Operating system. Paper from The University of Texas at Austin By: Hofmann, Owns S. Kim, Sangman Dunn, Alan M. Lee, Michael Z. Witchel , Emmett Presented b y : Anwaar Alsulaiman. Outline. Introduction - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: InkTag : Secure Applications on an Untrusted Operating system

InkTag: Secure Applications on an Untrusted Operating system

Paper from The University of Texas at Austin By:

Hofmann, Owns S.Kim, SangmanDunn, Alan M. Lee, Michael Z. Witchel, Emmett

Presented by: Anwaar Alsulaiman

Page 2: InkTag : Secure Applications on an Untrusted Operating system

Outline• Introduction

• InkTag: secure applications on an untrusted OS

• Verifying OS behavior

• InkTag security guarantees

• Basic memory isolation mechanisms

• Paraverification

• Implementation & Evaluation

• Conclusion

Page 3: InkTag : Secure Applications on an Untrusted Operating system

Introduction

Page 4: InkTag : Secure Applications on an Untrusted Operating system

Do you trust your OS?

• The OS is the software root of trust on most

systems.

• The OS is a shared vulnerability.

• Root often has OS-level privilege.

Page 5: InkTag : Secure Applications on an Untrusted Operating system

What about the hypervisor?

• Hypervisors have become a common part of the

software stack.

• Hypervisors can be more trustworthy.

Page 6: InkTag : Secure Applications on an Untrusted Operating system

Why OS is still a problem?

• Users want trustworthy applications.

• Applications still must trust the OS.

• However, OS still provides all essential services.

Page 7: InkTag : Secure Applications on an Untrusted Operating system

Can the hypervisor improve this situation?

Page 8: InkTag : Secure Applications on an Untrusted Operating system

InkTag: secure applications on an untrusted OS

• A system in which secure, trust-worthy programs

can efficiently verify an untrusted, commodity OS’

behavior with a small degree of assistance from a

small trusted hypervisor.

Page 9: InkTag : Secure Applications on an Untrusted Operating system

Verifying OS behavior • Application and hypervisor

communicate.

• Hypervisor interposes on

low-level updates.

• Hypervisor requires deep OS

visibility into OS application.

App

OS

Hypervisor

Page table

Page 10: InkTag : Secure Applications on an Untrusted Operating system

InkTag security guarantees

• Control flow integrity: OS cannot change program counter, registers.

• Address space integrity: OS cannot read, modify application data.

• File I/O: applications access the desired files, privacy and integrity for

file data, Built on address space integrity.

• Process control: applications can fork(), exec().

• Access control and naming: Applications can defined access control

policies, use string filename.

• Consistency: OS-managed data and hypervisor-managed metadata

remain in sync.

Page 11: InkTag : Secure Applications on an Untrusted Operating system

Basic memory isolation mechanisms • Position of data in address space must match

application requests [mmap()].

• Ensure OS constructs the correct address space.

• Application maps file F at addr V.

• Interpose on page table updates.

• Match page table updates to application requests.

Page 12: InkTag : Secure Applications on an Untrusted Operating system

Challenges: why is this difficult?

• Interpreting low-level page table updates that OS can

construct valid, but confusing page tables, and order in which

updates are seen matters.

• Matching page table updates to application requests that

application and hypervisor must communicate complete

memory map.

• Application must validate pointer results returned from

kernel.

Page 13: InkTag : Secure Applications on an Untrusted Operating system
Page 14: InkTag : Secure Applications on an Untrusted Operating system

• Paraverification: an untrusted OS helping to verify

its own behavior: take inspiration from

paravirtualization, extensive use of existing

parvirtual interface.

• OS must participate, but information cannot be

trusted.

Page 15: InkTag : Secure Applications on an Untrusted Operating system

Paraverification: validating PTE updates

• Untrusted OS notifies hypervisor on page table updates.

• Application maintains memory mappings in an array of descriptors.

• Generate a token for each mapping: identifier describing requested

mapping,(HMAC(add,file,offset)), in implementation (integer index).

• Application memory listing protected from OS.

• Entries always allocated in defined virtual address range.

• Invalid entries marked.

Page 16: InkTag : Secure Applications on an Untrusted Operating system

Paraverification: validating syscall

results • OS returns tokens to application to assist

validation: application maintains linked list of

mapping, OS specifies previous entry, application

checks for overlap, and updates list.

Page 17: InkTag : Secure Applications on an Untrusted Operating system

How can the untrusted OS help?

• Guarantee sane address space updates.

• Expose internal OS information to hypervisor and

application.

Page 18: InkTag : Secure Applications on an Untrusted Operating system

Implementation & Evaluation

• Prototype built with KVM, qemu, uClibc

- ~3500 hypervisor LOC

- Modify libc to validate syscall results

• OS microbenchmarks

- LMBench

• Applications

- SPEC

- Apache

- DokuWiki

Page 19: InkTag : Secure Applications on an Untrusted Operating system

DokuWiki• PHP CGI binary with InkTag extensions.

• InkTag authentication module: use InkTag access control on

wiki page.

• Result: hypervisor-enforced security for a PHP application:

Integrity for all script files, Privacy and integrity for

application data.

• InkTag overhead: many short-lived processes, frequent

memory mapping, and 1.54x throughput slowdown.

Page 20: InkTag : Secure Applications on an Untrusted Operating system

Other InkTag applications’ overheads

LMBench

• Low-level OS microbenchmarks.

• 5x - 55x slowdown (for μs operations)

• High context switch latency.

SPEC

• CPU-bound applications.

• Most applications <= 1.03x.

• gcc - 1.14x; perlbench, h264href - 1.10x.

Apache

• Long-lived processes, infrequent MM activity.

• 1.02x throughput slowdown, 1.13x latency.

Page 21: InkTag : Secure Applications on an Untrusted Operating system

Conclusion • We can enforce trustworthy services from an

untrustworthy OS.

• Paraverification simplifies crucial isolation

mechanisms.

Page 22: InkTag : Secure Applications on an Untrusted Operating system

Reference:•http://www.cs.utexas.edu/~adunn/pubs/hofmann13asplos-inktag.pdf