28.11.2012 Aufrufe

Gesamt-Schlussbericht des Verbundprojektes Deutsch - CC Gmbh

Gesamt-Schlussbericht des Verbundprojektes Deutsch - CC Gmbh

Gesamt-Schlussbericht des Verbundprojektes Deutsch - CC Gmbh

MEHR ANZEIGEN
WENIGER ANZEIGEN

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

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!