OWASP Top 10 – Teil 4: Insecure Design

Was bedeutet „Insecure Design“?

„Insecure Design“ beschreibt grundlegende Schwächen in der Architektur oder Planung einer Anwendung.
Es geht also nicht nur um einen Programmierfehler im Code, sondern darum, dass Sicherheit von Anfang an nicht richtig berücksichtigt wurde.

Ein Beispiel:
Wenn ein Online-Shop keine Zwei-Faktor-Authentifizierung für Admin-Accounts vorsieht, ist das kein Bug im Code, sondern ein Designproblem.

Typische Beispiele aus der Praxis

  • Fehlende Sicherheitskonzepte
    – Es gibt keine klare Definition, wie Daten geschützt werden sollen.
  • Unsichere Standard-Workflows
    – Z. B. Passwort-Reset ohne ausreichende Identitätsprüfung.
  • Fehlende Schutzmechanismen gegen Missbrauch
    – Eine API erlaubt beliebig viele Login-Versuche ohne Sperre (Brute Force wird leicht möglich).
  • Business-Logik-Angriffe
    – Rabattcodes oder Bestellmengen werden nicht begrenzt und können manipuliert werden.

Warum ist das so gefährlich?

  • Fehler im Design wirken sich auf die gesamte Anwendung aus.
  • Selbst wenn der Code später „sauber“ geschrieben ist, bleiben die Konzeptschwächen bestehen.
  • Angreifer können durch logisches Ausnutzen von Prozessen großen Schaden anrichten – ganz ohne komplizierte Hacks.

Wie schützt man sich?

  1. Security by Design
    – Sicherheit von Anfang an einplanen, nicht erst am Ende „dazuflicken“.
  2. Bedrohungsmodellierung (Threat Modeling)
    – Systematisch überlegen: Wer könnte angreifen? Wie? Welche Daten sind besonders schützenswert?
  3. Missbrauchsszenarien durchspielen
    – Nicht nur „wie soll der Prozess funktionieren?“, sondern auch „wie könnte jemand den Prozess missbrauchen?“.
  4. Standard-Schutzmechanismen einbauen
    – Rate-Limiting, starke Authentifizierung, Session-Handling etc. gehören von Beginn an dazu.
  5. Design-Reviews
    – Architektur und Konzepte regelmäßig von Sicherheitsexperten überprüfen lassen.

Kommentare

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert