Building Trustworthy Systems on seL4 Ihor Kuz seL4 - - PowerPoint PPT Presentation

building trustworthy systems on sel4
SMART_READER_LITE
LIVE PREVIEW

Building Trustworthy Systems on seL4 Ihor Kuz seL4 - - PowerPoint PPT Presentation

Building Trustworthy Systems on seL4 Ihor Kuz seL4 Summit: 25 September 2019 www.data61.csiro.au Overview What is a Trustworthy System? What does


slide-1
SLIDE 1

www.data61.csiro.au ¡

Building ¡Trustworthy ¡Systems ¡on ¡ seL4 ¡

Ihor ¡Kuz ¡ seL4 ¡Summit: ¡25 ¡September ¡2019 ¡

slide-2
SLIDE 2

Overview ¡

  • What ¡is ¡a ¡Trustworthy ¡System? ¡
  • What ¡does ¡seL4 ¡provide? ¡
  • seL4 ¡kernel ¡
  • Other ¡seL4 ¡plaEorm ¡tools ¡
  • How ¡to ¡build ¡a ¡Trustworthy ¡System ¡
  • Steps ¡to ¡trustworthiness ¡
  • Example ¡

Building ¡Trustworthy ¡Systems ¡on ¡seL4 ¡| ¡Ihor ¡Kuz ¡ 2 ¡ ¡| ¡

slide-3
SLIDE 3

What ¡is ¡a ¡Trustworthy ¡System? ¡

A ¡system ¡where ¡the ¡the ¡Trusted ¡CompuNng ¡Base ¡is ¡ ¡ worthy ¡of ¡the ¡trust ¡put ¡into ¡it ¡

  • Trusted ¡CompuNng ¡Base ¡(TCB) ¡
  • Parts ¡of ¡system ¡that ¡must ¡be ¡trusted ¡to ¡maintain ¡safety ¡and ¡security ¡proper2es ¡
  • If ¡TCB ¡fails ¡then ¡safety ¡and ¡security ¡of ¡the ¡system ¡can ¡be ¡compromised ¡
  • Consists ¡of ¡trusted ¡(cri+cal) ¡components ¡
  • Trustworthiness ¡= ¡Confidence ¡that ¡components: ¡
  • Do ¡what ¡they ¡are ¡supposed ¡to ¡do ¡
  • Cannot ¡be ¡compromised ¡or ¡subverted ¡
  • Will ¡not ¡fail ¡
  • Assurance ¡
  • What ¡assurance ¡do ¡you ¡have ¡that ¡system ¡is ¡trustworthy? ¡
  • Ideal: ¡have ¡high-­‑assurance ¡that ¡all ¡trusted ¡components ¡are ¡trustworthy ¡

Building ¡Trustworthy ¡Systems ¡on ¡seL4 ¡| ¡Ihor ¡Kuz ¡ 3 ¡ ¡| ¡

slide-4
SLIDE 4

What ¡Does ¡seL4 ¡ Provide? ¡

Building ¡Trustworthy ¡Systems ¡on ¡seL4 ¡| ¡Ihor ¡Kuz ¡ 4 ¡ ¡| ¡

slide-5
SLIDE 5

5 ¡ ¡| ¡ Building ¡Trustworthy ¡Systems ¡on ¡seL4 ¡| ¡Ihor ¡Kuz ¡

slide-6
SLIDE 6

seL4 ¡Kernel ¡

  • FuncNonal ¡correctness ¡
  • The ¡implementaNon ¡does ¡exactly ¡what ¡the ¡specificaNon ¡says ¡
  • No ¡more, ¡no ¡less ¡
  • C ¡code, ¡Binary ¡ ¡
  • Security ¡properNes ¡
  • ConfidenNality ¡
  • Integrity ¡
  • Availability ¡
  • WCET ¡
  • Research ¡quality ¡
  • RestricNons ¡
  • AssumpNons ¡(including ¡hardware ¡model ¡and ¡correctness) ¡
  • Kernel ¡init ¡
  • PlaEorms ¡and ¡features ¡
  • Correct ¡user-­‑level ¡setup ¡

