Statische und dynami... Studien- und Diploma... Statische und dynami...

Bachelorarbeit

Statische und Dynamische Analyseverfahren zur Unterstützung der Erkennung von Pufferüberläufen

 

Zusammenfassung

In qualitätssichernden Tests von Software unterscheidet man nach Liggesmeyer [21] grundsätzlich zwischen statischer und dynamischer Analyse. Bei der statischen Analyse werden einzelne Module der Software geprüft, indem der Code direkt analysiert wird. Hingegen bei der dynamischen Analyse wird das gesamte Softwareprodukt analysiert, ohne dabei den Code einzelner Module zu kennen. Ein Problem bzgl. Qualität und darunter auch Sicherheit im Testen von Software stellen Pufferüberläufe dar. Hierbei geht es, wie der Begriff schon aussagt, um Speicherbereiche, die überfüllt werden. Viele moderne Programmiersprachen (Java) schützen sich gegen dieses Problem automatisch durch ihren Compiler. Bei C ist dies jedoch nicht vollständig möglich. Es sind daher Verfahren notwendig, die potentielle Pufferüberläufe in Software finden und als schädlich oder unschädlich identifizieren können. In dieser Arbeit werden zuerst einige der bisher entwickelten Verfahren von sowohl statischer als auch dynamischer Analyse bezüglich der Entdeckung und Identifizierung von Pufferüberläufen erläutert und verglichen. Anschließend wird ein Verfahren geschildert, welches das Problem der Pufferüberläufe ganz anders angeht. Das Problem wird in dieser Vorgehensweise zunächst umgeformt in ein berdeckungsproblem. Anschließend wird dieses Überdeckungsproblem in ein Optimierungsproblem umgeformt und dieses lässt sich mit dem dynamischen Verfahren der evolutionären Algorithmen durch lokale Optimierung lösen. Nachdem erklärt wurde wie dieses Verfahren im Detail funktioniert wird es für auf zwei konkrete Beispiele angewendet. Das entwickelte Verfahren konnte in diesen Beispielen systematisch und schnell den zu identifizierenden Pufferüberlauf als schädlich einstufen.

Bearbeiter: Heiko Sonnenberg

Betreuer: M. Eng. Loui Al Sardy