einfu¨hrung funktionsweise von blast praxis?i12engelc/lehre/seminarss07/folien/dueck/blast.pdf ·...

72
Einf¨ uhrung Funktionsweise von BLAST Praxis? BLAST David Dueck 12.07.2007 David Dueck BLAST

Upload: vandieu

Post on 06-Mar-2018

216 views

Category:

Documents


2 download

TRANSCRIPT

Page 1: Einfu¨hrung Funktionsweise von BLAST Praxis?i12engelc/lehre/seminarSS07/folien/dueck/BLAST.pdf · Einfu¨hrung Funktionsweise von BLAST Praxis? Was ist BLAST? Berkeley Lazy Abstraction

EinfuhrungFunktionsweise von BLAST

Praxis?

BLAST

David Dueck

12.07.2007

David Dueck BLAST

Page 2: Einfu¨hrung Funktionsweise von BLAST Praxis?i12engelc/lehre/seminarSS07/folien/dueck/BLAST.pdf · Einfu¨hrung Funktionsweise von BLAST Praxis? Was ist BLAST? Berkeley Lazy Abstraction

EinfuhrungFunktionsweise von BLAST

Praxis?

Was ist BLAST?

◮ Berkeley Lazy Abstraction Software Verification Tool

◮ statische Prufung von “Sicherheitseigenschaften”

David Dueck BLAST

Page 3: Einfu¨hrung Funktionsweise von BLAST Praxis?i12engelc/lehre/seminarSS07/folien/dueck/BLAST.pdf · Einfu¨hrung Funktionsweise von BLAST Praxis? Was ist BLAST? Berkeley Lazy Abstraction

EinfuhrungFunktionsweise von BLAST

Praxis?

Welches Problem lost BLAST?

Einfachste Form dieser Sicherheitseigenschaften Assertions:

◮ Laufzeitchecks

David Dueck BLAST

Page 4: Einfu¨hrung Funktionsweise von BLAST Praxis?i12engelc/lehre/seminarSS07/folien/dueck/BLAST.pdf · Einfu¨hrung Funktionsweise von BLAST Praxis? Was ist BLAST? Berkeley Lazy Abstraction

EinfuhrungFunktionsweise von BLAST

Praxis?

Welches Problem lost BLAST?

Einfachste Form dieser Sicherheitseigenschaften Assertions:

◮ Laufzeitchecks

◮ Programmierer fugt assert(e) in den Code ein

David Dueck BLAST

Page 5: Einfu¨hrung Funktionsweise von BLAST Praxis?i12engelc/lehre/seminarSS07/folien/dueck/BLAST.pdf · Einfu¨hrung Funktionsweise von BLAST Praxis? Was ist BLAST? Berkeley Lazy Abstraction

EinfuhrungFunktionsweise von BLAST

Praxis?

Welches Problem lost BLAST?

Einfachste Form dieser Sicherheitseigenschaften Assertions:

◮ Laufzeitchecks

◮ Programmierer fugt assert(e) in den Code ein

◮ Wenn e zur Laufzeit zu 0 auswertet ⇒ Programmabbruch

David Dueck BLAST

Page 6: Einfu¨hrung Funktionsweise von BLAST Praxis?i12engelc/lehre/seminarSS07/folien/dueck/BLAST.pdf · Einfu¨hrung Funktionsweise von BLAST Praxis? Was ist BLAST? Berkeley Lazy Abstraction

EinfuhrungFunktionsweise von BLAST

Praxis?

Welches Problem lost BLAST?

Einfachste Form dieser Sicherheitseigenschaften Assertions:

◮ Laufzeitchecks

◮ Programmierer fugt assert(e) in den Code ein

◮ Wenn e zur Laufzeit zu 0 auswertet ⇒ Programmabbruch

◮ Keine Fehlerabfrage bzw. Fehlerbehandlung. SpezifizierenInvarianten

David Dueck BLAST

Page 7: Einfu¨hrung Funktionsweise von BLAST Praxis?i12engelc/lehre/seminarSS07/folien/dueck/BLAST.pdf · Einfu¨hrung Funktionsweise von BLAST Praxis? Was ist BLAST? Berkeley Lazy Abstraction

EinfuhrungFunktionsweise von BLAST

Praxis?

Welches Problem lost BLAST?

Einfachste Form dieser Sicherheitseigenschaften Assertions:

◮ Laufzeitchecks

◮ Programmierer fugt assert(e) in den Code ein

◮ Wenn e zur Laufzeit zu 0 auswertet ⇒ Programmabbruch

◮ Keine Fehlerabfrage bzw. Fehlerbehandlung. SpezifizierenInvarianten

◮ Durfen keine Seiteneffekte enthalten

David Dueck BLAST

Page 8: Einfu¨hrung Funktionsweise von BLAST Praxis?i12engelc/lehre/seminarSS07/folien/dueck/BLAST.pdf · Einfu¨hrung Funktionsweise von BLAST Praxis? Was ist BLAST? Berkeley Lazy Abstraction

EinfuhrungFunktionsweise von BLAST

Praxis?

Welches Problem lost BLAST?

Einfachste Form dieser Sicherheitseigenschaften Assertions:

◮ Laufzeitchecks

◮ Programmierer fugt assert(e) in den Code ein

◮ Wenn e zur Laufzeit zu 0 auswertet ⇒ Programmabbruch

◮ Keine Fehlerabfrage bzw. Fehlerbehandlung. SpezifizierenInvarianten

◮ Durfen keine Seiteneffekte enthalten

◮ Meist benutzt wahrend der Entwicklung, entfernt vor derAuslieferung

David Dueck BLAST

Page 9: Einfu¨hrung Funktionsweise von BLAST Praxis?i12engelc/lehre/seminarSS07/folien/dueck/BLAST.pdf · Einfu¨hrung Funktionsweise von BLAST Praxis? Was ist BLAST? Berkeley Lazy Abstraction

EinfuhrungFunktionsweise von BLAST

Praxis?

Welches Problem lost BLAST?

