Heute ist der 256. Tag im Jahr 2018. Genau 256 Werte (von 0 bis 255) lassen sich mit einem Byte (=8bit) darstellen. Da die Zahl im Computerwesen so fundamental ist, bestimmte man den 256. Tag als Tag des Programmierens – welcher meistens auf den 13. September fällt.
Dieser Tag erinnert an alle Menschen, die Tag für Tag Code entwickeln, der uns in neuen Technologien das Leben komfortabler gestalten soll. Wir möchten diesen Tag zum Anlass nehmen, um einige Tipps vorzustellen, mit denen sich die Sicherheit von Code evaluieren lässt.
Kenne die Schwachstellen: Der Schlüssel zur sicheren Entwicklung
Selbst wenn Sicherheitslücken immer wieder auftauchen und veröffentlicht werden, sind die Top 10 der bekanntesten Schwachstellen bei Web Applications seit fünf Jahren unverändert. Das verdeutlicht auch der Bericht von OWASP, wenn man die Schwachstellen-Rangliste von 2017 mit der von 2013 vergleicht. Wir glauben, dass viele Entwickler entweder immer wieder die gleichen Fehler begehen, weil sie die Schwachstellen entweder nicht kennen oder sich nicht die Mühe machen, nach Sicherheitslücken in ihrem Code zu forschen.
Wer sichere Web Applications entwickeln möchte, sollte die Schwachstellen kennen, unter der der eigene Code möglicherweise leiden könnte – zumindest die sehr bekannten und häufig auftretenden. Auf der OWASP-Webseite finden sich nicht nur detaillierte Informationen über Sicherheitslücken, sondern auch eine große Anzahl von Tools und Projekten, welche die sichere Entwicklung von Web Applications fördern.
Code-Kontrolle während des Schreibens
Heutzutage gibt es eine breite Vielfalt an Source Code Analysis Tools, welche im Static Application Security Testing (SAST) zum Einsatz kommen. SAST-Technologien wurden entwickelt, um Quellcode auf Sicherheitslücken hin zu analysieren – noch vor der Quellcode-Kompilierung.
SAST-Lösungen können direkt in die Entwicklungsumgebung eingebunden werden. Durch Static Code Analysis Techniken wird der Programmierer über Fehler oder Schwachstellen informiert, die sich während seiner Arbeit in den Quellcode einschleichen. Dieses unmittelbare Feedback-System ist besonders interessant, da Sicherheitslücken frühzeitig im Entwicklungs-Zyklus identifiziert werden.
Außerdem ermöglicht die Analyse dem Programmierer die kontinuierliche Überwachung des Codes und die Identifizierung von Problemen. Detaillierte Informationen tragen zur schnellen Problembehebung genauso bei, wie zur größeren Code-Integrität.
Diese Tools sind zwar sehr nützlich, wenn man bekannte Sicherheitslücken wie SQL-Injections oder Buffer Overflows identifizieren möchten. Allerdings werden viele andere Arten von Schwachstellen, wie Konfigurationsfehler, Authentifizierungsprobleme oder Fehler in der Softwarelogik nicht automatisch erkannt.
Code nicht auszuführen oder zu kompilieren kann zu False-Positives führen, was wiederum Verwirrung stiftet und Zeitverschwendung darstellt. Die Wahl der richtigen Tools für die Entwicklungsumgebung ist für die Aufdeckung von möglichen Sicherheitslücken also von großer Bedeutung.
Wer Source Code Analysis Tools einsetzen möchte, sollte sich die von OWASP veröffentlichte Liste ansehen. Selbst Wikipedia hält einige weiterführende Informationen und Tools zur statischen Codeanalyse parat.
Sicherheitstest
Bevor eine Software „in Produktion geht“ – also massenhaft verbreitet wird, sollte sie ausgiebig getestet werden. In dieser Phase muss der Entwickler nicht nur überprüfen, ob die Anwendung das gewünschte Verhalten aufweist, sondern auch, dass keine unerwarteten Fehler auftreten. Außerdem muss sichergestellt werden, dass sie sicher ist und keine Sicherheitslücken aufweist. DAST-Tools (Dynamic Analysis Security) haben sich hierbei bewährt. Anstatt den Quellcode zu untersuchen, laufen die DAST-Tools außerhalb der Anwendung und starten bösartige Anfragen. Sicherheitslücken werden anhand der erhaltenen Antworten aufgedeckt.
In diesem Stadium werden andere Arten von Schwachstellen erkannt, die zuvor mit SAST nicht erkannt wurden, wie z. B. fehlerhafte Konfigurationen, unsichere Protokolle oder logische Probleme. Im Gegensatz zur statischen Analyse, die sofort verwendet werden kann, ist es in dieser Analyse jedoch erforderlich, die Regeln anzupassen sowie die Anforderungen für alle möglichen Einträge entsprechend der zu analysierenden Anwendung zu erstellen.
Es gibt zahlreiche dynamische Analysetools. Die meisten haben allerdings hohe Wartungskosten, weswegen die Software meist nur gegen bezahlte Lizenzen veräußert wird. Eine umfassende Liste mit kommerziellen und Open Source Optionen bietet die OWASP-Liste Vulnerability Scanning Tools.
Letztendlich sollte jeder Programmierer die Praktiken der sicheren Entwicklung beherrschen. Kein automatisiertes Tool der Welt kann alles im Kontext sehen und alle Sicherheitslücken schließen. Wenn man allerdings Tools wie SAST und DAST benutzt, sollten diese immer mit den neusten Updates versorgt sein – das gilt auch für die IDE und alle Plugins. Nicht benötigte Module und Dateien sind zu entfernen.
Die Qualität einer Software wird auch von deren Sicherheitsstandard beeinflusst.