Gajus - Fotolia

Software: Sicherheitstests über den Lebenszyklus

Softwarefehler gehen oft mit Sicherheitslücken einher und sorgen für Angreifbarkeit der Systeme. Kontinuierliches Testen kann die Sicherheit erhöhen.

Altgediente ITler kennen das aus dem letzten Jahrtausend: Wann immer ein Hersteller eine neue Anwendung oder eine neue Version auf den Markt brachte, wurden die Anwender als Betatester missbraucht. Sicher nicht vorsätzlich, aber doch vorhersehbar. Es fehlten einfach die Möglichkeiten, eine große Codebasis in vollem Umfang effektiv und effizient zu testen.

Für den Kunden, der eine solche neue Software auf seinen Systemen installierte, war das zuweilen ziemlich lästig, und der Hersteller begann aufgrund des Kundenfeedbacks sofort mit der Entwicklung von Patches und der nächsten Version. Die beseitigte dann die Fehler und hatte zeitgleich neue im Gepäck. Denn natürlich wurden auch die Updates nicht unter allen nur denkbaren Umständen getestet. Die Anwender nahmen das mit mehr oder weniger Murren hin, denn erstens kannten sie es nicht anders und zweitens galt der Spruch „Fehlerfreie Software gibt es einfach nicht“.

Die Zeiten haben sich gewandelt. Anwender sind intoleranter gegenüber Fehlern geworden, zumal diese in der heutigen Zeit oft gleichbedeutend mit einer Sicherheitslücke sind. Darüber hinaus sind die Hersteller selbst, die früher Softwarepakete auf CDs auslieferten, von diesen Lücken heute genauso betroffen wie ihre Kunden, da es zunehmend um gehostete Applikationen geht – von Eigenentwicklungen ganz zu schweigen. Wer eine solche Anwendung online anbietet, muss meist nicht lange darauf warten, dass die ersten Hacker sie auf Schwachstellen untersuchen – für die Anbieter steht heute daher die Integrität des eigenen Netzwerks auf dem Spiel. In E-Commerce-Anwendungen oder Online-Buchungssystemen können Fehler, selbst wenn sie die Sicherheit nicht beeinträchtigen, gravierende finanzielle Konsequenzen haben und auch das Image eines Unternehmens nachhaltig beschädigen. Und das gilt nicht nur für die offensichtlichen Fehler. Immer häufiger zielen DDoS-Attacken (Distributed Denial of Service) auch auf die Anwendung statt nur auf die Infrastruktur mit dem Ziel, die Verfügbarkeit der Applikation gravierend zu beeinträchtigen oder sie gar für legitime Anwender unerreichbar zu machen.

Kaum noch Zeit für Tests

Fehler haben heute also oft wesentlich gravierendere Auswirkungen als früher und müssen daher soweit möglich vermieden werden. Intensive Test sind erforderlich, doch sie benötigen zum einen die richtigen Tools und zum anderen Zeit. Diese Zeit ist kostbar, denn die „Time to Market“ ist häufig einer der Faktoren, die wesentlich über Erfolg oder Misserfolg einer neuen Applikation entscheiden.

Agile Softwareentwicklung ist das Gebot der Stunde, da die Zeiträume zwischen Konzeption und Markteinführung einer Anwendung oft nicht mehr in Monaten, sondern in Tagen oder gar Stunden gemessen werden. Der klassische iterative Prozess zur Fehlerbeseitigung (Entwicklung - Test - zurück zur Entwicklung - neuer Test etc.) ist daher schlicht zu langwierig. Deswegen finden trotz deutlich verbesserter Testtools immer noch Bugs oder Sicherheitslücken ihren Weg in die schließlich ausgelieferte Version, die später mit hohen Kosten beseitigt werden müssen. Das amerikanische National Institute of Standards and Technology (NIST) schätzt, dass diese Kosten allein in den USA jährlich knapp 60 Milliarden US-Dollar betragen. Dabei ist den Entwicklern durchaus bewusst, wie wichtig der Test ihrer Anwendungen ist.

In einer Umfrage von Ixia, einem Anbieter von Test-, Visualisierungs- und Sicherheitslösungen, unter 363 Entwicklern bezeichnete eine deutliche Mehrheit der Befragten Sicherheitstests als kritischste Komponente des gesamten Entwicklungszyklus. 93 Prozent gaben an, ihre Applikation während des Entwicklungsprozesses frühzeitig und kontinuierlich zu testen, sowohl auf Sicherheit als auf das Verhalten unter hoher Last. Dennoch liefern zwei Drittel der Befragten ihre Produkte schließlich mit Bugs und/oder Sicherheitslücken aus. Deren spätere Beseitigung per Patch oder Update ist in der Regel allerdings mindestens viermal so teuer wie eine entsprechende Korrektur während der Entwicklung.

