Unsichere Design-Schwachstelle: Erläuterung und Beispiele

In den heutigen schnelllebigen Entwicklungsumgebungen wird die Sicherheit oft vernachlässigt. Anwendungen ohne wirksame Sicherheitskontrollen sind ein gefundenes Fressen für Bedrohungsakteure. Daher ist es wichtig, sich des unvermeidlichen Nebenprodukts der modernen Softwareentwicklung bewusst zu sein – Sicherheitsrisiken und Schwachstellen, die mit den Anwendungen veröffentlicht werden können.

Unternehmen müssen bereits in den frühesten Phasen des SDLC einen ausgefeilten Ansatz für das Sicherheitsmanagement wählen. Andernfalls wäre es mit großem Aufwand verbunden, die grundlegenden Entscheidungen im weiteren Verlauf zu ändern. Wird das Geschäftsrisiko in der Entwurfsphase nicht richtig eingeschätzt, führt dies zu einem unzureichenden Sicherheitsniveau, das Ihre Anwendung anfällig für Schwachstellen macht, die als “Insecure Design” bezeichnet werden.

Das Verständnis der aktuellen Bedrohungslandschaft ist ein guter Ausgangspunkt für die Förderung einer sicheren Entwicklungskultur. In diesem Blogbeitrag werden wir uns eingehend mit den Details der Schwachstellen des unsicheren Designs, den möglichen Auswirkungen und den Präventionsmethoden befassen.

Was ist unsicheres Design?

Unsicheres Design ist ein neues Mitglied der OWASP Top 10-Familie für 2021, das erstmals ganz oben auf der Liste erscheint. Es handelt sich dabei um eine unglaublich breit gefächerte Kategorie, die Risiken im Zusammenhang mit Design- und Architekturfehlern in Webanwendungen abdeckt, die von böswilligen Akteuren ausgenutzt werden können, und die direkt an vierter Stelle steht.

Unsichere Designschwachstellen resultieren aus der Nichtbeachtung bewährter Sicherheitspraktiken während des Designprozesses. Heutzutage ist dies eine der Hauptursachen für Funktionsausfälle, Datenschutzverletzungen, gebrochene Richtlinien und einen geschädigten Ruf.

Die folgende Kategorie spiegelt das Bewusstsein wider, dass die frühzeitige Zusammenführung von Entwicklung und Tests in der Systementwurfsphase die Qualität, Lesbarkeit und Sicherheit des Codes verbessern kann. Dies ist das ultimative Beispiel für die “shift left” Testbewegung – weniger Verschwendung und mehr Effizienz.

Wie können Bedrohungsakteure ein fehlerhaftes Design ausnutzen?

Wenn es um die Sicherheit einer Anwendung geht, wird das Design oft übersehen. Wenn Entwickler, QA-Ingenieure und Sicherheitsteams in der Codeentwurfsphase nicht die richtigen Praktiken anwenden, wird die Anwendung zu einem sicheren Ziel für böswillige Akteure. Ein unsicheres Design würde es Angreifern ermöglichen:

  • Umgehung der von einer Webanwendung verwendeten Authentifizierungsmechanismen
  • Änderung bestimmter URL-Parameter über nicht autorisierte Kanäle
  • Zugriff auf die Systeme, um sie nach sensiblen Informationen zu durchsuchen
  • Annehmen von legitimen Benutzerkonten und unbefugter Zugriff auf passwortgeschützte Ressourcen, um das System weiter auszunutzen
  • sich Zugang zu einer beliebigen Umgebung verschaffen und den Angriff auf andere Umgebungen ausweiten
  • Spoofing eines Zielsystems, um Server und Netzwerke mit mehreren Anfragen zu überlasten und zum Absturz zu bringen
  • Gezielte Abfragen senden, um Informationen über Systemschwachstellen zu erhalten, die einen Angriff begünstigen können
  • Vollständige Übernahme des Kontos
  • Ausführen anderer Angriffe wie Cross-Site-Scripting, SQLi, LDAP-Injection, Cross-Site Request Forgery und Path Transversal

Anwendungen ohne sicheres Design können potenziell schwerwiegende Folgen und unermessliche Schäden in Form von Datenlecks, ruiniertem Ruf und stundenlangen Aufräumarbeiten nach sich ziehen.

Beispiele für unsicheres Design