Building ¡Trustworthy ¡Systems ¡on ¡seL4 ¡| ¡Ihor ¡Kuz ¡ 6 ¡ ¡| ¡

slide-7
SLIDE 7

Other ¡seL4 ¡PlaCorm ¡Tools ¡

  • CapDL ¡ ¡
  • User-­‑level ¡iniNalisaNon ¡
  • Formally ¡verified ¡(in ¡progress) ¡
  • CAmkES ¡
  • Component ¡plaEorm ¡
  • Verified ¡(in ¡progress) ¡CAmkES ¡to ¡CapDL ¡mapping ¡ ¡
  • CapDL ¡has ¡same ¡security ¡(data ¡flow) ¡properNes ¡as ¡componenNsed ¡system ¡model ¡
  • Verified ¡glue ¡code ¡(in ¡progress) ¡
  • Cogent ¡programming ¡language ¡(in ¡progress) ¡
  • Type ¡system, ¡proof ¡generaNon ¡
  • CakeML ¡programming ¡language ¡support ¡(in ¡progress) ¡
  • Verified ¡compiler ¡
  • Rust ¡programming ¡language ¡support ¡
  • Type ¡system, ¡memory ¡safety ¡

Building ¡Trustworthy ¡Systems ¡on ¡seL4 ¡| ¡Ihor ¡Kuz ¡ 7 ¡ ¡| ¡

slide-8
SLIDE 8

What ¡(useful) ¡Guarantees ¡do ¡we ¡get? ¡

  • Integrity ¡
  • Requires ¡correct ¡user-­‑level ¡setup ¡
  • ConfidenNality ¡
  • Basic ¡confidenNality ¡(others ¡can’t ¡read ¡your ¡memory) ¡
  • Non-­‑interference ¡(specific ¡setup: ¡domain ¡scheduler, ¡strict ¡parNNoning) ¡
  • Time ¡protecNon ¡(in ¡progress) ¡
  • No ¡unintended ¡data ¡flows ¡
  • CAmkES ¡architecture ¡correctly ¡implemented ¡
  • Kernel ¡protecNons ¡can’t ¡be ¡bypassed ¡
  • No ¡bugs ¡(in ¡verified ¡part ¡& ¡assumpNons) ¡
  • No ¡kernel ¡vulnerabiliNes ¡to ¡exploit ¡to ¡bypass ¡Integrity, ¡confidenNality ¡guarantees ¡

Building ¡Trustworthy ¡Systems ¡on ¡seL4 ¡| ¡Ihor ¡Kuz ¡ 8 ¡ ¡| ¡

slide-9
SLIDE 9

How ¡to ¡Build ¡a ¡ Trustworthy ¡ System ¡

Building ¡Trustworthy ¡Systems ¡on ¡seL4 ¡| ¡Ihor ¡Kuz ¡ 9 ¡ ¡| ¡

slide-10
SLIDE 10

Steps ¡to ¡Trustworthiness ¡

  • 1. Determine ¡Safety ¡and/or ¡Security ¡Requirements ¡
  • 2. Architect ¡
  • 3. Implement ¡
  • 4. Validate ¡and ¡Verify ¡
  • 5. Repeat ¡
  • 6. Profit! ¡

Building ¡Trustworthy ¡Systems ¡on ¡seL4 ¡| ¡Ihor ¡Kuz ¡ 10 ¡ ¡| ¡

slide-11
SLIDE 11
  • 1. ¡Determining ¡Safety ¡Requirements ¡
  • FuncNonal ¡Safety ¡
  • FuncNons ¡required ¡for ¡system ¡safety ¡(to ¡miNgate ¡risks ¡and ¡hazards) ¡
  • Must ¡have ¡correct ¡execuNon ¡and ¡behaviour ¡
  • IdenNfy ¡Hazards ¡
  • Hazard ¡analysis ¡
  • Fault ¡Trees ¡
  • Determine ¡safety-­‑criNcal ¡funcNons ¡
  • To ¡control ¡hazards ¡
  • Address ¡failure ¡modes ¡(hardware, ¡sojware, ¡human, ¡system) ¡
  • AddiNonal ¡components ¡in ¡the ¡system ¡
  • FuncNonal ¡path ¡requirements ¡
  • FuncNonality ¡and ¡sub-­‑system ¡boundaries ¡

