Top Banner
Ubuntu Application Confinement Or: How I learned to stop worrying and trust application developers Ubuntu Application Confinement Or: How I learned to stop worrying and trust application developers Ted Gould [email protected] @tedjgould SMU 3 Sept 2014
40

Ubuntu Application Confinement - gould.cx · Ubuntu Application Confinement Or: How I learned to stop worrying and trust application developers ... OOM Killer (want to include graphics

May 21, 2020

Download

Documents

dariahiddleston
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Ubuntu Application Confinement - gould.cx · Ubuntu Application Confinement Or: How I learned to stop worrying and trust application developers ... OOM Killer (want to include graphics

Ubuntu Application Confinement

Or: How I learned to stop worrying and trust application developers

Ubuntu Application Confinement

Or: How I learned to stop worrying and trust application developers

Ted [email protected]@tedjgouldSMU3 Sept 2014

Page 2: Ubuntu Application Confinement - gould.cx · Ubuntu Application Confinement Or: How I learned to stop worrying and trust application developers ... OOM Killer (want to include graphics

“I'm more worried about Murphy than I am Machievilli”

— Michi Henning

Page 3: Ubuntu Application Confinement - gould.cx · Ubuntu Application Confinement Or: How I learned to stop worrying and trust application developers ... OOM Killer (want to include graphics

IdealCracker

Page 4: Ubuntu Application Confinement - gould.cx · Ubuntu Application Confinement Or: How I learned to stop worrying and trust application developers ... OOM Killer (want to include graphics

Diminished User Experience

Page 5: Ubuntu Application Confinement - gould.cx · Ubuntu Application Confinement Or: How I learned to stop worrying and trust application developers ... OOM Killer (want to include graphics

© Andy Armstrong — CC-BY-SA — https://www.flickr.com/photos/andyarmstrong/190078748/

DeadBattery

Page 6: Ubuntu Application Confinement - gould.cx · Ubuntu Application Confinement Or: How I learned to stop worrying and trust application developers ... OOM Killer (want to include graphics

© Josh Hallett — CC-BY — https://www.flickr.com/photos/hyku/368912557/

DataProtection

Page 7: Ubuntu Application Confinement - gould.cx · Ubuntu Application Confinement Or: How I learned to stop worrying and trust application developers ... OOM Killer (want to include graphics

© Antti T. Nissinen — CC-BY — https://www.flickr.com/photos/54177777@N00/373864777/

PhysicalDestruction

Page 8: Ubuntu Application Confinement - gould.cx · Ubuntu Application Confinement Or: How I learned to stop worrying and trust application developers ... OOM Killer (want to include graphics

Phone Usage

http://hbr.org/2013/01/how-people-really-use-mobile/

Page 9: Ubuntu Application Confinement - gould.cx · Ubuntu Application Confinement Or: How I learned to stop worrying and trust application developers ... OOM Killer (want to include graphics

PID

Click Manifest

Desktop File

Helper Config

Unity Screen

AppArmor Profile

Upstart Instance

Page 10: Ubuntu Application Confinement - gould.cx · Ubuntu Application Confinement Or: How I learned to stop worrying and trust application developers ... OOM Killer (want to include graphics

App

App

Page 11: Ubuntu Application Confinement - gould.cx · Ubuntu Application Confinement Or: How I learned to stop worrying and trust application developers ... OOM Killer (want to include graphics

AppAppArmor Profile

Page 12: Ubuntu Application Confinement - gould.cx · Ubuntu Application Confinement Or: How I learned to stop worrying and trust application developers ... OOM Killer (want to include graphics

Syscalls

Linux Security Module

Process

Linux

Page 13: Ubuntu Application Confinement - gould.cx · Ubuntu Application Confinement Or: How I learned to stop worrying and trust application developers ... OOM Killer (want to include graphics

App Writable Area~/.cache/$(pkg)~/.local/share/$(pkg)~/.config/$(pkg)

App Readable Area/usr/share/icons//bin/sh/usr/bin/qmlscene

App Restricted Area~/.cache/$(other pkg)~/.local/share/address-book~/Documents/

Page 14: Ubuntu Application Confinement - gould.cx · Ubuntu Application Confinement Or: How I learned to stop worrying and trust application developers ... OOM Killer (want to include graphics

AppMirDBus

Page 15: Ubuntu Application Confinement - gould.cx · Ubuntu Application Confinement Or: How I learned to stop worrying and trust application developers ... OOM Killer (want to include graphics

Mir Server Mir Client

Graphics HW

Unity App

Page 16: Ubuntu Application Confinement - gould.cx · Ubuntu Application Confinement Or: How I learned to stop worrying and trust application developers ... OOM Killer (want to include graphics

App 1

App 2

Mir

Device Display

Page 17: Ubuntu Application Confinement - gould.cx · Ubuntu Application Confinement Or: How I learned to stop worrying and trust application developers ... OOM Killer (want to include graphics

ApplicationSwitcher

Page 18: Ubuntu Application Confinement - gould.cx · Ubuntu Application Confinement Or: How I learned to stop worrying and trust application developers ... OOM Killer (want to include graphics

Presentation Application Switcher

Page 19: Ubuntu Application Confinement - gould.cx · Ubuntu Application Confinement Or: How I learned to stop worrying and trust application developers ... OOM Killer (want to include graphics

Infinite App Illusion

Technical User

How many apps can I run?

1 GB RAM1 GHz Quad Core

Page 20: Ubuntu Application Confinement - gould.cx · Ubuntu Application Confinement Or: How I learned to stop worrying and trust application developers ... OOM Killer (want to include graphics

Active Application

Paused Apps (RAM)

Stopped Offline

Page 21: Ubuntu Application Confinement - gould.cx · Ubuntu Application Confinement Or: How I learned to stop worrying and trust application developers ... OOM Killer (want to include graphics

Stateless Stopped

Paused

Active

Page 22: Ubuntu Application Confinement - gould.cx · Ubuntu Application Confinement Or: How I learned to stop worrying and trust application developers ... OOM Killer (want to include graphics

Stateless Stopped

Paused

Active

UserInteractionOnly!!!

Page 23: Ubuntu Application Confinement - gould.cx · Ubuntu Application Confinement Or: How I learned to stop worrying and trust application developers ... OOM Killer (want to include graphics

Paused

Active

Stateless Stopped

Page 24: Ubuntu Application Confinement - gould.cx · Ubuntu Application Confinement Or: How I learned to stop worrying and trust application developers ... OOM Killer (want to include graphics

Stateless

Active

Stopped

Paused Linux KernelOOM Killer

(want to include graphics resources in the future)

Page 25: Ubuntu Application Confinement - gould.cx · Ubuntu Application Confinement Or: How I learned to stop worrying and trust application developers ... OOM Killer (want to include graphics

Stateless Stopped

Paused

Active

Page 26: Ubuntu Application Confinement - gould.cx · Ubuntu Application Confinement Or: How I learned to stop worrying and trust application developers ... OOM Killer (want to include graphics

What happens:● App is asked to save

state● Graphic buffers

grabbed for screenshot● Timeout, then all

processes are sent SIGSTOP

Paused

Active

Stateless Stopped

Page 27: Ubuntu Application Confinement - gould.cx · Ubuntu Application Confinement Or: How I learned to stop worrying and trust application developers ... OOM Killer (want to include graphics

What happens:● NOTHING!Stateless

Active

Stopped

Paused

Page 28: Ubuntu Application Confinement - gould.cx · Ubuntu Application Confinement Or: How I learned to stop worrying and trust application developers ... OOM Killer (want to include graphics

Positive:Ask to save state nicely via life cycleStop using processing when not asked

Negative:SIGSTOP appsSIGKILL apps on OOM killer

Page 29: Ubuntu Application Confinement - gould.cx · Ubuntu Application Confinement Or: How I learned to stop worrying and trust application developers ... OOM Killer (want to include graphics

Like

ly t

o b

e k

illed

Stopped App

Untrusted Helpers

Active Application

Unity

Page 30: Ubuntu Application Confinement - gould.cx · Ubuntu Application Confinement Or: How I learned to stop worrying and trust application developers ... OOM Killer (want to include graphics

AppMirDBus

Page 31: Ubuntu Application Confinement - gould.cx · Ubuntu Application Confinement Or: How I learned to stop worrying and trust application developers ... OOM Killer (want to include graphics

DBus

Service ServiceApp

Page 32: Ubuntu Application Confinement - gould.cx · Ubuntu Application Confinement Or: How I learned to stop worrying and trust application developers ... OOM Killer (want to include graphics

Header

Type Signal or Method

Destination :0.54 or “com.canonical.Unity”

Path /com/canonical/Unity/Dash

Interface com.canonical.unity.dash

Method ShowAttention

Payload [“foo”, “bar”]

DBus Message

Page 33: Ubuntu Application Confinement - gould.cx · Ubuntu Application Confinement Or: How I learned to stop worrying and trust application developers ... OOM Killer (want to include graphics

Service ServiceApp

AppArmor says NO!!!

Page 34: Ubuntu Application Confinement - gould.cx · Ubuntu Application Confinement Or: How I learned to stop worrying and trust application developers ... OOM Killer (want to include graphics

App

Location

Online Accounts

URL Dispatcher

Address Book

AppArmorTrustedConfined

DBus Trusted Helpers

Page 35: Ubuntu Application Confinement - gould.cx · Ubuntu Application Confinement Or: How I learned to stop worrying and trust application developers ... OOM Killer (want to include graphics

App

URL Dispatcher

Upstart

Browser

Unity

USERClick on a link Show the browser

Page 36: Ubuntu Application Confinement - gould.cx · Ubuntu Application Confinement Or: How I learned to stop worrying and trust application developers ... OOM Killer (want to include graphics

Request permission at time of use

Page 37: Ubuntu Application Confinement - gould.cx · Ubuntu Application Confinement Or: How I learned to stop worrying and trust application developers ... OOM Killer (want to include graphics

Ubuntu Applications are¹:● ELF Binaries● Link to C libs● Draw on an EGL Buffer

Review (1/2)

¹ This is really only from a confinement/lifecycle perspective, we have a really nice QML SDK that makes application author's lives much easier, you should use it if you can.

Page 38: Ubuntu Application Confinement - gould.cx · Ubuntu Application Confinement Or: How I learned to stop worrying and trust application developers ... OOM Killer (want to include graphics

Ubuntu Applications are:● Confined. By default the applications are

restricted from using a lot of functionality that might be expected from a traditional Linux user session.

● Managed. The application lifecycle works to keep the user in control of what is draining the battery and using resources.

● Have Friends. Trusted helpers provide ways to implement the functionality you need and work with confinement.

Review (2/2)

Page 39: Ubuntu Application Confinement - gould.cx · Ubuntu Application Confinement Or: How I learned to stop worrying and trust application developers ... OOM Killer (want to include graphics

Additional Info

http://www.ubuntu.com/phone

https://developer.ubuntu.com

https://wiki.ubuntu.com/Security/AppArmor

https://wiki.ubuntu.com/Mir

Page 40: Ubuntu Application Confinement - gould.cx · Ubuntu Application Confinement Or: How I learned to stop worrying and trust application developers ... OOM Killer (want to include graphics

© Stéfan — CC-BY-SA — https://www.flickr.com/photos/st3f4n/143623934