Einfachste Form dieser Sicherheitseigenschaften Assertions:

◮ Laufzeitchecks

◮ Programmierer fugt assert(e) in den Code ein

◮ Wenn e zur Laufzeit zu 0 auswertet ⇒ Programmabbruch

◮ Keine Fehlerabfrage bzw. Fehlerbehandlung. SpezifizierenInvarianten

◮ Durfen keine Seiteneffekte enthalten

◮ Meist benutzt wahrend der Entwicklung, entfernt vor derAuslieferung

◮ (Im Grunde: Erreichbarkeit eines Labels)

David Dueck BLAST

Page 10: Einfu¨hrung Funktionsweise von BLAST Praxis?i12engelc/lehre/seminarSS07/folien/dueck/BLAST.pdf · Einfu¨hrung Funktionsweise von BLAST Praxis? Was ist BLAST? Berkeley Lazy Abstraction

EinfuhrungFunktionsweise von BLAST

Praxis?

Welches Problem lost BLAST?

Probleme mit Assertions:

◮ Bei Auslieferung mit Assertions: Laufzeiteinbußen

David Dueck BLAST

Page 11: Einfu¨hrung Funktionsweise von BLAST Praxis?i12engelc/lehre/seminarSS07/folien/dueck/BLAST.pdf · Einfu¨hrung Funktionsweise von BLAST Praxis? Was ist BLAST? Berkeley Lazy Abstraction

EinfuhrungFunktionsweise von BLAST

Praxis?

Welches Problem lost BLAST?

Probleme mit Assertions:

◮ Bei Auslieferung mit Assertions: Laufzeiteinbußen

◮ Bei Entfernung: keine Sicherheit, Fehlschlag bedeutet imschlimmsten Fall undefined behaviour

David Dueck BLAST

Page 12: Einfu¨hrung Funktionsweise von BLAST Praxis?i12engelc/lehre/seminarSS07/folien/dueck/BLAST.pdf · Einfu¨hrung Funktionsweise von BLAST Praxis? Was ist BLAST? Berkeley Lazy Abstraction

EinfuhrungFunktionsweise von BLAST

Praxis?

Welches Problem lost BLAST?

Probleme mit Assertions:

◮ Bei Auslieferung mit Assertions: Laufzeiteinbußen

◮ Bei Entfernung: keine Sicherheit, Fehlschlag bedeutet imschlimmsten Fall undefined behaviour

◮ In jedem Fall: spate Fehlermeldung

David Dueck BLAST

Page 13: Einfu¨hrung Funktionsweise von BLAST Praxis?i12engelc/lehre/seminarSS07/folien/dueck/BLAST.pdf · Einfu¨hrung Funktionsweise von BLAST Praxis? Was ist BLAST? Berkeley Lazy Abstraction

EinfuhrungFunktionsweise von BLAST

Praxis?

Welches Problem lost BLAST?

BLAST versucht statisch d.h. zur compile time zu beweisen,dass keine Assertion fehlschlagt.3 Moglichkeiten: Entweder BLAST

◮ beweist Assertion schlagt nie fehl

David Dueck BLAST

Page 14: Einfu¨hrung Funktionsweise von BLAST Praxis?i12engelc/lehre/seminarSS07/folien/dueck/BLAST.pdf · Einfu¨hrung Funktionsweise von BLAST Praxis? Was ist BLAST? Berkeley Lazy Abstraction

EinfuhrungFunktionsweise von BLAST

Praxis?

Welches Problem lost BLAST?

BLAST versucht statisch d.h. zur compile time zu beweisen,dass keine Assertion fehlschlagt.3 Moglichkeiten: Entweder BLAST

◮ beweist Assertion schlagt nie fehl

◮ gibt einen Pfad durch das Programm an, bei dem dieAssertion fehlschlagt

David Dueck BLAST

Page 15: Einfu¨hrung Funktionsweise von BLAST Praxis?i12engelc/lehre/seminarSS07/folien/dueck/BLAST.pdf · Einfu¨hrung Funktionsweise von BLAST Praxis? Was ist BLAST? Berkeley Lazy Abstraction

EinfuhrungFunktionsweise von BLAST

Praxis?

Welches Problem lost BLAST?

BLAST versucht statisch d.h. zur compile time zu beweisen,dass keine Assertion fehlschlagt.3 Moglichkeiten: Entweder BLAST

◮ beweist Assertion schlagt nie fehl

◮ gibt einen Pfad durch das Programm an, bei dem dieAssertion fehlschlagt

◮ uberschreitet die Zeitschranken

David Dueck BLAST

Page 16: Einfu¨hrung Funktionsweise von BLAST Praxis?i12engelc/lehre/seminarSS07/folien/dueck/BLAST.pdf · Einfu¨hrung Funktionsweise von BLAST Praxis? Was ist BLAST? Berkeley Lazy Abstraction

EinfuhrungFunktionsweise von BLAST

Praxis?

Welches Problem lost BLAST?

BLAST versucht statisch d.h. zur compile time zu beweisen,dass keine Assertion fehlschlagt.3 Moglichkeiten: Entweder BLAST

◮ beweist Assertion schlagt nie fehl

◮ gibt einen Pfad durch das Programm an, bei dem dieAssertion fehlschlagt

◮ uberschreitet die Zeitschranken

Ziel: Sicherheit bzgl. der Assertions. Kann bedeuten dassLaufzeitchecks eingefugt werden mussen die nie fehlschlagen.

David Dueck BLAST

Page 17: Einfu¨hrung Funktionsweise von BLAST Praxis?i12engelc/lehre/seminarSS07/folien/dueck/BLAST.pdf · Einfu¨hrung Funktionsweise von BLAST Praxis? Was ist BLAST? Berkeley Lazy Abstraction

EinfuhrungFunktionsweise von BLAST

Praxis?

Welches Problem lost BLAST?

BLAST lost/verbessert alle genannten Probleme

◮ Minimierte Laufzeiteinbußen, da viele Assertions entferntwerden konnen

David Dueck BLAST

