information flow control by program analysis
play

Information Flow Control by Program Analysis Markus Mller-Olm - PowerPoint PPT Presentation

Information Flow Control by Program Analysis Markus Mller-Olm Westflische Wilhelms-Universitt Mnster, Germany IFIP WG 2.2 Meeting Bordeaux, September 18-20, 2017 Context Work in progress from a joint project with Gregor Snelting


  1. Information Flow Control by Program Analysis Markus Müller-Olm Westfälische Wilhelms-Universität Münster, Germany IFIP WG 2.2 Meeting Bordeaux, September 18-20, 2017

  2. Context Work in progress from a joint project with Gregor Snelting (KIT) Information flow control for mobile components based on precise analysis of parallel programs Part of priority programme 1496 Reliably Secure Software Systems (RS 3 ) funded by DFG (German Research Foundation) Special thanks to Benedikt Nordhoff Markus Müller-Olm, WWU Münster IFIP WG 2.2 Meeting, Bordeaux, September 18-20, 2017 2

  3. What This Talk is About Theme: How can program analysis technology be used for information flow analysis? Program analysis: data-flow analysis, abstract interpretation, invariant generation, software model checking, ... Information flow analysis: see next slide Markus Müller-Olm, WWU Münster IFIP WG 2.2 Meeting, Bordeaux, September 18-20, 2017 3

  4. Information Flow: Example Free Email-App Start of App Ad-Server Contacts and Display Emails Reference scenarios of SPP RS 3 : l Certifying app store for Android l E-Voting systems l Software security for mobile devices Markus Müller-Olm, WWU Münster IFIP WG 2.2 Meeting, Bordeaux, September 18-20, 2017 4

  5. Non-Interference For simplicity: transformational terminating programs only Semantic setup: Var = Low ⨃ High Variables: S = { s | s : Var → Val } States: � p � : S → S Program semantics: Low-equivalence of states: s ~ L s ‘ : ⟺ s | Low = s ‘| Low Program p is called non-interferent f.a. s , s ‘ ÎS : iff s ~ L s ‘ ⟹ � p � ( s ) ~ L � p � ( s ‘) Markus Müller-Olm, WWU Münster IFIP WG 2.2 Meeting, Bordeaux, September 18-20, 2017 6

  6. Possibilistic Non-Interference Semantics of non-deterministic programs: � p � : S → 2 S Refinement: p ⊑ p ‘ "s : � p � ( s ) ⊆ � p ‘ � ( s ) : ⟺ Program p is called non-interferent f.a. s , s ‘ ÎS : iff s ~ L s ‘ ⟹ "rÎ � p � ( s ) : $r ‘ Î � p � ( s ‘) : r ~ L r ‘ Refinement Paradox: Non-interference is not preserved by refinement. Example: l := ? is non-interferent, its refinement l := h is not Reason: Non-interference is a „hyper-property“ Markus Müller-Olm, WWU Münster IFIP WG 2.2 Meeting, Bordeaux, September 18-20, 2017 7

  7. A Fundamental Problem l Abstraction is inherent to program analysis l However, as just observed (Refinement Paradox): Non-interference does not transfer from abstractions l Consequence: Program analysis cannot be applied directly to non-interference Markus Müller-Olm, WWU Münster IFIP WG 2.2 Meeting, Bordeaux, September 18-20, 2017 8

  8. Program Dependence Graphs (PDGs) l A structure known from program slicing l Nodes correspond to statements and conditions; we add artificial nodes for initial and final value of program variables l Edges capture data dependences and control dependences l PDGs can be applied for non-interference analysis Analysis principle: If there is no path in PDG from high input to low output then the program is non-interferent Markus Müller-Olm, WWU Münster IFIP WG 2.2 Meeting, Bordeaux, September 18-20, 2017 9

  9. Direct and Indirect Flows Direct flows: h:= 99 h? l := h l :=h captured by data dependence edges in PDG Indirect flows: if h>0 if h>0 then l := 0 else l := 1 l := 1 l := 0 captured by control dependence edges in PDG Markus Müller-Olm, WWU Münster IFIP WG 2.2 Meeting, Bordeaux, September 18-20, 2017 10

  10. Example 1 h? l:=h l:=h if l > 0 if l > 0 true false l :=1 l :=1 l :=0 l :=0 . l! There is a path from h? to l!. Hence: Program may be interferent Markus Müller-Olm, WWU Münster IFIP WG 2.2 Meeting, Bordeaux, September 18-20, 2017 11

  11. Example 2 h? l:=h l:=h l:=10 l:=10 if l > 0 if l > 0 true false l :=1 l :=0 l :=1 l :=0 . l! There is no path from h? to l!. Hence: Program is non-interferent Markus Müller-Olm, WWU Münster IFIP WG 2.2 Meeting, Bordeaux, September 18-20, 2017 12

  12. [Snelting] Path Conditions Goal: Improve precision of PDG-based dependence analysis Idea: For each path in the PDG indicating critical flow, read off a necessary condition for flow from the guards. If all these conditinos are unsatisfiable, there is no flow. Caveat: Requires SSA-form of programs Markus Müller-Olm, WWU Münster IFIP WG 2.2 Meeting, Bordeaux, September 18-20, 2017 13

  13. Path conditions improve precision of PDGs h? if flag true false if flag x :=7 x:= h x:=7 x:= h if (! flag) false true . l := x if (! flag) . . l := x PDG alone: false alarm + path conditions: OK l! flag ∧ ! flag Markus Müller-Olm, WWU Münster IFIP WG 2.2 Meeting, Bordeaux, September 18-20, 2017 14

  14. Further Improvements by Data Analysis Desirable h? if b true false if b x :=h y:= h goLeft :=true goLeft :=false x:=h y:= h if (goLeft) false true l := x l := y if (goLeft) . l := x. l := y PDG + path conditions: false alarm + invariant: OK l! For left path: b ∧ goLeft ∧ goLeft = ! b For right path: ! b ∧ ! goLeft ∧ goLeft = ! b 15

  15. The Show Stopper l :=true h? x :=false if h if h x :=false false true l :=true . . x:= true x:= true if (!x) false true . l := false if (!x) . . l := false PDG + path conditions + invariant: unsound l! h ∧ !x ∧ x = h Markus Müller-Olm, WWU Münster IFIP WG 2.2 Meeting, Bordeaux, September 18-20, 2017 16

  16. A Glimpse on Data Flow Slicing l Guiding intuition: flow happens along PDG paths only l Add new type of dependencies (data control dependencies) to avoid soundness problem l Define a notion of critical executions based on data-, control-, and data- control-dependencies l Set of critical executions is regular for a given program l Prove: if program has no critical execution, then program is non- interferent (Isabelle!) l Check absence of critical executions using data analyses (e.g. using CPAChecker [Beyer et al.]) l Note: Approach allows to check non-interference by safety analysis! Markus Müller-Olm, WWU Münster IFIP WG 2.2 Meeting, Bordeaux, September 18-20, 2017 17

  17. A Glimpse on Data Flow Slicing: Example ... DD(h) ¬ b b x :=h y:= h y:= h x :=h l:= x l:= y goLeft :=true goLeft :=false DD(h), DD(y) DD(x), DD(h) ... ... l := y l := x DD(h) DD(h) ¬ goLeft goLeft DD(l) DD(l) ... ... DD(y) DD(x) l := y l := x Program Critical executions automaton Markus Müller-Olm, WWU Münster IFIP WG 2.2 Meeting, Bordeaux, September 18-20, 2017 18

  18. A Glimpse on Data Flow Slicing: Example ⊤ ¬ b b ⊤ ⊤ y:= h x :=h goLeft :=true goLeft :=false true false ¬ goLeft ¬ goLeft goLeft goLeft ⊥ ⊥ false true l := y l := x l := y l := x ⊥ false ⊥ true Product of program and automaton Constant propagation on product proves absence of critical information flow Markus Müller-Olm, WWU Münster IFIP WG 2.2 Meeting, Bordeaux, September 18-20, 2017 19

  19. Discussion Approach for non-interference analysis by classic program analysis Alternative approaches: l Self-composition l Hyper-logics Further work in our project: l Use DPNs to help PDG-based non-interference analysis of parallel programs based on LSOD l Use DPNs to help type-based non-interference analysis of parallel programs Markus Müller-Olm, WWU Münster IFIP WG 2.2 Meeting, Bordeaux, September 18-20, 2017 22

Download Presentation
Download Policy: The content available on the website is offered to you 'AS IS' for your personal information and use only. It cannot be commercialized, licensed, or distributed on other websites without prior consent from the author. To download a presentation, simply click this link. If you encounter any difficulties during the download process, it's possible that the publisher has removed the file from their server.

Recommend


More recommend