Wie entwickle ich sichere Software?

von Peter Soth

Letzte Woche habe ich den Vortrag „Sichere Softwareentwicklung“ beim Cyberforum besucht. Als Rednerin konnte das Cyberforum Frau Petra Barzin von dem Karlsruher Security Spezialisten Secorvo GmbH gewinnen. Dass dieses Thema immer wichtiger wird zeigen verschiedene Studien, wie beispielsweise die e-Crime-Studie von KPMG [1].

Da Geschäftsprozesse immer stärker mit Web-Anwendungen verknüpft werden und diese dadurch immer komplexer werden, reicht es nicht mehr aus nur noch Firewalls oder Email-Filterlösungen zu benutzen. Bei Firewalls ist hier im Besonderen als Problem zu sehen, dass die Kommunikation über Http-Protokoll läuft. Die Firewall jedoch nicht erkennen kann, ob ein Http-Request gut- oder bösartig ist. Aus diesem Grund wird es immer wichtiger, zum einen Entwickler für dieses Thema zu sensibilisieren und zum anderen den Einsatz von Application Firewalls in Betracht zu ziehen.

Warum wird der Aspekt Sicherheit bei der Software-Entwicklung vernachlässigt?

Vielen Anwendern sind die Risiken, wie Imageschaden und ein daraus resultierender Wettbewerbsnachteil nicht bewusst. Aus Kosten- und Zeitdruck werden in den meisten Projekten nicht-funktionale Anforderungen wie Sicherheitsaspekte gerne ausgeklammert. Besonders interessant fand ich hierbei die Aussage der „Implizierten Erwartung“ aller an dem Projekt beteiligten Parteien. So geht der Kunde davon aus, dass schon alles sicher sein wird, das IT-Systemhaus auch, sowie der Hosting-Provider. Aber richtig adressiert wird der Sicherheitsaspekt von keinem der Projektbeteiligten.

Was sind typische Fehler in der Entwicklungsphase?

Folgende Punkte sind hier von Frau Petra Barzin aufgeführt worden:

  • Keine Bedrohungsanalyse bei der Erhebung der Anforderungen
  • Schwachstellen im Entwurf der Anwendung
  • Schwachstellen in der Programmierung der Anwendung
  • Keine Testfälle für möglichen Missbrauch der Anwendung
  • Unzureichende Dokumentation für sichere Konfiguration der Anwendung im Betrieb
  • Unzureichende Sicherheitsmaßnahmen in der Entwicklungsumgebung

Folgende Schwachstellen (es gibt natürlich noch mehr [2]) wurden exemplarisch bei der Programmierung aufgezeigt:

  • Command Injection
  • SQL-Injection
  • Buffer Overflow

Wie kann Sicherheit im Entwicklungsprozess gewährleistet werden?

Folgende Punkte müssen hier laut Petra Barzin erfüllt sein: 

  • Integration von Sicherheitsaspekten in die existierende Softwareentwicklungsmethodik
  • Mit allen Entwicklungsmodellen kann sichere Software entwickelt werden. Es ist also gleichgültig, ob mit Wasserfall oder Scrum gearbeitet wird.
  • Sicherheit von Software muss in allen Phasen der Entwicklung beachtet werden.
  • In jeder Phase sollen sicherheitsbezogene Maßnahmen ergänzt werden
  • Ein auf das eigene Unternehmen zugeschnittener Prozess

Wie kann eine Bedrohungsanalyse durchgeführt werden?

Es gibt folgende Möglichkeiten: 

  • Attack Trees [3]
  • Data Flow Diagrams, weitere Infos bspw. hier[4]

Fazit

Alles in allem ein sehr gelungener Vortrag. Ich habe für mich mitgenommen, dass wir zukünftig unsere Test-Cases noch mehr um Sicherheitsaspekte erweitern und dass wir noch mehr Wert auf die Validierung von Eingangswerten legen sollten. Zu guter Letzt möchte ich noch die Homepage des „The Open Web Application Security Project“ erwähnen. Hier wurde zuletzt im Jahr 2010 eine Top-Ten-Liste [5] der 10 größten Sicherheitsprobleme bei Web-Applikationen erstellt. Des Weiteren möchte ich noch auf den Blog-Post [6] meines Kollegen Manuel Breitfeld - zum Einsatz von Fail2ban zur Sicherung einer (Grails-)Web-Applikation - hinweisen.

Kategorien: exensioIT-Consulting

Zurück