Page 18: Einfu¨hrung Funktionsweise von BLAST Praxis?i12engelc/lehre/seminarSS07/folien/dueck/BLAST.pdf · Einfu¨hrung Funktionsweise von BLAST Praxis? Was ist BLAST? Berkeley Lazy Abstraction

EinfuhrungFunktionsweise von BLAST

Praxis?

Welches Problem lost BLAST?

BLAST lost/verbessert alle genannten Probleme

◮ Minimierte Laufzeiteinbußen, da viele Assertions entferntwerden konnen

◮ Viele Bugs konnen zur compiletime gefunden werden

David Dueck BLAST

Page 19: Einfu¨hrung Funktionsweise von BLAST Praxis?i12engelc/lehre/seminarSS07/folien/dueck/BLAST.pdf · Einfu¨hrung Funktionsweise von BLAST Praxis? Was ist BLAST? Berkeley Lazy Abstraction

EinfuhrungFunktionsweise von BLAST

Praxis?

Welches Problem lost BLAST?

BLAST lost/verbessert alle genannten Probleme

◮ Minimierte Laufzeiteinbußen, da viele Assertions entferntwerden konnen

◮ Viele Bugs konnen zur compiletime gefunden werden

◮ Im Timeoutfall kann der Programmierer einzelneProgrammstellen untersuchen

David Dueck BLAST

Page 20: Einfu¨hrung Funktionsweise von BLAST Praxis?i12engelc/lehre/seminarSS07/folien/dueck/BLAST.pdf · Einfu¨hrung Funktionsweise von BLAST Praxis? Was ist BLAST? Berkeley Lazy Abstraction

EinfuhrungFunktionsweise von BLAST

Praxis?

Welches Problem lost BLAST?

BLAST lost/verbessert alle genannten Probleme

◮ Minimierte Laufzeiteinbußen, da viele Assertions entferntwerden konnen

◮ Viele Bugs konnen zur compiletime gefunden werden

◮ Im Timeoutfall kann der Programmierer einzelneProgrammstellen untersuchen

◮ Rest der Assertions muss bleiben

David Dueck BLAST

Page 21: Einfu¨hrung Funktionsweise von BLAST Praxis?i12engelc/lehre/seminarSS07/folien/dueck/BLAST.pdf · Einfu¨hrung Funktionsweise von BLAST Praxis? Was ist BLAST? Berkeley Lazy Abstraction

EinfuhrungFunktionsweise von BLAST

Praxis?

Weitere Moglichkeiten “Sicherheitseigenschaften” zu

spezifizieren und zu beweisen

Man mochte “Sicherheitseigenschaften” auf einer hoherenAbstraktions Ebene spezifizieren, ohne den Code umfangreich zuandern bzw. uberall Assertions einzufugen

◮ BLAST Specification Language

◮ Externe Programme, beispielsweise CCured

David Dueck BLAST

Page 22: Einfu¨hrung Funktionsweise von BLAST Praxis?i12engelc/lehre/seminarSS07/folien/dueck/BLAST.pdf · Einfu¨hrung Funktionsweise von BLAST Praxis? Was ist BLAST? Berkeley Lazy Abstraction

EinfuhrungFunktionsweise von BLAST

Praxis?

BLAST Specification Language

Angenommen wir haben ein Programm, das ein Lock benutzt. Wirwollen sicherstellen, dass Aufrufe zu Lock und Unlock sichabwechseln. Funktionen:

◮ FSMInit()

◮ FSMLock()

◮ FSMUnLock()

David Dueck BLAST

Page 23: Einfu¨hrung Funktionsweise von BLAST Praxis?i12engelc/lehre/seminarSS07/folien/dueck/BLAST.pdf · Einfu¨hrung Funktionsweise von BLAST Praxis? Was ist BLAST? Berkeley Lazy Abstraction

EinfuhrungFunktionsweise von BLAST

Praxis?

BLAST Specification Language

Beispiel Spezifikation:

g l o b a l i n t l o c kS t a t u s = 0 ;

even t {pa t t e r n { FSMInit ( ) ; }a c t i o n { l o c kS t a t u s = 0 ; }

}

even t {pa t t e r n { FSMLock ( ) ; }guard { l o c kS t a t u s == 0 }a c t i o n { l o c kS t a t u s = 1 ; }

}

David Dueck BLAST

Page 24: Einfu¨hrung Funktionsweise von BLAST Praxis?i12engelc/lehre/seminarSS07/folien/dueck/BLAST.pdf · Einfu¨hrung Funktionsweise von BLAST Praxis? Was ist BLAST? Berkeley Lazy Abstraction

EinfuhrungFunktionsweise von BLAST

Praxis?

BLAST Specification Language

even t {pa t t e r n { FSMUnLock ( ) ; }guard { l o c kS t a t u s == 1 }a c t i o n { l o c kS t a t u s = 0 ; }

}

David Dueck BLAST

Page 25: Einfu¨hrung Funktionsweise von BLAST Praxis?i12engelc/lehre/seminarSS07/folien/dueck/BLAST.pdf · Einfu¨hrung Funktionsweise von BLAST Praxis? Was ist BLAST? Berkeley Lazy Abstraction

EinfuhrungFunktionsweise von BLAST

Praxis?

BLAST Specification Language

lockStatus: observer variable

◮ Bei erreichen des pattern wird das event ausgelost

◮ Die guard Bedingung muss erfullt sein

◮ action wird beim Einhalten der guard Bedingung ausgefuhrt

David Dueck BLAST

Page 26: Einfu¨hrung Funktionsweise von BLAST Praxis?i12engelc/lehre/seminarSS07/folien/dueck/BLAST.pdf · Einfu¨hrung Funktionsweise von BLAST Praxis? Was ist BLAST? Berkeley Lazy Abstraction

EinfuhrungFunktionsweise von BLAST

Praxis?

BLAST Specification Language

◮ Spezifikation kann auf den Assertion Fall zuruckgefuhrtwerden

◮ ⇒ BLAST kann Einhaltung der Spezifikation prufen

David Dueck BLAST

