Gesamt-Schlussbericht des Verbundprojektes Deutsch - CC Gmbh
Gesamt-Schlussbericht des Verbundprojektes Deutsch - CC Gmbh
Gesamt-Schlussbericht des Verbundprojektes Deutsch - CC Gmbh
Erfolgreiche ePaper selbst erstellen
Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.
� einem sprachunabhängigen Werkzeugkern, der alle für die Analyse relevanten<br />
Methoden und Abläufe umfasst,<br />
� spezifischen Plugin-Modulen zur Anbindung verschiedener Programmiersprachen,<br />
� einer Präsentationskomponente zur zielgruppenspezifischen Darstellung der<br />
Ergebnisse und<br />
� einer Benutzeroberfläche, über welche die Benutzereingaben gesteuert und<br />
strukturiert werden können.<br />
Um den Implementierungsaufwand möglichst gering zu halten, verständigten sich die<br />
Partner darauf, soweit sinnvoll und möglich bereits existierende Konzepte und Methoden bei<br />
der Realisierung <strong>des</strong> Werkzeugs einzusetzen.<br />
Die Bewertung verschiedener Realisierungsalternativen erfolgte im Hinblick auf den Grad<br />
der Erfüllung der gesammelten Anforderungen. Themen waren dabei zum Beispiel die<br />
optimale Repräsentation <strong>des</strong> analysierten Programms (z. B. mittels Quelltext, Syntaxbaum,<br />
Kontrollflussgraph, Zwischencode), der während der Analyse gewonnenen Informationen<br />
(z. B. relational, objektorientiert, imperativ), der Analyseregeln (z. B. logisch, mengenbasiert,<br />
objektorientiert, programmatisch) sowie die Darstellung der Analyseergebnisse.<br />
In Abstimmung mit allen Pojektpartnern wurde schließlich ein Ansatz auf Basis einer kontextsensitiven<br />
Codeanalyse ausgewählt, welcher sich im Open-Source-Framework Joeq<br />
wiederfand. Eine wichtige Rolle für die Auswahl dieses Frameworks war die in Joeq<br />
verwendete viel versprechende Datalog- und BDD-Technologie. Dabei wird für die<br />
Speicherung und Auswertung der Datenflussinformationen die BDD-basierte Deduktive<br />
Datenbank "BDDBDDB" [Whaley 2004] verwendet. Zur Formulierung der logischen<br />
Analyseregeln zur Ermittlung komplexer Zusammenhänge dient die Abfragesprache<br />
"Datalog" (http://de.wikipedia.org/wiki/Datalog).<br />
Das Joeq-Framework bietet Programmiersprachenunabhängkeit durch eine Intermediate<br />
Representation (IR) basierend auf einem Quad genannten Zwischencode. Dieser stellt eine<br />
traditionelle 2-stufige Zwischensprache mit einem Kontrollflussgraphen und einer Darstellung<br />
der Befehle als Quads (3 Operatoren, 1 Operand) dar. Als prozessornahe registerbasierte<br />
Darstellung vereinfacht Quad die Datenflussanalyse, die in einer stackbasierten Darstellung<br />
durch das Stackhandling wesentlich aufwendiger wäre.<br />
Die sprachunabhängige Darstellung Quad dient für SecFlow zudem als Schnittstelle zur<br />
Anbindung der verschiedenen Programmiersprachen an das SecFlow-Analyseframework.<br />
Diese Anbindung erfolgt im jeweiligen Sprachmodul durch einen – natürlich<br />
sprachabhängigen – Compiler für die Übersetzung vom Quell- bzw. Bytecode der jeweiligen<br />
Programmiersprache nach Quad.<br />
Insgesamt resultierte eine modulare Werkzeugarchitektur gemäß Abbildung 1.<br />
Die Architektur sieht vor, dass Software verschiedener Quellsprachen analysiert werden<br />
kann. Aktuell unterstützt das Werkzeug die Programmiersprachen Java und C#, wobei<br />
jeweils der Bytecode (JBC/Java bzw. CIL/.NET-Assembly) analysiert wird. Dieser erste<br />
Schritt, der nicht zum SecFlow-Werkzeug gehört, sondern von konventionellen Compilern<br />
erledigt wird, wird unter der Bezeichnung ”Preprocessing" zusammengefasst.<br />
Die Sprachkomponente (Language Component) übersetzt den stackbasierten, sprachabhängigen<br />
Bytecode in die registerbasierte, sprachunabhängige Zwischensprache Quad.<br />
Der so entstehende Zwischencode dient als Schnittstelle zu nachfolgenden SecFlow-<br />
Komponenten. Er beinhaltet die Datenbasis für die spätere Analyse.<br />
Die Adapterkomponente (Adapter Component) übersetzt den Zwischencode in relationale<br />
Tupel. Diese Tupel bilden im Quadcode enthaltene Zusammenhänge ab.<br />
Datenfluss-Summaries sind Modelle externer Funktion, die nicht direkt analysiert werden<br />
können. Sie müssen manuell spezifiziert werden. Die Summarykomponente (Summary<br />
Component) übersetzt die Datenfluss-Summaries und macht sie damit für das Werkzeug<br />
verfügbar.<br />
Datei<br />
SecFlow_<strong>Gesamt</strong>schlussbericht_V10.odt<br />
Version<br />
1.0<br />
Datum<br />
2009-02-02<br />
Bearbeiter/in<br />
Dana Richter<br />
Seite<br />
11 von 27