Building ¡Trustworthy ¡Systems ¡on ¡seL4 ¡| ¡Ihor ¡Kuz ¡ 11 ¡ ¡| ¡

slide-12
SLIDE 12
  • 1. ¡Determining ¡Security ¡Requirements ¡
  • Threat ¡modeling ¡
  • IdenNfy ¡threats ¡
  • Bad ¡things ¡that ¡can ¡happen ¡to ¡assets ¡
  • Discover ¡vulnerabiliNes ¡and ¡exploits ¡
  • Vulnerability: ¡weakness ¡in ¡system ¡or ¡code ¡
  • Exploit: ¡way ¡to ¡take ¡advantage ¡of ¡vulnerability ¡
  • Develop ¡akacks ¡
  • RealisaNon ¡of ¡a ¡threat ¡
  • Apply ¡exploits ¡
  • “Shall ¡not” ¡requirements ¡
  • Ensure ¡that ¡akacks ¡are ¡not ¡possible ¡

Building ¡Trustworthy ¡Systems ¡on ¡seL4 ¡| ¡Ihor ¡Kuz ¡ 12 ¡ ¡| ¡

slide-13
SLIDE 13

Building ¡Trustworthy ¡Systems ¡on ¡seL4 ¡| ¡Ihor ¡Kuz ¡ 13 ¡ ¡| ¡

Example: ¡Autonomous ¡UAV ¡ ¡

slide-14
SLIDE 14

Example: ¡Autonomous ¡UAV ¡

Building ¡Trustworthy ¡Systems ¡on ¡seL4 ¡| ¡Ihor ¡Kuz ¡ 14 ¡ ¡| ¡

slide-15
SLIDE 15

Building ¡Trustworthy ¡Systems ¡on ¡seL4 ¡| ¡Ihor ¡Kuz ¡ 15 ¡ ¡| ¡

Example: ¡Threat ¡Model: ¡VulnerabiliTes/Exploits ¡

  • CommunicaNon: ¡
  • VulnerabiliNes: ¡plain-­‑text, ¡poor ¡authenNcaNon, ¡poor ¡encrypNon, ¡poor ¡resource ¡management ¡ ¡
  • Exploits: ¡sniff ¡messages, ¡man-­‑in-­‑the-­‑middle, ¡spoof ¡messages, ¡replay ¡messages ¡, ¡DoS ¡
  • Data: ¡
  • VulnerabiliNes: ¡plain-­‑text, ¡poor ¡encrypNon, ¡poor ¡integrity ¡controls, ¡poor ¡isolaNon ¡
  • Exploits: ¡access ¡data ¡(read/write), ¡bypass ¡authenNcaNon/authorisaNon ¡
  • Code ¡
  • VulnerabiliNes: ¡poor ¡integrity ¡controls, ¡poor ¡isolaNon ¡
  • Exploits: ¡load ¡malicious ¡code, ¡modify ¡code, ¡read ¡code ¡
  • General ¡
  • VulnerabiliNes: ¡code ¡bugs, ¡poor ¡authenNcaNon, ¡poor ¡authorisaNon ¡
  • Exploits: ¡access ¡data, ¡modify ¡control ¡flow, ¡run ¡arbitrary ¡code, ¡crash, ¡bypass ¡authenNcaNon/

authorisaNon ¡

slide-16
SLIDE 16

Building ¡Trustworthy ¡Systems ¡on ¡seL4 ¡| ¡Ihor ¡Kuz ¡ 16 ¡ ¡| ¡