Page 27: Einfu¨hrung Funktionsweise von BLAST Praxis?i12engelc/lehre/seminarSS07/folien/dueck/BLAST.pdf · Einfu¨hrung Funktionsweise von BLAST Praxis? Was ist BLAST? Berkeley Lazy Abstraction

EinfuhrungFunktionsweise von BLAST

Praxis?

CCured

Legt fur Zeiger eine Ebene uber das C Typsystem

◮ Teilt Zeiger in verschiedene Klassen ein

◮ Je nach Zeigerklasse fugt es moglichst wenig Assertions in dasProgramm ein

◮ BLAST kann viele der Checks entfernen

David Dueck BLAST

Page 28: Einfu¨hrung Funktionsweise von BLAST Praxis?i12engelc/lehre/seminarSS07/folien/dueck/BLAST.pdf · Einfu¨hrung Funktionsweise von BLAST Praxis? Was ist BLAST? Berkeley Lazy Abstraction

EinfuhrungFunktionsweise von BLAST

Praxis?

Funktionsweise

Uberblick:

◮ statische Erreichbarkeitsanalyse

David Dueck BLAST

Page 29: Einfu¨hrung Funktionsweise von BLAST Praxis?i12engelc/lehre/seminarSS07/folien/dueck/BLAST.pdf · Einfu¨hrung Funktionsweise von BLAST Praxis? Was ist BLAST? Berkeley Lazy Abstraction

EinfuhrungFunktionsweise von BLAST

Praxis?

Funktionsweise

Uberblick:

◮ statische Erreichbarkeitsanalyse

◮ beobachtet relevante Fakten (Pradikate) uber einzelneVariablen statt des gesamten Programmzustandes(Abstraction)

David Dueck BLAST

Page 30: Einfu¨hrung Funktionsweise von BLAST Praxis?i12engelc/lehre/seminarSS07/folien/dueck/BLAST.pdf · Einfu¨hrung Funktionsweise von BLAST Praxis? Was ist BLAST? Berkeley Lazy Abstraction

EinfuhrungFunktionsweise von BLAST

Praxis?

Funktionsweise

Uberblick:

◮ statische Erreichbarkeitsanalyse

◮ beobachtet relevante Fakten (Pradikate) uber einzelneVariablen statt des gesamten Programmzustandes(Abstraction)

◮ Unterscheidung zwischen spurious und genuineCounterexample

David Dueck BLAST

Page 31: Einfu¨hrung Funktionsweise von BLAST Praxis?i12engelc/lehre/seminarSS07/folien/dueck/BLAST.pdf · Einfu¨hrung Funktionsweise von BLAST Praxis? Was ist BLAST? Berkeley Lazy Abstraction

EinfuhrungFunktionsweise von BLAST

Praxis?

Funktionsweise

Uberblick:

◮ statische Erreichbarkeitsanalyse

◮ beobachtet relevante Fakten (Pradikate) uber einzelneVariablen statt des gesamten Programmzustandes(Abstraction)

◮ Unterscheidung zwischen spurious und genuineCounterexample

◮ Verfeinerung solange bis ein Bug gefunden wird oder bewiesenwerden kann, dass das Error Label nie erreicht wird

David Dueck BLAST

Page 32: Einfu¨hrung Funktionsweise von BLAST Praxis?i12engelc/lehre/seminarSS07/folien/dueck/BLAST.pdf · Einfu¨hrung Funktionsweise von BLAST Praxis? Was ist BLAST? Berkeley Lazy Abstraction

EinfuhrungFunktionsweise von BLAST

Praxis?

Funktionsweise

Uberblick:

◮ statische Erreichbarkeitsanalyse

◮ beobachtet relevante Fakten (Pradikate) uber einzelneVariablen statt des gesamten Programmzustandes(Abstraction)

◮ Unterscheidung zwischen spurious und genuineCounterexample

◮ Verfeinerung solange bis ein Bug gefunden wird oder bewiesenwerden kann, dass das Error Label nie erreicht wird

◮ Verfeinerung geschieht durch Interpolantenbildung (Craig’scheInterpolanten bekannt aus Formale Systeme)

David Dueck BLAST

Page 33: Einfu¨hrung Funktionsweise von BLAST Praxis?i12engelc/lehre/seminarSS07/folien/dueck/BLAST.pdf · Einfu¨hrung Funktionsweise von BLAST Praxis? Was ist BLAST? Berkeley Lazy Abstraction

EinfuhrungFunktionsweise von BLAST

Praxis?

Interne Programmreprasentation

◮ Fur jede Funktion des Programms wird ein KontrollflussAutomat erzeugt

◮ gerichteter Graph

◮ Kanten reprasentieren den Kontrollfluss

◮ Knoten sind die Kontrollpunkte im Programm (“ProgrammCounter Werte”)

David Dueck BLAST

Page 34: Einfu¨hrung Funktionsweise von BLAST Praxis?i12engelc/lehre/seminarSS07/folien/dueck/BLAST.pdf · Einfu¨hrung Funktionsweise von BLAST Praxis? Was ist BLAST? Berkeley Lazy Abstraction

EinfuhrungFunktionsweise von BLAST

Praxis?

Interne Programmreprasentation

◮ Kanten sind mit der zugehorigen “Instruktion” markiert

◮ Instruktionen sind Grundblocke, Funktionsaufrufe,“Annahmen” oder ein Return

◮ Funktionen hier Call-by-Value

David Dueck BLAST

Page 35: Einfu¨hrung Funktionsweise von BLAST Praxis?i12engelc/lehre/seminarSS07/folien/dueck/BLAST.pdf · Einfu¨hrung Funktionsweise von BLAST Praxis? Was ist BLAST? Berkeley Lazy Abstraction

EinfuhrungFunktionsweise von BLAST

Praxis?

David Dueck BLAST

Page 36: Einfu¨hrung Funktionsweise von BLAST Praxis?i12engelc/lehre/seminarSS07/folien/dueck/BLAST.pdf · Einfu¨hrung Funktionsweise von BLAST Praxis? Was ist BLAST? Berkeley Lazy Abstraction

