Ich wurde vor einigen Tagen in einem Gespräch mit diversen Vorurteilen aus dem Bereich Opensource Software konfrontiert. Im Kern ging es um die Behauptung, eine Opensource Software (PHP Applikation) führt zu einem erhöhten Sicherheitsrisiko. Die freie Verfügbarkeit des Quelltextes war das Hauptargument welches für die Unsicherheit von Opensource Software angeführt würde. Die Behauptung “eine Opensource Lösung ist generell unsicherer” ist ebenso falsch wie der Umkehrschluss. Es müssen von Fall zu Fall die Fakten untersucht werden. Hier vergleichen wir nun eine Opensource Software mit einer individuellen Lösung.
Inhalt
Ist freie Software unsicher(er)?
Die Argumentation folgte dem Ansatz “Security by Obscurity”. Dabei wurde indirekt unterstellt dass ein erfolgreicher Angriff wesentlich schwerer sei, wenn der Quellcode nicht bekannt ist. Es wurde zudem implizit unterstellt dass bereits durch den Einsatz einer hauseigenen Softwarelösung (eine PHP Webapplikation der gleichen Kategorie) eine höhere Sicherheit gegeben ist. Dabei wurden wichtige Aspekte wie die eigenen Ressourcen und dass Wissem um Sicherheit in keinster Weise berücksichtigt.
Wenn eine neue Software ausgewählt wird, egal ob frei oder proprietär, müssen mögliche Sicherheitsrisiken untersucht werden. Zudem ist es wichtig einen Blick auf die mögliche Zukunft des Projektes zu werfen. Bei externen Lösungen steht immer die Frage ob das Projekt langfristig gepflegt wird im Raum. Aber auch bei internen Lösungen muss geprüft werden ob eine dauerhafte Pflege und Wartung gewährleistet werden kann. Was wenn die Firma wächst und weitere Instanzen der Software benötigt werden? Ist die Software generalisiert und auch für weitere Projekte nutzbar? Eine zentrale Bibliothek ist auch für die Sicherheit eine wichtige Voraussetzung. Auf Dauer werden Sicherheitsprüfungen sonst immer komplizierter, da die Software voneinander abweicht und separate Projekte entstehen.
Opensource vs. Proprietär
Die Opensource Software war eine weit verbreitete PHP Lösung. Durch die hohe Menge an Installationen welche diese Software aufweisen kann, speziell durch die damit verbundene Anzahl an Benutzern und Entwicklern, ergibt sich der Vorteil dass sehr viele Entwickler den Quellcode bereits gelesen haben. Neben Opensource Entwicklern die sich in ihrer Freizeit mit dieser Software befassen gibt es auch viele dritte Anbieter die Erweiterungen/Module dafür entwickeln und verkaufen. Auch viele extrem talentierte PHP Entwickler und Sicherheitsexperten befassen sich mit derartigen Projekten. Das Resultat ist eine beachtlich stabile Basis.
Das Pendant zu der Opensource Lösung war hingegen selbstverständlich nicht mit der Opensource Community zu vergleichen. Nicht einmal Firmen wie Google & Co können eine derartige Menge an Programmierern vorweisen. Es ist in einem derart eingeschränktem Rahmen deshalb nahezu unmöglich einen vergleichbaren Funktionsumfang zu implementieren, diesen in gleichem Maße auf Sicherheit zu überprüfen und im Tagesgeschäft eine fortlaufende Weiterentwicklung der Software zu garantieren. Wurden hier überhaupt Audits durchgeführt und die Software regelmäßig auf Sicherheitslücken untersucht? Fließen neue Erkenntnisse bzgl. Sicherheit ein?
Applikationssicherheit
Die Opensource Software basiert auf dem Zend Framework. Hier werden viele “best practices” der PHP Entwicklung in Form einer Bibliothek gekapselt. Selbstverständlich bedeutet auch dass nicht 100% Sicherheit, allerdings ist ein effektives Mittel gegen Fehler eine übersichtliche und klare Strukturierung. In zweiter Instanz prüfen Unittests den Quellcode auf korrektes Verhalten. Schwachstellen die sich bei Anpassungen durch Seiteneffekte einschleichen könnten, werden weitestgehend unterbunden. Ebenso werden hier die Empfehlungen des Open Web Application Security Projects umsetzt. Zusammengefasst wird bei der Opensource Software im allgemeinen nach bestem Wissen und Gewissen auf Sicherheit geachtet. Die gesamte Struktur ermöglicht es einzelne Klassen als isolierte Einheiten zu betrachten. Die Suche nach Fehlern oder Schwachstellen ist dadurch viel einfacher.
Fazit
Man sollte sich also vor seinem Urteil immer selbst Fragen: kann meine Software in Punkto Qualität mithalten? Überwiegen hier die Vorteile? Sicher werden für Insellösungen keine Exploits veröffentlicht. Hier gilt es aber zu hinterfragen von wem die wirkliche Gefahr ausgeht, denn vor Exploits kann man sich sehr gut schützen wenn man zeitnah aktualisiert. Ist es schlimmer wenn ein Angreifer sein Ziel aus einer Menge von vielen eher zufällig wählt? Ich unterstelle hier einfach mal dass ein Angreifer der ein konkretes Ziel verfolgt hier deutlich gefährlicher ist. Dieser sucht sich seinen Weg in ein System.