Zur Navigation Zur Suche Zum Inhalt

Cyber-Security-Aspekte in der Software-Entwicklung

Angelo Conconi
Cyber Security_SE

Anforderungen an die Sicherheit einer Software-Lösung sind meistens nicht-funktionale Anforderungen, weshalb sie in vielen Fällen nicht spezifiziert sind und somit auch kaum implementiert werden (Ausnahme ist häufig das "Berechtigungskonzept"). In diesem Beitrag werde ich versuchen zu beschreiben, wie wir in Absprache mit unseren Kunden Massnahmen treffen, um Sicherheitsaspekte in unseren Softwareprojekten zu identifizieren, zu adressieren und zu sichern. 

Welche Sicherheitsaspekte prüfen wir?

  • OWASP (Open Web Application Security Project) verwenden wir als Hauptleitfaden für Sicherheitsmassnahmen. Wir haben uns für OWASP entschieden, weil es sich um einen effizienten und weithin anerkannten Standard handelt, der die häufigsten Schwachstellen in Webanwendungen abdeckt.
  • Andere Branchenstandards, die wir verwenden können, sind z.B. NIST, CIS-Benchmarks oder kunden-/projektspezifische Empfehlungen.

Warum verwenden wir diese Massnahmen?

  • Umfassende Abdeckung: Diese Massnahmen orientieren sich an den Best Practices und Standards der Branche und bieten eine robuste Sicherheitsabdeckung, um spezifischen Risiken wie SQL-Injection-Angriffen, Cross-Site Scripting (XSS), unsicherer Deserialisierung und mehr zu begegnen.
  • Skalierbarkeit und Kompatibilität: Standards wie OWASP ermöglichen die Anpassung von Sicherheitsmassnahmen in Anwendungen jeder Grösse und Komplexität.
  • Einhaltung gesetzlicher Vorschriften: Diese Massnahmen tragen dazu bei, die Einhaltung internationaler Datenschutz- und Informationssicherheitsvorschriften zu gewährleisten.

Wie überprüfen wir die Umsetzung dieser Massnahmen?

  • Spezifikationsprüfung: Wir überprüfen technische und fachliche Spezifikationen, um sicherzustellen, dass Sicherheitsaspekte von Anfang an berücksichtigt wurden.
  • Quellcode-Analyse: Es gibt mehrere Tools , um statische Code-Analysen durchzuführen. Wir verwenden hierfür SonarCloud, es hilft, Schwachstellen, Code-smells und Qualitätsprobleme zu erkennen.
  • Interne Tests: Zusätzlich zu externen Überprüfungen führen wir spezifische Sicherheitstests, wie z. B. Fuzzing, durch, um Schwachstellen zu erkennen, die in der statischen Analyse möglicherweise nicht identifiziert wurden. Ein Tool, das verwendet werden kann, ist SharpFuzz für .NET-Anwendungen.
  • Externe Überprüfung und Penetrationstests: Mit Pentest-Tools können wir Penetrationstests und Schwachstellenanalysen aus externer Sicht durchführen. Diese ist nützlich, um reale Angriffe zu simulieren und potenzielle Schwachstellen in der Infrastruktur und den Anwendungen zu erkennen.

Was tun wir nun konkret im Projekt?

Was genau wir im Projekt tun, um die Sicherheitsaspekte zu adressieren, hängt vom Projekt und vom Kunden bzw. dessen Anforderungen ab und wird mit ihm besprochen und festgelegt. Das Ergebnis könnte so aussehen:

  • Risikoidentifikation: Wir beginnen mit einer Risikoanalyse auf Basis von OWASP und anderen relevanten Standards (NIST, CIS), wobei die kritischsten Schwachstellen für die Anwendung und ihre Umgebung priorisiert werden. Wenn das Projekt also z.B. eine API verwendet, priorisieren wir CORS-Prüfungen oder SQL-Injection, wenn ein ORM verwendet wird.
  • Implementierung von Kontrollen: Wir integrieren Sicherheitskontrollen in jeder Phase des Entwicklungszyklus, sowohl in der Entwicklungsphase (d. h. bei der Codeanalyse) als auch beim Testen. Je nach Phase werden die Ergebnisse/Erkenntnisse einer Kontrolle adressiert und gegen diese Schwachstellen abgesichert.
  • Analyse und Tests: Wir führen statische Code-Analysen mit SonarCloud und anderen automatisierten Tools durch, ergänzt durch Penetrationstests mit Pentest-Tools, um potenzielle Fehler zu identifizieren.
  • Spezifische Tests: Wir implementieren Fuzzing mit Tools wie SharpFuzz, um Fehler zu erkennen, die durch böswillige oder unerwartete Eingaben entstehen können.
  • Kontinuierliche Dokumentation: Wir dokumentieren jede Phase des Prozesses, einschliesslich der identifizierten Risiken, der umgesetzten Massnahmen, der Testergebnisse und Empfehlungen für zukünftige Verbesserungen.

Fazit

Sicherheitsaspekte in Softwareprojekten werden nicht "einfach so" adressiert, sondern sie müssen konkret geplant und implementiert werden. Je nach Risikobewertung der einzelnen Prüfpunkte sind unterschiedliche Massnahmen möglich. Als gutes Werkzeug hierzu hat sich der OWASP herauskristallisiert. Die Implementierung und die Überprüfung ist ein fortlaufender Prozess, der auch bei Projektende nicht abgeschlossen ist und beispielsweise über einen Wartungsvertrag bzw. Software Level Agreement abgesichert werden kann.

Weitere Informationen

Wenn Sie daran interessiert sind, wie wir ihnen helfen können, ihre Webanwendung sicherer zu machen, stehe ich Ihnen gerne zur Verfügung - per E-Mail oder über das Kontaktformular. Gemeinsam stellen wir sicher, dass ihre Anwendung jederzeit sicher bleibt.

Jetzt Kontakt aufnehmen