EinfuhrungFunktionsweise von BLAST

Praxis?

Abstract Reachability Trees

◮ Um Unereichbarkeit von Labels zu beweisen wird ein ARTkonstruiert

◮ Ein Pfad im ART reprasentiert eine Menge vonProgrammausfuhrungen

◮ Knoten gehoren zu einem Knoten in einem CFA

◮ Kanten sind markiert wie in den CFAs, konnen aber nun auchvon einem CFA in einen anderen fuhren

David Dueck BLAST

Page 37: Einfu¨hrung Funktionsweise von BLAST Praxis?i12engelc/lehre/seminarSS07/folien/dueck/BLAST.pdf · Einfu¨hrung Funktionsweise von BLAST Praxis? Was ist BLAST? Berkeley Lazy Abstraction

EinfuhrungFunktionsweise von BLAST

Praxis?

Abstract Reachability Trees

Jeder Knoten n ist markiert mit (q, s, ϕ):

◮ einem Zugehorigen Knoten eines CFA (q)

◮ dem aktuellen Call Stack (s)

◮ der reachable region, die Menge der moglichen Datenzustandein diesem Kontrollschritt, spezifiziert durch einepradikatenlogische Formel (ϕ) ohne Quantoren

David Dueck BLAST

Page 38: Einfu¨hrung Funktionsweise von BLAST Praxis?i12engelc/lehre/seminarSS07/folien/dueck/BLAST.pdf · Einfu¨hrung Funktionsweise von BLAST Praxis? Was ist BLAST? Berkeley Lazy Abstraction

EinfuhrungFunktionsweise von BLAST

Praxis?

David Dueck BLAST

Page 39: Einfu¨hrung Funktionsweise von BLAST Praxis?i12engelc/lehre/seminarSS07/folien/dueck/BLAST.pdf · Einfu¨hrung Funktionsweise von BLAST Praxis? Was ist BLAST? Berkeley Lazy Abstraction

EinfuhrungFunktionsweise von BLAST

Praxis?

Abstract Reachability Trees

◮ Gegeben: eine Menge von Programmzustanden ϕ, eineOperation op vom Typ Basisblock oder “Annahme”:Sei post(ϕ, op) die Menge der erreichbaren Datenzustandenach Ausfuhrung von op

David Dueck BLAST

Page 40: Einfu¨hrung Funktionsweise von BLAST Praxis?i12engelc/lehre/seminarSS07/folien/dueck/BLAST.pdf · Einfu¨hrung Funktionsweise von BLAST Praxis? Was ist BLAST? Berkeley Lazy Abstraction

EinfuhrungFunktionsweise von BLAST

Praxis?

Abstract Reachability Trees

◮ Gegeben: eine Menge von Programmzustanden ϕ, eineOperation op vom Typ Basisblock oder “Annahme”:Sei post(ϕ, op) die Menge der erreichbaren Datenzustandenach Ausfuhrung von op

◮ Fur Operationen op vom Typ Funktionsaufruf:Sei post(ϕ, op) die Menge der erreichbaren Datenzustandenach Zuweisung des Arguments an den Parameter

David Dueck BLAST

Page 41: Einfu¨hrung Funktionsweise von BLAST Praxis?i12engelc/lehre/seminarSS07/folien/dueck/BLAST.pdf · Einfu¨hrung Funktionsweise von BLAST Praxis? Was ist BLAST? Berkeley Lazy Abstraction

EinfuhrungFunktionsweise von BLAST

Praxis?

Abstract Reachability Trees

◮ Gegeben: eine Menge von Programmzustanden ϕ, eineOperation op vom Typ Basisblock oder “Annahme”:Sei post(ϕ, op) die Menge der erreichbaren Datenzustandenach Ausfuhrung von op

◮ Fur Operationen op vom Typ Funktionsaufruf:Sei post(ϕ, op) die Menge der erreichbaren Datenzustandenach Zuweisung des Arguments an den Parameter

◮ Fur return Operationen op und eine Variable x:Sei post(ϕ, op, x) die Menge der erreichbaren Datenzustandenach Zuweisung des return Wertes an x

David Dueck BLAST

Page 42: Einfu¨hrung Funktionsweise von BLAST Praxis?i12engelc/lehre/seminarSS07/folien/dueck/BLAST.pdf · Einfu¨hrung Funktionsweise von BLAST Praxis? Was ist BLAST? Berkeley Lazy Abstraction

EinfuhrungFunktionsweise von BLAST

Praxis?

Abstract Reachability Trees

◮ Fur zwei reachable regions ϕ, ϕ’ gilt ϕ ⊆ ϕ’ genau dann,wenn fur jeden Datenzustand x fur den ϕ(x) gilt auch ϕ’(x)gilt. Sprich jeder Datenzustand der von ϕ erreichbar ist, istauch von ϕ’ erreichbar.

David Dueck BLAST

Page 43: Einfu¨hrung Funktionsweise von BLAST Praxis?i12engelc/lehre/seminarSS07/folien/dueck/BLAST.pdf · Einfu¨hrung Funktionsweise von BLAST Praxis? Was ist BLAST? Berkeley Lazy Abstraction

EinfuhrungFunktionsweise von BLAST

Praxis?

Abstract Reachability Trees

◮ Fur zwei reachable regions ϕ, ϕ’ gilt ϕ ⊆ ϕ’ genau dann,wenn fur jeden Datenzustand x fur den ϕ(x) gilt auch ϕ’(x)gilt. Sprich jeder Datenzustand der von ϕ erreichbar ist, istauch von ϕ’ erreichbar.

◮ Ein Knoten n:(q, s, ϕ) heisst covered durch einen innernenKnoten n’:(q, s, ϕ’) wenn ϕ ⊆ ϕ’.

David Dueck BLAST

Page 44: Einfu¨hrung Funktionsweise von BLAST Praxis?i12engelc/lehre/seminarSS07/folien/dueck/BLAST.pdf · Einfu¨hrung Funktionsweise von BLAST Praxis? Was ist BLAST? Berkeley Lazy Abstraction