Ein wesentlicher Grund dafür ist offensichtlich, dass über 60 Prozent der Entwickler nicht nur ihre Applikation entwickeln, sondern ihre Testtools gleich mit. Deutlich weniger als die Hälfte setzt bei Sicherheits- und Lasttests kommerzielle Tools und Systeme ein. Das macht es zum einen sehr schwierig, genügend hohe Lasten zu generieren, um das Verhalten einer Applikation etwa bei einem DDoS-Angriff zu eruieren. Zum anderen überfordert es jeden Entwickler, sich kontinuierlich, tagesaktuell und detailliert über Sicherheitslücken und neue Angriffsvektoren zu informieren. Und selbst dann müsste er sie ebenso kontinuierlich in seine selbstentwickelte Umgebung integrieren. Der Zeitvorteil, den die agile Entwicklung verspricht, ist so schnell verspielt. Kommerzielle Testtools dagegen werden vom Anbieter kontinuierlich gepflegt, der in der Regel zudem erheblich mehr Expertise in diesem Bereich hat.

Testen unter realen Bedingungen

Um Last- und Sicherheitstests besser in den Entwicklungszyklus zu integrieren, benötigt man umfassende Testmöglichkeiten schon in frühen Phasen. Hierfür werden Lösungen benötigt, die umfangreichen Anwendungsverkehr generieren, einschließlich bösartigen Traffics und automatisierter Attacken. Nur so können Entwickler Fehler oder Schwachstellen schon in der Phase des Kodierens identifizieren. Wichtig ist dabei auch, dass es sich um realistischen Verkehr handelt, bei dem auch Protokollmix und Verkehrsmuster der realen Einsatzumgebung angepasst werden.

Eine weitere Forderung an integrierte Testlösungen sind die einfache Automatisierung und die Einbettung in CI/CD Frameworks (Continuous Integration/Continuous Deployment). Neben einem reichhaltigen Command Line Interface werden daher auch REST-APIs benötigt. Das agile CI/CD-Modell ist besonders effektiv in Umgebungen mit verteilten Teams, da Dienstleister, Entwicklung, Qualitätskontrolle, Produktion und Vertrieb die Entdeckung und Lösung von Problemen in den unterschiedlichsten Phasen vereinfachen und so die Anwendung schneller marktreif machen können.

Kombiniert man die in den Entwicklungszyklus eingebundenen Testlösungen mit bestehenden für den Test in Produktionsumgebungen, so wird ein kontinuierlicher Test von Applikationen über den gesamten Lebenszyklus hinweg möglich. Solche bestehenden Lösungen ermöglich den realistischen Test von Anwendungen vor dem Rollout unter Berücksichtigung der real vorhandenen IT-Infrastruktur sowie den kontinuierlichen Test bei Veränderung an Anwendung (Updates, Patches) oder dieser Infrastruktur. Zusätzliche Tests innerhalb der Entwicklungsumgebung ergänzen dieses Real-World-Testing, können es aber keinesfalls ersetzen, da auch fehlerfreie Software sich in unterschiedlichen Umgebungen unterschiedlich verhalten wird.

Über den Autor:
Jürgen Haekel ist IT-Fachjournalist in München.

Folgen Sie SearchSecurity.de auch auf Twitter, Google+, Xing und Facebook!

Nächste Schritte

Penetration Tester, kein normaler IT-Job.

IT-Sicherheit: Automatisierte Tests reichen nicht aus.

Wie man Fehlerursachenanalysen in Softwaretests angehen sollte.

Der agile Testprozess: Warum man Tests immer wieder wiederholt.

Artikel wurde zuletzt im November 2016 aktualisiert

Pro+

Premium-Inhalte

Weitere Pro+ Premium-Inhalte und andere Mitglieder-Angebote, finden Sie hier.

Erfahren Sie mehr über Anwendungsangriffe (Cross-Site Scripting, Buffer Overflows)

Diskussion starten

Schicken Sie mir eine Nachricht bei Kommentaren anderer Mitglieder.

Mit dem Absenden dieser Daten erklären Sie sich bereit, E-Mails von TechTarget und seinen Partnern zu erhalten. Wenn Ihr Wohnsitz außerhalb der Vereinigten Staaten ist, geben Sie uns hiermit Ihre Erlaubnis, Ihre persönlichen Daten zu übertragen und in den Vereinigten Staaten zu verarbeiten. Datenschutz

Bitte erstellen Sie einen Usernamen, um einen Kommentar abzugeben.

- GOOGLE-ANZEIGEN

SearchStorage.de

SearchNetworking.de

SearchEnterpriseSoftware.de

SearchDataCenter.de

Close