Open-Source-Software und Quellcode-Analyse: die perfekte Kombination

Autor: Ben Chelf
Eingetragen seit: 10/2007
Letzter Beitrag: 10/2007
Beiträge insgesamt: 2
Expertenprofil   Alle Experten   

DruckversionAls E-Mail versendenZum Magazin-Forum

Schlaflose Nächte

Vor sieben Jahren wurde mir zum ersten Mal die Bedeutung des Begriffs „Graduate Student“ (Student im Aufbaustudium) klar: Innerhalb von fünf Tagen schlief ich nur zwei Stunden und ansonsten spielte sich mein Leben am Computer ab, mit gelegentlichen Unterbrechungen für Nahrungsaufnahme und Koffeininjektionen, im Kampf mit Halluzinationen, in denen Pinguine um mich herum tanzten. Und wozu das Ganze? Ich war auf der Suche nach Bugs in Linux.

Mit der erstmaligen Präsentation des Konzepts der „Meta-Compilation“ wurde jene erste OSDI-Publikation (Operating Systems Design and Implementation) zu einem Meilenstein für die Forschungsgruppe von Dawson Engler an der Stanford University wie auch für die Quellcode-Analyse insgesamt. Durch den Nachweis des Leistungspotenzials dieses neuen Verfahrens an einer so umfangreichen und gut getesteten Code-Basis wie Linux gelang es uns, die allgemeine Aufmerksamkeit auf einen neuen Ansatz zum Auffinden von Bugs in Code zu lenken.

Mittlerweile, sieben Jahre danach, konnten wir diese Technologie einer breiteren Basis der Open-Source-Community bekannt machen und sie in das Open-Source-Entwicklungsmodell integrieren. Im Folgenden werde ich nun schildern, was mich derzeit vom Schlafen abhält und inwiefern es den Weg hin zu mehr Zuverlässigkeit und Sicherheit für Linux ebnet.

Ein neuer Ansatz zum Messen von Software-Qualität Im letzten Jahrzehnt erlangte das Open-Source-Modell der Software-Entwicklung einen enormen Bekanntheitsgrad und konnte sich mit erfolgreichen kommerziellen Projekten wie Linux, Apache, und MySQL etablieren. Dieses neue, auf der Mitwirkung zahlreicher Beteiligter basierende Modell hat sich rasch weiter entwickelnde Software-Programme hervorgebracht, die in unzähligen Unternehmen in Produktionsumgebungen zum Einsatz kommen. Obgleich die wahrgenommene Qualität dieser Pakete sehr hoch ist, da sie als wenig anfällig für Bugs gelten, gibt es keine eindeutigen Parameter zum Messen ihrer Qualität.

In den letzten Jahren hat Coverity (das zur Vermarktung der Meta-Compilation-Technologie der Stanford University gegründete Unternehmen) neue Technologien zur Quellcode-Analyse entwickelt, die automatisch Millionen von Codezeilen analysieren und dabei Fehler feststellen, die Abstürze während der Ausführung, Performance-Einbußen, nicht ordnungsgemäßes Programmverhalten und sogar für Exploits anfällige Sicherheitslücken verursachen können. Natürlich besteht der Hauptzweck dieser Technologie in der Optimierung von Software und genau dazu wird sie tagtäglich von Tausenden von Entwicklern benutzt. Da die Quellcode-Analyse aber für jede beliebige Code-Basis sämtliche vorhandenen Pfade völlig objektiv untersucht, kann sie auch als Parameter für das Messen der Qualität und Sicherheit von Code-Einheiten dienen.

Kein Parameter ist perfekt. Die Ergebnisse eine Quellcode-Analyse als absoluten Messwert für die Qualität eines Codes festzulegen, wäre irreführend, denn keine automatische Analyse kann alle in einer Software enthaltenen Bugs entdecken. Dennoch findet Coverity vielerlei gängige Fehler auf Programmebene auf, weshalb die Ergebnisse unserer Scans einen guten Anhaltspunkt für die allgemeine Qualität der Software liefern. Sie bieten zudem eine konsistente und wiederholbare Möglichkeit für den Vergleich von zwei Code-Basen. Anders als gröbere und indirekte Messparameter wie die zyklomatische Komplexität liefert die Quellcode-Analyse direkt verwertbare und leicht zu überprüfende Fehlerangaben, die auf die Ursache echter Software-Probleme hinweisen. Hier die beiden Ansätze im Vergleich:

Ansatz der zyklomatischen Komplexität (1) „Funktion ‚foo‘ enthält zu viele Pfade.“

Ansatz der Quellcode-Analyse (2) „Funktion ‚foo‘ weist eine Speicherlücke in Zeile 73 auf, die durch eine Zuweisung in Zeile 34 und die nachfolgenden Pfadentscheidungen in den Zeilen 38, 54, und 65 verursacht wurde.“