EinfuhrungFunktionsweise von BLAST

Praxis?

Abstract Reachability Trees

Ein ART ist abgeschlossen unter Nachbedingungen wenn fur jedeninneren Knoten n:(q, s, ϕ) und jede Vorwarts-Kante q

op

7−→q’ imCFA von q gilt:

David Dueck BLAST

Page 45: Einfu¨hrung Funktionsweise von BLAST Praxis?i12engelc/lehre/seminarSS07/folien/dueck/BLAST.pdf · Einfu¨hrung Funktionsweise von BLAST Praxis? Was ist BLAST? Berkeley Lazy Abstraction

EinfuhrungFunktionsweise von BLAST

Praxis?

Abstract Reachability Trees

Ein ART ist abgeschlossen unter Nachbedingungen wenn fur jedeninneren Knoten n:(q, s, ϕ) und jede Vorwarts-Kante q

op

7−→q’ imCFA von q gilt:1. Fall: op ist ein Basisblock oder eine “Annahme”

◮ Es muss gelten: n hat einen Nachfolger Knoten n’:(q’, s, ϕ’),

sodass nop

7−→n’ und post(ϕ, op) ⊆ ϕ’

David Dueck BLAST

Page 46: Einfu¨hrung Funktionsweise von BLAST Praxis?i12engelc/lehre/seminarSS07/folien/dueck/BLAST.pdf · Einfu¨hrung Funktionsweise von BLAST Praxis? Was ist BLAST? Berkeley Lazy Abstraction

EinfuhrungFunktionsweise von BLAST

Praxis?

Abstract Reachability Trees

Ein ART ist abgeschlossen unter Nachbedingungen wenn fur jedeninneren Knoten n:(q, s, ϕ) und jede Vorwarts-Kante q

op

7−→q’ imCFA von q gilt:1. Fall: op ist ein Basisblock oder eine “Annahme”

◮ Es muss gelten: n hat einen Nachfolger Knoten n’:(q’, s, ϕ’),

sodass nop

7−→n’ und post(ϕ, op) ⊆ ϕ’

2. Fall: op ist ein Funktionsaufruf der Form x = f(argumte)

◮ Es muss gelten: n hat einen Nachfolger Knoten n’:(q”, s’, ϕ’),

sodass nop

7−→ n’, q” der Startknoten des CFA von f, s’ istpush(s, (return adresse, x)) und post(ϕ, op) ⊆ ϕ’

David Dueck BLAST

Page 47: Einfu¨hrung Funktionsweise von BLAST Praxis?i12engelc/lehre/seminarSS07/folien/dueck/BLAST.pdf · Einfu¨hrung Funktionsweise von BLAST Praxis? Was ist BLAST? Berkeley Lazy Abstraction

EinfuhrungFunktionsweise von BLAST

Praxis?

Abstract Reachability Trees

Ein ART ist abgeschlossen unter Nachbedingungen wenn fur jedeninneren Knoten n:(q, s, ϕ) und jede Vorwarts-Kante q

op

7−→q’ imCFA von q gilt:3. Fall: op ist eine return Instruktion

◮ Es muss gelten: n hat einen Nachfolger Knoten n’:(q”, s’, ϕ’),

sodass nop

7−→n’, (q”, x) ist das erste Element auf s, s’ = pop(s)und post(ϕ, op, x) ⊆ ϕ’

David Dueck BLAST

Page 48: Einfu¨hrung Funktionsweise von BLAST Praxis?i12engelc/lehre/seminarSS07/folien/dueck/BLAST.pdf · Einfu¨hrung Funktionsweise von BLAST Praxis? Was ist BLAST? Berkeley Lazy Abstraction

EinfuhrungFunktionsweise von BLAST

Praxis?

Abstract Reachability Trees

Ein ART ist vollstandig wenn:

◮ 1. Die Wurzel ist mit dem Anfangszustand des Programmesmarkiert

◮ 2. Der Baum ist abgeschlossen unter Nachbedingungen (post)

◮ 3. Fur jedes Blatt n:(q, s, ϕ) gilt: Entweder q hat keineausgehende Kante, ϕ = ∅ oder es existiert ein n’, sodass gilt:n ist covered durch n’

David Dueck BLAST

Page 49: Einfu¨hrung Funktionsweise von BLAST Praxis?i12engelc/lehre/seminarSS07/folien/dueck/BLAST.pdf · Einfu¨hrung Funktionsweise von BLAST Praxis? Was ist BLAST? Berkeley Lazy Abstraction

EinfuhrungFunktionsweise von BLAST

Praxis?

Abstract Reachability Trees

◮ Ein vollstandiger ART approximiert die Menge derErreichbaren Datenzustande.

◮ Ein vollstandiger ART ist sicher bzgl. eines CFA Knotens qgenau dann wenn fur jeden Knoten n:(q, - , ϕ) des ARTϕ = ∅ gilt.

◮ Ein bzgl. q sicherer ART ist ein Zertifikat/Beweis, dass q aufkeinem Ausfuhrungspfad erreicht wird.

David Dueck BLAST

Page 50: Einfu¨hrung Funktionsweise von BLAST Praxis?i12engelc/lehre/seminarSS07/folien/dueck/BLAST.pdf · Einfu¨hrung Funktionsweise von BLAST Praxis? Was ist BLAST? Berkeley Lazy Abstraction

EinfuhrungFunktionsweise von BLAST

Praxis?

ART Konstruktion

◮ Ausrollen der CFAs, anfangen bei main

David Dueck BLAST

Page 51: Einfu¨hrung Funktionsweise von BLAST Praxis?i12engelc/lehre/seminarSS07/folien/dueck/BLAST.pdf · Einfu¨hrung Funktionsweise von BLAST Praxis? Was ist BLAST? Berkeley Lazy Abstraction

EinfuhrungFunktionsweise von BLAST

Praxis?

ART Konstruktion

◮ Ausrollen der CFAs, anfangen bei main

◮ Zuerst alle reachable regions zu ϕ(x) = true gesetzt