Example: ¡Threat ¡Model: ¡Some ¡AVacks ¡

  • Steal ¡Vehicle ¡
  • exploit ¡vulnerability ¡in ¡web ¡server ¡to ¡run ¡arbitrary ¡code ¡on ¡web ¡server, ¡ ¡
  • exploit ¡vulnerability ¡in ¡OS ¡to ¡run ¡code ¡in ¡privileged ¡mode, ¡ ¡
  • modify ¡code ¡to ¡cause ¡the ¡vehicle ¡to ¡fly ¡to ¡incorrect ¡locaNon, ¡ ¡
  • wait ¡for ¡it ¡there, ¡then ¡take ¡vehicle. ¡
  • Steal ¡collected ¡data ¡
  • exploit ¡vulnerability ¡in ¡GCS ¡component ¡by ¡sending ¡malicious ¡RF ¡communicaNon ¡ ¡
  • causing ¡it ¡to ¡run ¡arbitrary ¡code ¡in ¡the ¡GCS ¡component ¡
  • exploit ¡vulnerability ¡to ¡elevate ¡privilege ¡to ¡root, ¡
  • run ¡code ¡to ¡read ¡collected ¡mission ¡data, ¡
  • send ¡it ¡out ¡over ¡WiFi ¡to ¡third ¡party ¡
  • Steal ¡encrypNon ¡keys ¡
  • modify ¡3rd ¡party ¡library ¡used ¡in ¡GPS ¡component ¡to ¡include ¡specific ¡akack ¡code, ¡ ¡
  • exploit ¡vulnerability ¡to ¡access ¡storage ¡at ¡elevated ¡privilege ¡level, ¡
  • read ¡keys ¡from ¡storage, ¡
  • insert ¡them ¡into ¡web ¡server ¡content ¡files, ¡
  • monitor ¡web ¡server ¡and ¡read ¡keys ¡from ¡web ¡server ¡when ¡they ¡appear. ¡
slide-17
SLIDE 17
  • 2. ¡ArchitecTng: ¡Principles ¡
  • Minimal ¡TCB ¡
  • Minimise ¡number ¡of ¡trusted ¡components ¡
  • Minimise ¡size ¡of ¡trusted ¡components ¡
  • Minimise ¡akack ¡surface ¡
  • Minimise ¡(superfluous) ¡funcNonality ¡
  • Least ¡privilege ¡
  • Let ¡components ¡access ¡only ¡what ¡they ¡need ¡
  • SeparaNon ¡of ¡DuNes ¡
  • Defense ¡in ¡depth ¡
  • Number ¡of ¡exploits ¡needed ¡to ¡reach ¡a ¡goal ¡
  • AudiNng ¡

Building ¡Trustworthy ¡Systems ¡on ¡seL4 ¡| ¡Ihor ¡Kuz ¡ 17 ¡ ¡| ¡

slide-18
SLIDE 18
  • 2. ¡ArchitecTng: ¡PaVerns ¡
  • ParNNon ¡data ¡
  • Based ¡on ¡who ¡accesses ¡it ¡(e.g. ¡not ¡a ¡single ¡file-­‑system) ¡
  • Split ¡stacks ¡
  • Horizontal ¡(e.g. ¡FS ¡vs ¡storage, ¡network ¡stack ¡vs ¡ethernet) ¡
  • Split ¡data ¡flows ¡
  • VerNcal ¡(e.g. ¡separate ¡network ¡streams) ¡
  • Encrypt ¡data ¡
  • At ¡rest ¡(e.g. ¡collected ¡data) ¡
  • In ¡moNon ¡(e.g. ¡telemetry ¡data ¡sent ¡to ¡ground ¡staNon) ¡
  • Isolate ¡Cryptography ¡
  • Isolated ¡component ¡storing ¡and ¡accessing ¡keys ¡

Building ¡Trustworthy ¡Systems ¡on ¡seL4 ¡| ¡Ihor ¡Kuz ¡ 18 ¡ ¡| ¡

