SyncSource: How In-Sync is your Source Code?

Bachelor Studiengang IT Security

Benjamin Petermaier, BSc (Jg. 2013/2016)

Betreuer: Dipl.-Ing. Dr. Sebastian Schrittwieser, Bakk.

Ausgangslage

Es ist keine Neuigkeit, dass ein wichtiger Teil heutiger Softwareentwicklung die Verwendung von bereits existierendem Source Code ist. In Wirklichkeit ist es so: Je neuer die Software, desto mehr fertige Softwarebibliotheken, Code-Schnippsel und sogar ganze Teile schon bestehender Programme werden verwendet. Dieses Phänomen hat verschiedenste Ursachen, aber auch viele schwerwiegende Auswirkungen. ForscherInnen konnten zum Beispiel feststellen, dass die Qualität von Source Code unter der Wiederverwendung von Programmteilen leidet. Aber nicht nur die Qualität der Programme ist beeinträchtigt durch den Trend der EntwicklerInnen zu mehr desselben. Application-Security-Spezialistinnen und -Spezialisten rund um den Globus warten nur auf die nächste Katastrophe oder die nächste Softwarebibliothek, die eine gefährliche Sicherheitslücke hat.

Je mehr Source Code von Applikationen geteilt wird, desto wahrscheinlicher ist, dass auch eine kritische Sicherheitslücke von ihnen geteilt wird. Betrachtet man alle Fakten, kann man sagen, das EntwicklerInnen ihre Programme und die Sicherheit ihrer Programme nicht mehr alleine in der Hand haben und teilweise auch nicht mehr genau kennen.

Ziel

Hier kommt SyncSource ins Spiel. SyncSource ist ein Programm, das frei verfügbare Software sammelt und versucht, auf Grund von Gemeinsamkeiten in ihrer Code-Basis Verbindungen zu finden. Anhand dieser Verbindungen sieht man dann sofort, wie sich Sicherheitslücken über verschiedene Projekte verbreiten könnten. Die Bachelorarbeit beschäftigt sich mit dem Design und der Implementierung der SyncSource-Software und auch mit der Analyse eines ersten Datensatzes, gesammelt von der Kollaborationsplattform GitHub.

Ergebnis

Im Zuge der Arbeit wurde die Software SyncSource entwickelt und auf einen Testdatensatz von etwa 15.000 Open Source Software-Projekten angewandt. Das Ergebnis bietet einen guten Einblick in die Softwareentwicklung an sich und zeigt, wie wichtig die Verwendung von existierendem Code für EntwicklerInnen ist und in welchem Umfang sie betrieben wird.