David Dueck BLAST

Page 52: Einfu¨hrung Funktionsweise von BLAST Praxis?i12engelc/lehre/seminarSS07/folien/dueck/BLAST.pdf · Einfu¨hrung Funktionsweise von BLAST Praxis? Was ist BLAST? Berkeley Lazy Abstraction

EinfuhrungFunktionsweise von BLAST

Praxis?

ART Konstruktion

◮ Ausrollen der CFAs, anfangen bei main

◮ Zuerst alle reachable regions zu ϕ(x) = true gesetzt

◮ Solange ausrollen, bis ein Fehlerlabel erreicht wurde oder derART vollstandig ist

David Dueck BLAST

Page 53: Einfu¨hrung Funktionsweise von BLAST Praxis?i12engelc/lehre/seminarSS07/folien/dueck/BLAST.pdf · Einfu¨hrung Funktionsweise von BLAST Praxis? Was ist BLAST? Berkeley Lazy Abstraction

EinfuhrungFunktionsweise von BLAST

Praxis?

ART Konstruktion

◮ Ausrollen der CFAs, anfangen bei main

◮ Zuerst alle reachable regions zu ϕ(x) = true gesetzt

◮ Solange ausrollen, bis ein Fehlerlabel erreicht wurde oder derART vollstandig ist

◮ Wenn ein Fehlerlabel erreicht wird: Counterexample Analysis

David Dueck BLAST

Page 54: Einfu¨hrung Funktionsweise von BLAST Praxis?i12engelc/lehre/seminarSS07/folien/dueck/BLAST.pdf · Einfu¨hrung Funktionsweise von BLAST Praxis? Was ist BLAST? Berkeley Lazy Abstraction

EinfuhrungFunktionsweise von BLAST

Praxis?

David Dueck BLAST

Page 55: Einfu¨hrung Funktionsweise von BLAST Praxis?i12engelc/lehre/seminarSS07/folien/dueck/BLAST.pdf · Einfu¨hrung Funktionsweise von BLAST Praxis? Was ist BLAST? Berkeley Lazy Abstraction

EinfuhrungFunktionsweise von BLAST

Praxis?

David Dueck BLAST

Page 56: Einfu¨hrung Funktionsweise von BLAST Praxis?i12engelc/lehre/seminarSS07/folien/dueck/BLAST.pdf · Einfu¨hrung Funktionsweise von BLAST Praxis? Was ist BLAST? Berkeley Lazy Abstraction

EinfuhrungFunktionsweise von BLAST

Praxis?

David Dueck BLAST

Page 57: Einfu¨hrung Funktionsweise von BLAST Praxis?i12engelc/lehre/seminarSS07/folien/dueck/BLAST.pdf · Einfu¨hrung Funktionsweise von BLAST Praxis? Was ist BLAST? Berkeley Lazy Abstraction

EinfuhrungFunktionsweise von BLAST

Praxis?

Counterexample Analysis

◮ Es soll zwischen spurious und genuine counterexamplesunterschieden werden

◮ Aufstellen der trace forumla: Formel die genau dann erfullbarist, wenn der Pfad genommen werden kann

◮ Fehlerpfad wird in SSA Form transformiert und die traceformula wird erzeugt

David Dueck BLAST

Page 58: Einfu¨hrung Funktionsweise von BLAST Praxis?i12engelc/lehre/seminarSS07/folien/dueck/BLAST.pdf · Einfu¨hrung Funktionsweise von BLAST Praxis? Was ist BLAST? Berkeley Lazy Abstraction

EinfuhrungFunktionsweise von BLAST

Praxis?

David Dueck BLAST

Page 59: Einfu¨hrung Funktionsweise von BLAST Praxis?i12engelc/lehre/seminarSS07/folien/dueck/BLAST.pdf · Einfu¨hrung Funktionsweise von BLAST Praxis? Was ist BLAST? Berkeley Lazy Abstraction

EinfuhrungFunktionsweise von BLAST

Praxis?

Predicate Discovery

◮ Jetzt sollen neue Pradikate eingefugt werden, sodass einvollstandiger bzgl. der Fehlerstelle sicherer ART entsteht

◮ Dazu werden alle cuts des Fehlerpfades betrachtet

◮ Cuts sind Knoten n im ART, die trace formula wird in 2.Teile aufgeteilt, ein Teil bis zu n, ein Teil nach n (ϕ− und ϕ+)

◮ Jetzt werden Interpolanten gebildet

David Dueck BLAST

Page 60: Einfu¨hrung Funktionsweise von BLAST Praxis?i12engelc/lehre/seminarSS07/folien/dueck/BLAST.pdf · Einfu¨hrung Funktionsweise von BLAST Praxis? Was ist BLAST? Berkeley Lazy Abstraction

EinfuhrungFunktionsweise von BLAST

Praxis?

Craigsches Interpolationslemma

Seien ϕ− und ϕ+ Formeln der Pradikatenlogik und es gelte:

◮ |= ¬(ϕ− ∧ ϕ+)

Dann gibt es eine Formel ψ sodass:

◮ |= ϕ− −→ ψ

David Dueck BLAST

Page 61: Einfu¨hrung Funktionsweise von BLAST Praxis?i12engelc/lehre/seminarSS07/folien/dueck/BLAST.pdf · Einfu¨hrung Funktionsweise von BLAST Praxis? Was ist BLAST? Berkeley Lazy Abstraction

EinfuhrungFunktionsweise von BLAST

Praxis?

Craigsches Interpolationslemma

Seien ϕ− und ϕ+ Formeln der Pradikatenlogik und es gelte:

◮ |= ¬(ϕ− ∧ ϕ+)

Dann gibt es eine Formel ψ sodass:

◮ |= ϕ− −→ ψ

◮ |= ¬(ψ ∧ ϕ+)

David Dueck BLAST

Page 62: Einfu¨hrung Funktionsweise von BLAST Praxis?i12engelc/lehre/seminarSS07/folien/dueck/BLAST.pdf · Einfu¨hrung Funktionsweise von BLAST Praxis? Was ist BLAST? Berkeley Lazy Abstraction