slide-19
SLIDE 19
  • 2. ¡ArchitecTng: ¡Mechanisms ¡
  • IsolaNon ¡
  • Decompose ¡system ¡into ¡components ¡
  • Use ¡seL4 ¡isolaNon ¡to ¡protect ¡components ¡from ¡each ¡other ¡
  • CriNcal ¡vs ¡non-­‑criNcal ¡components ¡
  • Filter ¡
  • SaniNse ¡inputs ¡and ¡outputs ¡
  • Monitor ¡
  • Monitor ¡component ¡outputs ¡
  • CorrecNve ¡acNon ¡when ¡there’s ¡a ¡problem ¡
  • StaNc ¡vs ¡dynamic ¡systems ¡
  • We ¡know ¡how ¡to ¡architect ¡staNc ¡systems ¡to ¡provide ¡isolaNon ¡guarantees ¡
  • Dynamic ¡systems ¡are ¡sNll ¡“Research ¡in ¡progress” ¡

Building ¡Trustworthy ¡Systems ¡on ¡seL4 ¡| ¡Ihor ¡Kuz ¡ 19 ¡ ¡| ¡

slide-20
SLIDE 20
  • 3. ¡ImplemenTng: ¡Cyber ¡Retrofit ¡

Building ¡Trustworthy ¡Systems ¡on ¡seL4 ¡| ¡Ihor ¡Kuz ¡ 20 ¡ ¡| ¡

First ¡put ¡all ¡of ¡the ¡exisNng ¡sojware ¡ inside ¡a ¡VM ¡running ¡on ¡seL4 ¡ ⬇︎ ¡ No ¡security ¡benefit ¡yet, ¡ ¡simply ¡showing ¡that ¡seL4 ¡runs ¡on ¡ the ¡target ¡plaEorm ¡and ¡that ¡all ¡the ¡ sojware ¡can ¡run ¡virtualised ¡ Then ¡start ¡pulling ¡some ¡trusted ¡ components ¡out ¡of ¡the ¡VM ¡to ¡run ¡ naNvely ¡on ¡seL4 ¡ ⬇︎ ¡ Some ¡security ¡benefit: ¡ ¡ compromise ¡in ¡VM ¡cannot ¡propagate ¡ to ¡trusted ¡component ¡ Full ¡security ¡architecture, ¡with ¡all ¡trusted ¡ components ¡running ¡as ¡a ¡seL4 ¡ components ¡ ⬇︎ ¡ Important ¡security ¡benefit: ¡ All ¡components ¡run ¡isolated ¡in ¡a ¡ container, ¡only ¡the ¡VM ¡is ¡sNll ¡vulnerable ¡

slide-21
SLIDE 21
  • 3. ¡ImplemenTng: ¡Harden ¡Components ¡
  • Good ¡Programming ¡
  • Power ¡of ¡10 ¡
  • Secure ¡coding ¡pracNces ¡
  • Tools ¡to ¡find ¡weaknesses ¡
  • StaNc ¡analysis ¡
  • Dynamic ¡analysis ¡
  • Good ¡Programming ¡Languages ¡
  • Rust, ¡Haskell, ¡etc. ¡
  • VerificaNon ¡
  • Manual ¡
  • Semi-­‑Automated ¡
  • Automated ¡

Building ¡Trustworthy ¡Systems ¡on ¡seL4 ¡| ¡Ihor ¡Kuz ¡ 21 ¡ ¡| ¡

slide-22
SLIDE 22
  • 4. ¡ValidaTng ¡and ¡Verifying ¡
  • Akack ¡and ¡fault ¡analysis ¡(‘threat ¡modeling’, ¡akack ¡trees, ¡fault ¡trees) ¡
  • TesNng ¡(including ¡Fuzzing) ¡
  • Sojware ¡assessment/audiNng ¡
  • Formal ¡verificaNon ¡of ¡components ¡
  • Theorem ¡prover ¡
  • Model ¡checking ¡
  • Generated ¡Proofs ¡(e.g. ¡CakeML, ¡CAmkES) ¡
  • Formal ¡verificaNon ¡of ¡architecture ¡
  • Architecture ¡level ¡ProperNes ¡
  • Architecture ¡implementaNon ¡
  • Infoflow ¡
  • Red ¡team ¡

