Entwickler zurück auf die Schulbank – Code-Security

24. Januar 2014

Das vergangene Jahr hat mal wieder durch zahlreiche Daten-Lecks gezeigt, dass angreifbare Software für Unternehmen (und deren Kunden) sehr problematisch ist. Als eines der aktuellen großen “Opfer” der Fehleinschätzung eines “potentiellen Problems” lässt sich Snapchat anführen. Dort wurde die Warnung vor einer Ausspähung von Account-Namen und Telefonnummern der Teilnehmer als “Theoretically” abgetan – mittlerweile steht die Datenbank im Netz zum Download bereit.

Solche vermeidbaren Datenpannen müssen nicht sein, wenn die Entwickler entsprechend geschult sind und die Applikationsverantwortlichen auf entsprechende Warnhinweise mit der gebotenen Sensibilität reagieren. Dass dies kein Einzelfall ist, zeigt eine aktuelle Analyse von IOActive Research, in der allein 40% der getesteten Mobile Banking Apps die Gültigkeit von SSL-Zertifikaten gar nicht erst prüfen – ein klares Zeichen dafür, dass selbst Grundlagen von Applikationssicherheit bei der Entwicklung der Applikationen keine Beachtung gefunden haben und die Applikationen keinen Sicherheits-Review-Prozess durchlaufen haben (zumindest keinen, der auch tatsächlich relevante Dinge prüft).

Ein guter Startpunkt für den Knowhow-Aufbau ist die Webseite der Organisation “OWASP”. Hier gibt es nicht nur die TOP 10 der Webentwicklungssünden (OWASP TOP 10 – die übrigens auch im Jahr 2013 immer noch von “Injection flaws” angeführt wird), sondern auch viele Informationen darüber, wie man als Entwickler eben diesen Problemen vorbeugen kann. Spezifische Informationen zu einzelnen Technologien gibt es auch auf verschiedenen Blogs (exemplarisch für den .Net-Bereich sei hier der Blog von Troy Hunt zu nennen).

Aber allein die Fakten zu kennen reicht in diesem Bereich bei weitem nicht. Die Absicherung von Web-Applikationen gegen Missbrauch gleicht einem ungleichen Wettkampf, bei dem der Verteidiger sich an Regeln zu halten hat und jeden Aspekt der Angriffsfläche über den kompletten Lebenszyklus der Anwendung verteidigen muss, während der Angreifer zu einem beliebigen Zeitpunkt nur eine einzelne Lücke zu erkennen braucht. So sollte bereits bei der Planung der Software analysiert werden, welche Daten welchen Schutzbedarf haben, welche Systeme wie gefährdet werden können und welche Maßnahmen diesen Gefahren entgegen wirken können.

Die beste Planung der Sicherheit ist aber nutzlos, wenn die Implementierung der beschlossenen Maßnahmen nicht erfolgt. Code Reviews durch einen (unvoreingenommenen) Spezialisten, Training der Entwickler und Test der Applikation auf Verwundbarkeiten über Penetrations-Tests stellen sicher, dass es nicht nur bei einer guten Planung bleibt, sondern dass die saubere Umsetzung der Maßnahmen erfolgt.