Das erste Resultat liefert keine Angaben zur mangelnden Code-Qualität als solcher – es beschreibt nur die Lage. Mithilfe weniger Informationen lässt sich dagegen aus dem zweiten Ergebnis erheblich mehr über die Qualität einer Code-Basis ablesen, die in diesem Fall einen echten Bug enthält, der die Performance der Software beeinträchtigt.

In den ersten sieben Tagen ließen sich mehr als 200 Open-Source-Entwickler registrieren, um sicheren Zugang zur Online-Defektdatenbank zur erhalten. Auf der Grundlage der gelieferten Daten behoben sie mehr als 900 Defekte. Das sind im Schnitt fünf Bug-Fixes pro Stunde. Entwickler der Projekte Amanda und XMMS beseitigten sogar sämtliche, im Verlauf der Coverity-Analyse entdeckten Softwaredefekte. Im Anschluss daran veröffentlichte das Amanda-Team eine Hauptversion (2.5) der populären Sicherungs- und Wiederherstellungssoftware. Besonders betont wurde dabei, dass die neue Version völlig frei von Coverity-Defekten sei.

Willkommen auf scan.coverity.com Im März 2006 hat Coverity http://scan.coverity.com gestartet, eine Webseite, die sich dem laufenden Scannen vieler populärer Open-Source-Projekte widmet. Über diese Webseite bietet Coverity auch Zugang zu den Fehler-Datenbanken der zahlreichen Entwickler dieser Projekte. Erste Ergebnisse sind in der Seitenleiste zusammengefasst. Wie man sieht, schnitt Linux gegenüber anderen analysierten Open-Source-Paketen sehr gut ab, vor allem im Hinblick auf seine Komplexität:



Erläuterung: Die durchschnittliche Fehlerdichte der von Coverity analysierten 32 Open-Source-Pakete betrug 0,434 Fehler pro Tausend Code-Zeilen. Die Standardabweichung für diesen Ergebnissatz betrug 0,243. Tabelle 1 zeigt die Rohdaten einschließlich der analysierten Code-Zeilen, die Anzahl der gefundenen Fehler, die Analysedauer sowie die Fehlerdichte. Grafik 1 zeigt die Verteilung der Fehlerdichte anhand von Abstufungen, die jeweils einer halben Standardabweichung entsprechen. Grafik 2 zeigt einen Vergleich des LAMP-Stacks mit den Ausgangsdaten aus der Analyse der 32 Open-Source-Pakete. Die durchschnittliche Fehlerdichte für LAMP betrug 0,290, wobei bis auf eine Ausnahme alle LAMP-Pakete eine bessere Fehlerdichte als der Durchschnitt aufwiesen.


Grafik 1

Grafik 2 (*nur Core-Kernel-Code)

Die Reaktion

Knapp sechs Wochen, nachdem die www.scan.coverity.com Webseite online ging, ermöglichte Coverity mehr als 500 Entwicklern den Zugang, so dass diese sofort Maßnahmen gegen die in ihren Code-Basen entdeckten Fehler ergreifen konnten. Diese Entwickler haben weit über 2000 Patches zur Behebung dieser Fehler eingereicht. Somit bilden die Scan-Ergebnisse eine wertvolle Ressource für den Entwicklungsprozess und einen Indikator für die Code-Qualität.

In den darauf folgenden Wochen hat die Linux-Entwickler-Community umgehend auf die im Kernel gefundenen Fehler reagiert. Mehr als 100 Fehler wurden behoben und weitere 80 als zu beseitigende Bugs erfasst. Darüber hinaus haben die Entwickler des High Availability Linux-Projekts alle 30 von Coverity in Linux-HA gefundenen Fehler beseitigt. Zwischenzeitlich weisen 11 Pakete auf http://scan.coverity.com fast keine oder keine Fehler auf (Amanda, ethereal, glibc, icecast, Linux-HA, OpenLDAP, OpenPAM, Python, Samba, SQLite und XMMS). Coverity hat im ersten Jahr die Liste der gescannten Projekte von ursprünglich 32 auf 50 erweitert und fügt laufend weitere Projekte hin. Die Zahl der reparierten Bugs ist aktuell auf 7044 angestiegen.