Die folgenden Szenarien veranschaulichen, wie unsichere Designschwachstellen von böswilligen Akteuren ausgenutzt werden können, um Schaden anzurichten und das Vertrauen der Verbraucher zu erschüttern:

  • WordPress und die meisten anderen CMS-Plattformen setzen keine Grenzen für erfolglose Anmeldeversuche im Administrationsbereich, was sie anfällig für Brute-Force-Angriffe macht. Höchstwahrscheinlich würde ein Hacker eine große Anzahl von Kombinationen bei einem Ziel versuchen. Um diese Angriffe abzuschwächen und abzuwehren, wäre die Installation von Sicherheitserweiterungen von Drittanbietern erforderlich.
  • Eine Kinokette bietet Rabatte für Gruppenreservierungen mit einer Anzahlung von bis zu fünfzehn Personen an. Böswillige könnten diesen Mangel ausnutzen und versuchen, mit wenigen Klicks alle Kinositze auf einmal zu buchen. Wenn eine Website es zulässt, dass eine große Anzahl von Reservierungen vorgenommen wird, ohne dass eine Anzahlung oder Kreditkarteninformationen erforderlich sind, wird sie letztendlich massive Einnahmeverluste erleiden.
  • Einer beträchtlichen Anzahl von E-Commerce-Websites fehlen Abwehrsysteme gegen Bots, die von Scalern für den Kauf von erstklassigen Videokarten eingesetzt werden. Dies bietet Betrügern eine gute Gelegenheit, Exponate zu einem höheren Preis auf Auktions-Websites zu verkaufen, was es für Enthusiasten extrem schwierig oder sogar unmöglich macht, die Karten zum empfohlenen Verkaufspreis zu erwerben.

Die folgenden Beispiele zeigen, dass eine vollständige Beobachtbarkeit aller Sicherheitsaspekte während des gesamten Entwicklungszyklus von größter Bedeutung ist.

Wenn es um Sicherheit geht, gibt es kein “einrichten und vergessen”. Ohne ein sicheres Design sind die Anwendungen anfällig für Cyberangriffe und können dem schlimmsten Fall nicht standhalten.

Wie kann man unsicheres Design erkennen und beheben?

Die Identifizierung von Schwachstellen in der Entwurfsphase ist der kostengünstigste Weg, um die Gefahren an der Wurzel zu packen. Die Durchführung automatisierter Tests oder Scans minimiert die Anfälligkeit Ihrer Anwendung für Sicherheitslücken und verringert die Wahrscheinlichkeit eines erfolgreichen Angriffs.

Mit der Testautomatisierung wird das Verschieben nach links viel einfacher. Tests werden häufig vor, während und nach dem Entwicklungsprozess durchgeführt. IT-Spezialisten können Tools zur Testautomatisierung nutzen, um so früh wie möglich Rückmeldungen über die Stabilität ihres Produkts zu erhalten.

Modellierung von Bedrohungen

Durch die Annahme der Perspektive böswilliger Akteure deckt die Bedrohungsmodellierung potenzielle oder tatsächliche böswillige/zufällige Ereignisse auf, identifiziert Sicherheitsbedürfnisse, bewertet die Kritikalität von Bedrohungen und setzt Prioritäten für Sicherheitsverbesserungen. Es ermöglicht eine rationale Entscheidungsfindung über den Umgang mit Anwendungssicherheitsrisiken.

Penetrationstests

Mit den richtigen Tools für Penetrationstests können Entwicklungsteams agile und sichere Umgebungen schaffen. Regelmäßige Tests garantieren die Qualität des Produkts und ersparen Ihnen zeit- und kostenintensive Nachbesserungen. Das QAwerk-Team kann dabei helfen, Sicherheitslücken in der Systemverteidigung zu entdecken und Schwachstellen zu beseitigen, bevor ein echter Hacker sie ausnutzt.

Wenn Sie “wie ein Hacker” denken, können Sie herausfinden, wie er Ihre Anwendung infiltrieren kann. Mit diesem Wissen können Sie alle notwendigen Maßnahmen ergreifen, um einen Angriff zu verhindern.

Scannen

Modernste Scanning-Tools ermöglichen es Unternehmen, ihre Systeme kontinuierlich zu bewerten und auf die neuesten Sicherheitsbedrohungen zu überwachen. Sicherheitsscans können Entwicklern dabei helfen, Probleme frühzeitig zu erkennen, so dass sie vor der Softwareveröffentlichung angegangen und behoben werden können. Dies ist eine der besten Möglichkeiten, um Schwachstellen für die Behebung zu priorisieren, wobei die Art des Angriffs, die Schwere der Gefährdung und die Zugriffsebene berücksichtigt werden.

