Seminar Moderne Programmanalysen zur Fehlererkennung
Thema
Im Seminar werden (statische) Programmanalysen zur Fehlererkennung behandelt.
Solche Analysen werden z.B. im Compilerbau und in separaten
Codeanalyse-Werkzeugen wie lint eingesetzt. Sie helfen, viele Fehler
wie nicht initialisierte Variablen, Deadlocks und Division durch Null zu
erkennen. Im Seminar besprechen wir, wie diese Analysen arbeiten.
Vorkenntnisse in Compilerbau, Programmanalysen und Graphenalgorithmen sind
nützlich, jedoch nicht zwingend.
Termin: Mo, 9:45-11:15
Ort: 1.212 (SunTrec)
Handout: [pdf]
Vorträge
- Einführung in die Welt der Programmanalysen
-
Standardtechniken und Formalismen der statischen Programmanalysen:
- Datenflussanalysen und monotone Frameworks
- Abstrakte Interpretation
- Constraint Based Analysis
- Typ-Systeme, Inferenz-Algorithmen
Literatur: (NHH99), (HJ94), (Sch98)
| Ausarbeitung: |
[PDF] |
| Bearbeiter: |
Wiltrud Kessler |
| Betreuer: |
Eduard Wiebe |
| Termin: |
49. KW, 3.12.2007 |
- Datenflussanalysen, Prüfen von Variablenverwendungen
-
Klassische Techniken, die auch im Compilerbau eingesetzt werden,
um Zugriffe auf nicht initialisierte Variablen oder verbotene Werte
(wie NULL für Zeiger oder eine Division durch 0) zu erkennen.
Hierzu zählen: Live-Variable-Analysis, Zeigeranalysen, SSA-Form,
Konstantenpropagierung, Out-Of-Bounds-Analyse.
Literatur: (ASU86,PS07,CFR$^+$91,Muc97,Hin01)
| Bearbeiter: |
Roland Jacobson |
| Betreuer: |
Stefan Staiger |
| Termin: |
50. KW, 10.12.2007 (Achtung, Vortrag fällt aus) |
- Fehlererkennung durch Mustersuche
-
Die meisten Programmierfehler sind trivial. Aus Erfahrungswerten
lassen sich Muster für die häufigsten Probleme ableiten. Durch
statische Analyse kann nach Instanzen dieser Muster in Quelltexten
gesucht werden und somit bereits eine deutliche Verbesserung der
Qualität und Korrektheit erzielt werden.
Literatur: (HP04,LRY$^+$04,HP,CJ03)
| Ausarbeitung: |
[PDF] |
| Bearbeiter: |
Frank Schuh |
| Betreuer: |
Steffen Keul |
| Termin: |
51. KW, 17.12.2007 |
- Sicherheitslücken durch statische Analyse aufdecken
-
Durch eine Sicherheitslücke gelingt es einem Angreifer ein
nicht-beabsichtigtes oder schädliches Programmverhalten auszulösen
und so beispielsweise geheime Daten auszulesen oder zu löschen. Mit
Hilfe von statischen Analysen können bestimmte Sicherheitslücken
aufgedeckt werden. Wie funktionieren solche Werkzeuge und welche
Fehler werden erkannt?
Literatur: (LL05,CW02,STFW01,CM04)
| Ausarbeitung: |
[PDF] |
| Folien: |
[PDF] |
| Bearbeiter: |
Steffen Reimann |
| Betreuer: |
Gunther Vogel |
| Termin: |
3. KW, 14.1.2008 |
- Prüfung von Speicherzugriffen, Buffer Overflows
-
Zugriffe auf null-Zeiger können von modernen Betriebsystemen
erkannt und unterbunden werden, sie führen jedoch üblicherweise
sofort zu einem erzwungenen Programmende. Als weitaus schlimmer
erweisen sich Zugriffe auf beliebigen Speicher durch den die
Konsistenz des Programmzustands zerstört wird. In Buffer
Overflow-Attacken versucht ein Angreifer gezielt Programmierfehler
auszunutzen und den Programmzustand nach seinen wünschen zu
manipulieren.
Literatur: (GJC$^+$03,WFBA00,HSP06)
| Bearbeiter: |
Huang Jinhui |
| Betreuer: |
Steffen Keul |
| Termin: |
4. KW, 21.1.2008 (Vortrag fällt aus) |
- Verifikation von Sequenzbeschränkungen
-
Verwendungen von Software-Komponenten und APIs unterliegen im
allgemeinen bestimmten Sequenzbeschränkungen, so genannten
Protokollen. Wie können solche Anforderungen statisch überprüft und
Abweichungen aufgedeckt werden?
Literatur: (DCCN04,ECH$^+$01,DLS02,OO92)
| Bearbeiter: |
Shaojun Zhang |
| Betreuer: |
Gunther Vogel |
| Termin: |
5. KW, 28.1.2008 (Vortrag fällt aus) |
Bei Fragen wenden Sie sich bitte an die
Betreuer aus der Abteilung
Programmiersprachen und Compilerbau:
Prof. Erhard Plödereder
,
Steffen Keul
,
Stefan Staiger
,
Gunther Vogel
,
Eduard Wiebe
Organisatorisches
Am 19. Juli 2007 findet um 14 Uhr eine Vorbesprechung im Raum 1.212 statt, zu der alle Teilnehmer erscheinen müssen.
Richtlinien
Die Ausarbeitungen werden hier verfügbar
sein, sobald sie uns in der endgültigen
Fassung vorliegen. Die Abgabe einer
vorläufigen Ausarbeitung ist eine Woche
vor dem Vortrag notwendig.
Die endgültige Ausarbeitung muss
uns eine Woche nach dem Vortrag
vorliegen, sowohl in ausgedruckter als
auch elektronischer Form
(Orginaldokument und PDF).
Die Ausarbeitung sollte unbedingt von
einem Kommilitonen vor Abgabe auf
Rechtschreibfehler etc. geprüft werden.
Die Ausarbeitungen müssen dem
zweispaltigen
IEEE-Format
für Konferenzbeiträge genügen und einen
Umfang von 12 Seiten haben. Unter den
folgenden Links gibt es entsprechende
Vorlagen.
Generelle Hinweise zu Vorträgen und Ausarbeitungen findet man
hier.
Literatursuche
|