EinfuhrungFunktionsweise von BLAST

Praxis?

Craigsches Interpolationslemma

Seien ϕ− und ϕ+ Formeln der Pradikatenlogik und es gelte:

◮ |= ¬(ϕ− ∧ ϕ+)

Dann gibt es eine Formel ψ sodass:

◮ |= ϕ− −→ ψ

◮ |= ¬(ψ ∧ ϕ+)

◮ ψ enthalt nur Variablen die in beiden Formeln vorkommen

David Dueck BLAST

Page 63: Einfu¨hrung Funktionsweise von BLAST Praxis?i12engelc/lehre/seminarSS07/folien/dueck/BLAST.pdf · Einfu¨hrung Funktionsweise von BLAST Praxis? Was ist BLAST? Berkeley Lazy Abstraction

EinfuhrungFunktionsweise von BLAST

Praxis?

David Dueck BLAST

Page 64: Einfu¨hrung Funktionsweise von BLAST Praxis?i12engelc/lehre/seminarSS07/folien/dueck/BLAST.pdf · Einfu¨hrung Funktionsweise von BLAST Praxis? Was ist BLAST? Berkeley Lazy Abstraction

EinfuhrungFunktionsweise von BLAST

Praxis?

Verfeinerung des ART

◮ ψ leistet das gewunschte

◮ Jetzt wird der Fehlerpfad erneut abgelaufen und ψ beobachtet

◮ Nur Unterbaume von Knoten zu denen Pradikate hinzugefugtwurden werden aktualisiert

◮ Verfeinerung bis der ART sicher ist oder ein genuineCounterexample gefunden wird

David Dueck BLAST

Page 65: Einfu¨hrung Funktionsweise von BLAST Praxis?i12engelc/lehre/seminarSS07/folien/dueck/BLAST.pdf · Einfu¨hrung Funktionsweise von BLAST Praxis? Was ist BLAST? Berkeley Lazy Abstraction

EinfuhrungFunktionsweise von BLAST

Praxis?

David Dueck BLAST

Page 66: Einfu¨hrung Funktionsweise von BLAST Praxis?i12engelc/lehre/seminarSS07/folien/dueck/BLAST.pdf · Einfu¨hrung Funktionsweise von BLAST Praxis? Was ist BLAST? Berkeley Lazy Abstraction

EinfuhrungFunktionsweise von BLAST

Praxis?

Nach weiteren Iterationen ist der ART vollstandig und sicher bzgl.des Errorlabels.

David Dueck BLAST

Page 67: Einfu¨hrung Funktionsweise von BLAST Praxis?i12engelc/lehre/seminarSS07/folien/dueck/BLAST.pdf · Einfu¨hrung Funktionsweise von BLAST Praxis? Was ist BLAST? Berkeley Lazy Abstraction

EinfuhrungFunktionsweise von BLAST

Praxis?

Unsicheres Testprogramm

void f u n c f oo ( i n t x , i n t y ){i f ( x > y ){

x = x − y ;

i f ( x > 0)ERROR: x++;

}}

David Dueck BLAST

Page 68: Einfu¨hrung Funktionsweise von BLAST Praxis?i12engelc/lehre/seminarSS07/folien/dueck/BLAST.pdf · Einfu¨hrung Funktionsweise von BLAST Praxis? Was ist BLAST? Berkeley Lazy Abstraction

EinfuhrungFunktionsweise von BLAST

Praxis?

BLAST Aufruf und Output

◮ gcc -E funcfoo.c -o funcfoo.i

David Dueck BLAST

Page 69: Einfu¨hrung Funktionsweise von BLAST Praxis?i12engelc/lehre/seminarSS07/folien/dueck/BLAST.pdf · Einfu¨hrung Funktionsweise von BLAST Praxis? Was ist BLAST? Berkeley Lazy Abstraction

EinfuhrungFunktionsweise von BLAST

Praxis?

BLAST Aufruf und Output

◮ gcc -E funcfoo.c -o funcfoo.i

◮ pblast.opt funcfoo.i -main funcfoo

David Dueck BLAST

Page 70: Einfu¨hrung Funktionsweise von BLAST Praxis?i12engelc/lehre/seminarSS07/folien/dueck/BLAST.pdf · Einfu¨hrung Funktionsweise von BLAST Praxis? Was ist BLAST? Berkeley Lazy Abstraction

EinfuhrungFunktionsweise von BLAST

Praxis?

BLAST Aufruf und Output

◮ gcc -E funcfoo.c -o funcfoo.i

◮ pblast.opt funcfoo.i -main funcfoo

Output: [...] Error found! The system is unsafe :-(Error trace:

David Dueck BLAST

Page 71: Einfu¨hrung Funktionsweise von BLAST Praxis?i12engelc/lehre/seminarSS07/folien/dueck/BLAST.pdf · Einfu¨hrung Funktionsweise von BLAST Praxis? Was ist BLAST? Berkeley Lazy Abstraction

EinfuhrungFunktionsweise von BLAST

Praxis?

Sicheres Testprogramm

void f u n c f oo ( i n t x , i n t y ){i f ( x > y ){

x = x − y ;

i f ( x <= 0)ERROR: x++;

}}

David Dueck BLAST

Page 72: Einfu¨hrung Funktionsweise von BLAST Praxis?i12engelc/lehre/seminarSS07/folien/dueck/BLAST.pdf · Einfu¨hrung Funktionsweise von BLAST Praxis? Was ist BLAST? Berkeley Lazy Abstraction

EinfuhrungFunktionsweise von BLAST

Praxis?

BLAST Output

Output: [...]Exception raised :(Failure(”No new preds found !– and not runningallPreds ...”) Ack! The gremlins again!: Failure(”No new predsfound !– and not running allPreds ...”) Ack! The gremlins again!:Failure(”No new preds found !– and not running allPreds ...”)Fatal error: exception Failure(”No new preds found !– and notrunning allPreds ...”)

David Dueck BLAST