Alles dank Open-Source-Software Es überrascht nur wenig, dass die zunehmende Beliebtheit des Open-Source-Entwicklungsmodells direkt mit dem Aufkommen technologischer Neuerungen bei der Quellcode-Analyse verknüpft ist. Früher lauteten die Kritikpunkte bei Quellcode-Analysen: eingeschränkte Skalierbarkeit (auch viel versprechende Algorithmen konnten nicht Millionen von Code-Zeilen analysieren) oder viele False Positives (man lasse Lint einmal über Millionen von Code-Zeilen laufen!) oder beides. Obwohl bereits unzählige Zeilen von Code existieren, sind die meisten von ihnen Unternehmenseigentum und somit nicht offengelegt, weshalb Verfahren zur Optimierung der Software-Qualität nicht auf breiter Basis getestet werden konnten. Die Popularität von Linux und dem Open-Source-Modell ändert dies allmählich, so dass Forscher und kommerzielle Anbieter wie Coverity ein riesiges Archiv aus in der Praxis eingesetztem Code nutzen können, um die Quellcode-Analyse zu optimieren. Heute wird diese Technologie von kommerziellen wie Open-Source-Entwicklern gleichermaßen verwendet, wovon alle weltweit existierenden Software-Programme profitieren.

10/2007, Ben Chelf



Ben Chelf, Chief Technology Officer, zählt zu den Mitbegründern von Coverity. Er gehörte den Gründungsmitgliedern des Stanford Computer Science Laboratory-Teams an, das die Technologie von Coverity entworfen und entwickelt hat.
Alle Experten   
Publizieren Sie Ihren eigenen Fachbeitrag   


Kommentare zu diesem Beitrag 


Schreiben Sie einen Kommentar zu diesem Beitrag

Newsletter abonnieren

Verpassen Sie nichts und bleiben Sie informiert mit unserem Newsletter.
Ihre E-Mail Adresse:  
RSS-Feed: Alle News aktuellUnsere News auf Ihrer Website

Weitere Beiträge zu diesem Thema

Human Factors im Krisenmanagement: Anforderungen an Krisenstäbe
Das erfolgreiche Bewältigen von Krisen ist eine Anforderung, die in allen Branchen zunehmend wichtiger wird. Dies gilt nicht nur für die besonders krisenträchtigen high-risk-environments wie Luftfahrt, Polizei oder Rettungswesen, sondern auch für ...
So lassen sich Datenträger sicher löschen
Wer einen alten Computer, sein gebrauchtes Handy und benutzte Speichermedien verkauft oder verschrottet, sollte darauf achten, dass alle Dateien wirklich gelöscht sind. Die Landesinitiative »secure-it.nrw« sagt, wie man es richtig macht ...
Plötzlich wird der Bildschirm schwarz…
… und alles ist weg! So sieht der Alptraum eines Schülers oder Studenten aus, der vor einer wichtigen Prüfung steht, eine Hausarbeit oder ein Referat anfertigen muss und nicht auf die relevanten Daten zugreifen ...
Finjan's Web Security Trends Report: Widgets und Gadgets bergen Gefahren
Finjan Inc. weist darauf hin, dass scheinbar harmlose Widgets und Gadgets Computer einer ganzen Reihe von Angriffen aussetzen können ...
Datensicherheit neu definiert: wie sicher sind Unternehmensdaten wirklich?
Die weit verbreitete Definition akzeptabler Sicherheit ist alarmierend schwach, wie ein Blick in die Zeitung zeigt. Fast täglich wird über Viren, Spyware, internen Datendiebstahl, Identitätsklau oder Hacker berichtet. Leider geben sich Unternehmen ...

Beiträge aus anderen Themenbereichen

Praxis: Volkswagen Zubehör GmbH schafft neue Beweglichkeit im Finanzreporting
Um auf die Anforderungen des Marktes schneller und flexibler reagieren zu können, hat die Volkswagen Zubehör GmbH ihr Finanzreporting einer radikalen Frischzellenkur unterzogen...
VOICE Days plus 2010: Zukunftsweisender Kongress wirft einen Blick in die Servicewelt 2015
Am 12. Oktober 2010 dreht sich auf dem Kongress der VOICE Days plus alles um aktuelle Strategien für die erfolgreiche Gestaltung der Kundeninteraktion. Interview mit Nils Müller, CEO & Founder TrendONE und Keynote-Speaker...
Wie Mitarbeiter zur Suchmaschinenoptimierung beitragen können
Gerade in kleineren und mittelständischen Unternehmen wird oft aus Zeit- und Budgetgründen die Optimierung der eigenen Website für Suchmaschinen vernachlässigt...

Paar sucht Sie
Das Content Management PortalDas Dokumenten Management PortalDas IT-Security PortalDas Customer Relationship Management PortalDas E-Commerce PortalDas Enterprise Resource Planning PortalPortal für VoIP und mobile KommunikationDas Magazin für IT im KrankenhausDas Verzeichnis für IT-Profis
homeimpressumerklärung zum datenschutz - privacy policykontaktwerbung

know how

news

veranstaltungen

sicherheitswarnungen

Schnellsuche







Aktueller Buchtipp


Security Awareness - Neue Wege zur erfolgreichen Mitarbeiter-Sensibilisierung