Die 15 Sicherheitsprinzipien der Softwareentwicklung (Teil 3)

Montag, 6.3.2023

Blogserie-Sicherheitsprinzipien-Software-Teil3

Wir setzen unsere Blogreihe zu den 15 Prinzipien der sicheren Softwareentwicklung fort. Im letzten Teil unserer Serie geht es um die Prinzipien 11 bis 15. Zusätzlich bieten wir alle 15 Kriterien im auf einen Blick in unserem kostenlosen Cheat Sheet zum Download an.

Inhaltsübersicht:
  1. KISS - Keep it simple, stupid (in Teil 1 der Blogserie
  2. Positives Sicherheitsmodell (in Teil 1)
  3. Ursachenbehebungsprinzip (in Teil 1)
  4. Least Privilege (in Teil 1)
  5. Vermeidungsprinzip (in Teil 1)
  6. Minimalprinzip (in Teil 1)
  7. Secure by Design (in Teil 2 der Blogserie)
  8. Misstrauensprinzip (in Teil 2)
  9. Defense in Depth (in Teil 2)
  10. Fail Secure (in Teil 2)
  11. Kenne deinen Gegner
  12. Kerckhoffs'sches Prinzip
  13. Indirektionsprinzip
  14. Konsistente Sicherheit
  15. Nutzerfreundliche Sicherheit

 

Know your Enemy

Know-your-Enemy-Prinzip-Symbolbild

Dieses Prinzip besteht aus den Themen der Risikoanalyse und die potenziellen Angriffstechniken der Angreifer:innen zu kennen. Bei zweiterem reicht die Betrachtung mithilfe von technischem Expertenwissen nicht aus, sondern benötigt auch das eigene Wissen über die fachlichen Abläufe innerhalb des Systems. Die Erkenntnisse daraus fließen in eine Risikoanalyse. Diese Risikoanalyse hat zum Ziel, verschiedene Gefährdungsszenarien zu erfassen, zu bewerten und der Bedrohungslage entsprechend geeignete Maßnahmen (bspw. in Form von Designentscheidungen) treffen zu können.

WARUM SOLLTE ICH DIESES PRINZIP KENNEN / BERÜCKSICHTIGEN?

Eine Risikoanalyse hilft dabei, sich bei der Softwareentwicklung auf konkrete Gefahrenszenarien zu beziehen und real wirksame und der Bedrohungslage entsprechende Entscheidungen zu treffen. Ein gutes Hilfsmittel, um immer wieder aufs Neue mit verschiedenen Angriffsszenarien zu arbeiten und zu lernen, wie Angreifer:innen zu denken, ist es im Backlog Evil User Stories zu definieren.

BEISPIELE FÜR Know your Enemy

Mithilfe von Risikoanalysen fällt es leicht, bspw. den häufig gemachten Fehler, dass Entwickler:innen ohne Hürden auf die Produktionssysteme zugreifen können, zu identifizieren und die Kosten-Nutzen-Rechnung beim Ergreifen von Maßnahmen zu berücksichtigen. Gleiches gilt für das Konzentrieren auf die wesentlichen Schwachstellen mit geeigneten Maßnahmen. Handelt es sich um ein derart wichtiges Asset, dass selbst staatliche Hacker effektiv von einem Zugriff abgehalten werden müssen?

Übrigens: Eine Vielzahl erfolgreicher Angriffe auf Unternehmen gehen von eigenen oder ehemaligen Mitarbeitenden aus. Hier ein paar erwähnenswerte Beispiele der letzten Jahre, in denen Privatpersonen Informationen zu Covid-Impfstoffen gestohlen wurden und Twitterkonten übernommen wurden.

 

Kerckhoffs'sche Prinzip: Verwende einen offenen Entwurf

Kerkchoffsches-Prinzip-Symbolbild

Das Kerckhoffs'sche Prinzip besagt, dass die Sicherheit eines Verschlüsselungsverfahrens auf der Geheimhaltung des Schlüssels beruht, anstatt auf der Geheimhaltung des Verschlüsselungsalgorithmus. Diese Herangehensweise muss auch auf das eigene System angewendet werden. Es muss immer davon ausgegangen werden, dass Angreifer:innen umfassende Informationen über die Systeme erlangen können. Dem Prinzip folgend reicht dies nicht für einen erfolgreichen Angriff aus, denn man ist weiterhin durch die Geheimhaltung der Schlüssel geschützt.

WARUM SOLLTE ICH DIESES PRINZIP KENNEN / BERÜCKSICHTIGEN?

Ein einfacher Weg, sich an dieses Prinzip zu halten, ist es, Software so zu entwickeln, als ob man diese open source auf GitHub veröffentlichen würde. Damit ist bspw. schon das Speichern von Geheimnissen innerhalb der Git-Repositorien in beliebiger Form inakzeptabel.

BEISPIELE FÜR Das Kerckhoffs'sche Prinzip

Das Verschleiern von sensiblen Informationen durch base64 Kodierung von Benutzernamen und Passwort ist Security through Obscurity. Kennen die Angreifenden den Algorithmus, sind die Daten als Klartext zu betrachten.

Ein gutes Java-Gegenbeispiel zu Security through Obscurity ist das Spring Security Modul. Obwohl die Algorithmen, Konzepte und der Code vollständig öffentlich einsehbar sind, handelt es sich um eine in Produktion bewährte Methode, Anwendungen sicherer zu machen.

 

Indirektionsprinzip: Verwende Indirektionen

Indirektion-Symbolbild

Daten können durch die Implementierung von Indirektionen vor unberechtigtem Zugriff zusätzlich geschützt werden. Einen Ersatz für eine dedizierte Zugriffskontrolle stellt das Indirektionsprinzip dabei nicht dar, es erschwert Angreifenden aber zusätzlich die Arbeit.

WARUM SOLLTE ICH DIESES PRINZIP KENNEN / BERÜCKSICHTIGEN?

Als Entwickler:innen und Architekt:innen definieren wir Schnittstellen, über die Daten entgegengenommen und abgefragt werden können. Über welche Referenzen auf Objekte in der Datenbank und auf dem Dateisystem zugegriffen werden kann, haben wir dabei selbst in der Hand. Interna der Implementierung nach außen weiterzugeben, kann die Arbeit von Angreifenden deutlich vereinfachen.

BEISPIELE FÜR das Indirektionsprinzip

Ein Beispiel für die Anwendung des Indirektionsprinzips ist der Zugriff auf Dateien eines Servers, die über eine Schnittstelle bereitgestellt werden. Die Schnittstelle akzeptiert für die Identifikation einer Datei auf dem Server nur UUIDs. Diese UUIDs sind zufällig generiert und können vom Angreifer nicht erraten werden. Die Übersetzung jeder UUID in einen Dateipfad auf dem Server erfolgt in der Implementierung der Schnittstelle und sorgt so für die Indirektion beim Zugriff auf die Dateien.

 

    

Gestalte Sicherheit konsistent

Konsistenz-Prinzip-Symbolbild

Für die Absicherung von Systemen werden verschiedene Maßnahmen kombiniert, die konsistent ausgelegt sein sollten. Die Maxime bei der Planung und Implementierung ist dabei, dass ein System immer nur so sicher ist wie sein schwächstes Glied.

WARUM SOLLTE ICH DIESES PRINZIP KENNEN / BERÜCKSICHTIGEN?

Bei der Konzeption eines Software-Systems wird zunächst der Schutzbedarf bestimmt, aus dem nachfolgend geeignete Sicherheitsmaßnahmen abgeleitet werden. Dabei müssen Architekt:innen nicht nur die Konsistenz der Maßnahmen innerhalb des Systems im Auge behalten, sondern auch dessen Einbettung in die Systemlandschaft. Systeme mit unterschiedlichen Sicherheitsniveaus sollten nicht in derselben Umgebung betrieben werden, da Systeme mit niedrigerem Sicherheitsniveau leichter für Angriffe genutzt werden können und dies eine Gefahr für benachbarte Systeme mit höherem Schutzniveau darstellen kann.

BEISPIELE FÜR konsistente Sicherheit

Besonders schützenswerte Aktionen werden häufig durch eine zusätzliche Authentifizierung der Benutzer:innen abgesichert. Bspw. wird die Administration von Benutzerkonten durch eine zusätzliche Mehr-Faktor-Authentifizierung geschützt. Wenn nach der erfolgreichen Mehr-Faktor-Authentifizierung die Berechtigungsprüfung aber nicht ebenso konsequent umgesetzt ist, kann die fehlende oder fehlerhaft implementierte Zugriffskontrolle das schwächste Glied in der Kette von Authentifizierung und Autorisierung. Das ist z.B. bei einer fehlenden horizontalen Zugriffskontrolle der Fall, d.h. es wird nicht korrekt überprüft, ob die authentifizierte Administrator:in das jeweilige Benutzerkonto auch wirklich bearbeiten darf.

Das beabsichtigte Sicherheitsniveau für die besonders schützenswerte Aktion ist somit nicht konsistent umgesetzt.

 

Gestalte Sicherheit benutzerfreundlich

Userfriendly-Prinzip-Symbolbild

Die Software-Qualitätsmerkmale Sicherheit und Benutzerfreundlichkeit stehen häufig in einem Spannungsverhältnis. Manche Sicherheitsmechanismen können deutlichen Einfluss auf die Bedienbarkeit der Software haben. Ziel sollte es daher stets sein, Sicherheitsmechanismen so zu implementieren, dass bei den Benutzenden eine Akzeptanz geschaffen wird und die Vorteile der Sicherheitsfunktionen verdeutlicht werden.

WARUM SOLLTE ICH DIESES PRINZIP KENNEN / BERÜCKSICHTIGEN?

Bei der Konzeption und Implementierung von Sicherheitsmechanismen können Architekt:innen, Entwickler:innen und UI/UX-Expert:innen darauf achten, Sicherheitsfunktionen leicht verständlich und nachvollziehbar umzusetzen. Dafür ist es hilfreich, frühzeitig User einzubinden und deren Feedback in die Gestaltung von Sicherheitsfunktionen einfließen zu lassen.

BEISPIELE FÜR benutzerfreundliche Sicherheit

Mehr-Faktor-Authentifizierung ist mittlerweile vielen Usern bekannt und bietet einen erheblichen Sicherheitsgewinn. Bspw. bei Überweisungen, bei denen es um das eigene Geld geht, ist für Online-Banking-Nutzern die Eingabe einer TAN selbstverständlich, da so zusätzliche Sicherheit erreicht werden kann bei nur geringfügigen Einbußen in der Bedienbarkeit.

15 Sicherheitsprinzipien der Softwareentwicklung CTA zum Download

Fazit 

Ihnen hat unsere Blogreihe zu den 15 Prinzipien der sicheren Softwareentwicklung gefallen? Sie haben noch Fragen oder Anmerkungen? Fehlt Ihnen vielleicht sogar ein Prinzip? Dann melden kommentieren Sie doch bitte einfach unter diesem Artikel. Alle 15 Prinzipien auf einen Blick bietet Ihnen unser kostenloses Cheat Sheet.

Wenn Sie das Thema sichere Softwareentwicklung weiter interessiert, so empfehlen wir Ihnen unsere IT-Sicherheits-Seminare sowie unseren weiteren Blogartikel aus dem Bereich IT-Sicherheit.

Die AutorEN


Florian-Kretschmer_viadee

 

Florian Kretschmer ist seit 2022 als IT-Berater und Softwareentwickler für die viadee IT-Unternehmensberatung tätig. Über die Entwicklung von maßgeschneiderten Softwarelösungen hinaus engagiert er sich im Kompetenzbereich Security.

 

Andreas Hellmann

 

Andreas Hellmann ist als IT-Berater und Software-Architekt für die viadee IT-Unternehmensberatung tätig. Sein Schwerpunkt liegt in der Entwicklung von Enterprise-Anwendungen mit Java und Web-Technologien. Zudem engagiert er sich im Kompetenzbereich Security und vermittelt sein Wissen in Schulungen. Andreas Hellmann ist zertifiziert als Certified Information Systems Security Professional (CISSP). 

 

Unsere Blogserie 15 Sicherheitsprinzipien der Softwareentwicklung

Add-on: Laden Sie sich kostenlos unsere Übersicht über die 15 Prinzipien herunter.

Unsere Angebote und Schulungen zu IT-Sicherheit.


zurück zur Blogübersicht

Diese Beiträge könnten Sie ebenfalls interessieren

Keinen Beitrag verpassen – viadee Blog abonnieren

Jetzt Blog abonnieren!

Kommentare

Andreas Hellmann

Andreas Hellmann

Andreas Hellmann ist als IT-Berater und Software-Architekt für die viadee IT-Unternehmensberatung tätig. Sein Schwerpunkt liegt in der Entwicklung von Enterprise-Anwendungen mit Java und Web-Technologien. Zudem engagiert er sich im Kompetenzbereich Security und vermittelt sein Wissen in Schulungen. Andreas Hellmann ist zertifiziert als Certified Information Systems Security Professional (CISSP).

Andreas Hellmann bei Xing