Da die Zahl der Cyber-Bedrohungen von Tag zu Tag steigt, ist es Für Ingenieure ist es wichtig zu verstehen, dass die Sicherheit nicht auf der Strecke bleiben darf, wenn es um Geschwindigkeit geht. Um sichere Anwendungen auf den Markt zu bringen, müssen den Entwicklern die Werkzeuge an die Hand gegeben werden, mit denen sie ihre Arbeit ohne Hindernisse und ohne zusätzlichen Aufwand sicher durchführen können.

Prävention und Schadensbegrenzung bei unsicherem Design

Oftmals ist man so sehr mit der Bereitstellung von Funktionen und dem Funktionieren der Dinge beschäftigt, dass die Sicherheit nur ein Kästchen ist, an das man wenig oder gar nicht denkt. Der Entwicklungsprozess muss die Sicherheit bei jedem Schritt berücksichtigen, vom Entwurf über die Implementierung bis hin zur Bereitstellung und Wartung.

Im Unterschied zu anderen kritischen Schwachstellen können unsichere Designs nicht durch eine perfekte Implementierung behoben werden. Sie erfordern Sicherheitskontrollen, um die Bedrohungen zu mindern. IT-Spezialisten können einige Schritte unternehmen, um das Auftreten dieser Risiken zu minimieren und sich so gut wie möglich vor Cyberangriffen zu schützen. Zu den Optionen zur Verhinderung unsicherer Designs gehören:

  • Wechseln Sie von DevOps zu DevSecOps
  • Implementieren Sie eine detaillierte Bedrohungsmodellierung für kritische Authentifizierung, Zugriffskontrolle, Geschäftslogik und wichtige Abläufe, um potenzielle Bedrohungen aufzudecken, die Ihr System beeinträchtigen könnten.
  • Verwenden Sie sichere Entwicklungsverfahren
  • Zusammenarbeit mit AppSec-Experten, die Sie bei der Bewertung von Sicherheits- und Datenschutzkontrollen unterstützen können
  • Verwendung einer umfassenden Standardbibliothek mit sicheren Entwurfsmustern und gebrauchsfertigen Komponenten
  • Integrieren Sie Sicherheitssprache und -kontrollen in die User Stories
  • Konfigurieren Sie Bot-Signaturen, damit Ihr System zwischen gutartigen und bösartigen Bots unterscheiden und den Datenverkehr unterschiedlich behandeln kann.
  • Implementierung eines angemessenen Grades an Trennung auf der System- und der sicheren Kommunikationsschicht
  • Begrenzung des Ressourcenverbrauchs nach Benutzer oder Dienst
  • Konfigurieren Sie die HTTP-Compliance so, dass das System Validierungsprüfungen für HTTP-Anfragen durchführt, um sicherzustellen, dass die Anfragen richtig formatiert sind.
  • Gründliche Filterung aller Ausgaben

Bei der sicheren Gestaltung geht es um Prävention und nicht um “Behandlung”. Wenn Unternehmen die höchsten Codierungsstandards einhalten und Sicherheitsvorkehrungen zu gegebener Zeit treffen, hilft ihnen das, Risiken zu vermeiden und kostspielige Fehler zu verhindern.

Dieser neue #4-Zusatz ermutigt Entwicklerteams, Sicherheit ernst zu nehmen und genügend Zeit für die Entwicklung neuer Anwendungen mit einfachen, robusten und übersichtlichen Architekturen aufzubringen.

Resümee

Da das Design eines Systems den Entwicklungsprozess bestimmt, ist es für Unternehmen von entscheidender Bedeutung, dass das Design so makellos und unempfindlich gegen bösartige Angriffe wie möglich ist. Ein effektiver Ansatz für die IT-Sicherheit muss defensiv sein, um sicherzustellen, dass Sicherheitslücken im Web niemals in den Code gelangen.

Die vierte Kategorie der OWASP-Top-Ten-Liste zeigt, dass die Modellierung von Anwendungsbedrohungen nicht mehr optional ist. Durch den Einsatz von Bedrohungsmodellen während des gesamten SDLC können Unternehmen potenzielle Bedrohungen frühzeitig erkennen, um Probleme zu beseitigen und den möglichen Schaden zu minimieren.

Durch sorgfältig geplante Bedrohungsmodelle, proaktives Schwachstellenmanagement, bewährte Architekturmuster und einen ordnungsgemäßen SDLC lassen sich Schwachstellen im Design vollständig vermeiden. Die Durchführung von Sicherheitstests kann die inhärente Sicherheit der Anwendung deutlich erhöhen.