Building ¡Trustworthy ¡Systems ¡on ¡seL4 ¡| ¡Ihor ¡Kuz ¡ 22 ¡ ¡| ¡

slide-23
SLIDE 23

Building ¡Trustworthy ¡Systems ¡on ¡seL4 ¡| ¡Ihor ¡Kuz ¡ 23 ¡ ¡| ¡

Example ¡ConTnued ¡ ¡

slide-24
SLIDE 24

Autonomous ¡UAV: ¡More ¡Secure ¡Architecture ¡

Building ¡Trustworthy ¡Systems ¡on ¡seL4 ¡| ¡Ihor ¡Kuz ¡ 24 ¡ ¡| ¡

slide-25
SLIDE 25

Building ¡Trustworthy ¡Systems ¡on ¡seL4 ¡| ¡Ihor ¡Kuz ¡ 25 ¡ ¡| ¡

Threat ¡Model: ¡Example ¡AVacks ¡

  • Steal ¡Vehicle ¡
  • exploit ¡vulnerability ¡in ¡web ¡server ¡to ¡run ¡arbitrary ¡code ¡on ¡web ¡server, ¡ ¡
  • exploit ¡vulnerability ¡in ¡OS ¡to ¡run ¡code ¡in ¡privileged ¡mode, ¡ ¡
  • modify ¡code ¡to ¡cause ¡the ¡vehicle ¡to ¡fly ¡to ¡incorrect ¡locaNon, ¡ ¡
  • wait ¡for ¡it ¡there, ¡then ¡take ¡vehicle. ¡
  • Steal ¡collected ¡data ¡
  • exploit ¡vulnerability ¡in ¡GCS ¡component ¡by ¡sending ¡malicious ¡RF ¡communicaNon ¡ ¡
  • causing ¡it ¡to ¡run ¡arbitrary ¡code ¡in ¡the ¡GCS ¡component, ¡
  • exploit ¡vulnerability ¡to ¡elevate ¡privilege ¡to ¡root, ¡
  • run ¡code ¡to ¡read ¡collected ¡mission ¡data, ¡
  • send ¡it ¡out ¡over ¡WiFi ¡to ¡third ¡party ¡
  • Steal ¡encrypNon ¡keys ¡
  • modify ¡3rd ¡party ¡library ¡used ¡in ¡GPS ¡component ¡to ¡include ¡specific ¡akack ¡code, ¡ ¡
  • exploit ¡vulnerability ¡to ¡access ¡storage ¡at ¡elevated ¡privilege ¡level, ¡
  • read ¡keys ¡from ¡storage, ¡
  • insert ¡them ¡into ¡web ¡server ¡content ¡files, ¡
  • monitor ¡web ¡server ¡and ¡read ¡keys ¡from ¡web ¡server ¡when ¡they ¡appear. ¡
slide-26
SLIDE 26

Building ¡Trustworthy ¡Systems ¡on ¡seL4 ¡| ¡Ihor ¡Kuz ¡ 26 ¡ ¡| ¡

Summary ¡

  • seL4 ¡is ¡not ¡magic ¡security ¡fairy ¡dust! ¡
  • 1. Requirements: ¡Understand ¡what ¡you ¡need ¡
  • 2. Architect: ¡Take ¡advantage ¡of ¡seL4’s ¡isolaNon ¡properNes ¡
  • 3. Implement: ¡ ¡
  • Cyber ¡Retrofit ¡
  • Harden ¡criNcal ¡components ¡(verificaNon!) ¡
  • 4. Verify ¡and ¡Validate: ¡Make ¡sure ¡you ¡got ¡it ¡right ¡
  • 5. Repeat ¡
  • Example: ¡Autonomous ¡UAV ¡