8 Min. Lesezeit

Security frühzeitig behandeln

Security frühzeitig behandeln

Bei der heutigen Softwareentwicklung ist die Integration der IT-Sicherheit von Anfang an entscheidend. Viele Entwickler vernachlässigen die IT-Sicherheit, bis es zu spät ist, weil sie sich damit überfordert fühlen. Die Integration von IT-Sicherheit als Standardverfahren vereinfacht diese Herausforderung, indem Prinzipien wie Defense in Depth (Verteidigung in der Tiefe) angewandt und individuelle Lösungen vermieden werden. Auch das Gleichgewicht zwischen Open- und Closed-Source-Werkzeugen spielt eine Rolle bei der Entwicklung sicherer Systeme. Ein Überdenken der IT-Sicherheit in der Entwicklung kann zu einer sichereren und zuverlässigeren Software führen.

Podcast Episode: Security frühzeitig behandeln

In dieser Folge spreche ich mit Eoin Woods über die Integration von IT-Sicherheit von Beginn der Softwareentwicklung an. Eoin, ein Experte für Software-Architektur, erklärt, warum IT-Sicherheit oft bis zur letzten Minute vernachlässigt wird. Wir gehen der Frage nach, warum Ingenieure die IT-Sicherheit als abschreckend empfinden, und diskutieren darüber, wie man sie zu einem Standardbestandteil der Entwicklung machen kann. Eoin erläutert Designprinzipien wie Defense in Depth und warnt vor maßgeschneiderten IT-Sicherheitslösungen.

"Avoid custom security solutions whenever possible - they often lead to vulnerabilities." - Eoin Woods

Eoin Woods ist ein unabhängiger Berater in den Bereichen Softwarearchitektur, grüne Software und Softwareentwicklung. Er war früher CTO von Endava, wo er für Software-Engineering und die Entwicklung von Fähigkeiten für mehr als 10.000 Mitarbeiter in der ganzen Welt verantwortlich war. Vor seiner Tätigkeit bei Endava hat er Datenbanken entwickelt, IT-Sicherheitssoftware erstellt und viel zu viele Systeme zum Geldtransport entworfen. Außerhalb seiner beruflichen Tätigkeit interessiert er sich für Softwarearchitektur, IT-Sicherheit und nachhaltige (oder grüne") Software. Er ist ein regelmäßiger Konferenzredner, hat drei Bücher über Softwarearchitektur mitverfasst und wurde 2018 mit dem Linda Northrup Award for Software Architecture des Software Engineering Institute an der CMU ausgezeichnet.

apple spotify youtube

Highlights der Episode

  • IT-Sicherheit sollte von Anfang an in die Softwareentwicklung integriert werden.
  • Ingenieure finden IT-Sicherheit oft überwältigend und ignorieren sie, bis es zu spät ist.
  • Designprinzipien wie Defense in Depth vereinfachen die IT-Sicherheit.
  • Die Vermeidung maßgeschneiderter IT-Sicherheitslösungen ist entscheidend.
  • Open-Source-Werkzeuge und Closed-Source-Werkzeuge haben jeweils ihre Vorteile und Herausforderungen.

IT-Sicherheit wird zur Bürgerin erster Klasse

Einführung

Bewährte Verfahren zur Verschlüsselung sind bei der Softwareentwicklung äußerst wichtig. Es ist unerlässlich, der IT-Sicherheit von Anfang an Priorität einzuräumen und bewährte Methoden zu verwenden, anstatt eigene Lösungen zu entwickeln. Indem sie die Gefahren der DIY-Verschlüsselung verstehen, können Entwickler fundierte Entscheidungen treffen, die die IT-Sicherheit ihrer Softwareprojekte insgesamt verbessern.

Die Bedeutung einer frühzeitigen Priorisierung der IT-Sicherheit

Bei der Softwareentwicklung ist es für ein erfolgreiches Projekt entscheidend, der IT-Sicherheit von Anfang an Priorität einzuräumen. Hier ist der Grund, warum das so wichtig ist:

1. IT-Sicherheitsaspekte frühzeitig angehen

Wenn wir IT-Sicherheitsaspekte von Anfang an berücksichtigen, können wir eine solide Grundlage für die Software schaffen.

2. IT-Sicherheit zum Kernaspekt machen

Die Integration von Sicherheitsgrundsätzen in den gesamten Entwicklungsprozess stellt sicher, dass die IT-Sicherheit kein nachträglicher Gedanke, sondern ein Kernaspekt des Entwurfs und der Implementierung ist.

3. Identifizierung und Minderung von Risiken

Indem sie der Sicherheit frühzeitig Vorrang einräumen, können die Entwickler potenzielle Risiken in jeder Phase erkennen und abmildern, was insgesamt zu einem sichereren und zuverlässigeren Softwareprodukt führt.

Die Defense-in-Depth-Strategie verstehen

Defense in Depth ist eine Strategie der Cybersicherheit, bei der mehrere IT-Sicherheitsschichten in einem System implementiert werden, um es vor potenziellen Bedrohungen zu schützen. Dieser Ansatz erkennt an, dass keine einzelne IT-Sicherheitsmaßnahme narrensicher ist, und zielt darauf ab, eine umfassende Verteidigungsposition zu schaffen.

Wie Defense in Depth vor raffinierten Angreifern schützt

Defense in Depth trägt zur Risikominderung bei, indem es die Sicherheitsmaßnahmen redundant und vielfältig gestaltet, so dass es für Angreifer schwieriger wird, Schwachstellen auszunutzen. Durch die Einbeziehung verschiedener IT-Sicherheitskontrollen auf unterschiedlichen Ebenen können Unternehmen Cyber-Bedrohungen besser widerstehen und auf sie reagieren.

Warum mehrere IT-Sicherheitsmechanismen notwendig sind

Verschiedene Ebenen der IT-Sicherheit bieten ein Sicherheitsnetz für den Fall, dass eine Ebene fehlgeschlagen ist oder kompromittiert wurde. So wird sichergestellt, dass selbst wenn ein Angreifer eine Verteidigungsschicht durchbricht, zusätzliche Barrieren überwunden werden müssen, was die allgemeine Widerstandsfähigkeit der Systemarchitektur erhöht.

Vermeidung von DIY-Verschlüsselung

Wenn es um Verschlüsselung geht, ist es wichtig, der Versuchung zu widerstehen, eigene Lösungen zu entwickeln. Hier sind die wichtigsten Punkte zu beachten:

1. Risiken der selbstgemachten Verschlüsselung

  • Erfinderische Verschlüsselungsalgorithmen können inhärente Schwachstellen aufweisen.
  • Fehlendes Peer-Review kann zu unentdeckten Fehlern führen.

2. Vorteile etablierter Bibliotheken

  • Weit verbreitete Bibliotheken wurden rigorosen Tests unterzogen.
  • Der Einsatz von Technologien, die von Experten entwickelt wurden, verringert IT-Sicherheitsrisiken.

3. Open-Source vs. Closed-Source-Lösungen

  • Open-Source: Bietet Transparenz und Kontrolle durch die Gemeinschaft.
  • Closed-Source: Kann für bestimmte Kontexte oder Anwendungen von Vorteil sein.

Indem Sie auf etablierte kryptografische Bibliotheken zurückgreifen, anstatt eigene Verschlüsselungsmethoden zu entwickeln, können Sie die IT-Sicherheit Ihrer Softwaresysteme erheblich verbessern.

Sicherer Softwareentwicklungslebenszyklus (SSDLC)

Das Modell des sicheren Softwareentwicklungslebenszyklus (SSDLC) ist ein wichtiger Rahmen, der IT-Sicherheitspraktiken in jede Phase des Softwareentwicklungsprozesses integriert. Durch die Einbeziehung von Sicherheitsaspekten von der ersten Entwurfsphase bis zur Bereitstellung und Wartung gewährleistet der SSDLC, dass die IT-Sicherheit kein nachträglicher Gedanke, sondern ein grundlegender Aspekt der Softwareentwicklung ist.

Die Bedeutung des SSDLC

Das SSDLC-Modell ist wichtig für die Gewährleistung der IT-Sicherheit von Softwareprodukten während ihres gesamten Lebenszyklus. Hier ist, warum es wichtig ist:

  1. Proaktiver Ansatz: Anstatt darauf zu warten, dass Schwachstellen erst nach der Entwicklung der Software entdeckt werden, ermutigt das SSDLC-Modell die Entwickler, IT-Sicherheitsprobleme frühzeitig zu erkennen und anzugehen.
  2. Umfassende Überdeckung: Die IT-Sicherheit wird in jeder Phase der Entwicklung berücksichtigt, einschließlich der Erfassung der Anforderungen, des Entwurfs, der Kodierung, des Testens und der Bereitstellung. Dieser ganzheitliche Ansatz hilft bei der Entwicklung sicherer Anwendungen.
  3. Kontinuierliche Verbesserung: Das SSDLC fördert eine Kultur des Lernens und der Verbesserung, indem es Rückmeldungen aus IT-Sicherheits-Assessments und Reaktionen auf Vorfälle wieder in den Entwicklungsprozess einfließen lässt.

Indem sie das SSDLC-Modell befolgen, können Organisationen sicherstellen, dass die IT-Sicherheit in ihre Softwareentwicklungspraktiken integriert wird, was zu sichereren Produkten führt.

Die Rolle von OWASP bei der sicheren Entwicklung

Das Open Web Application Security Project (OWASP) spielt eine wichtige Rolle bei der Förderung von Best Practices für die sichere Softwareentwicklung. OWASP bietet eine umfassende Reihe von Richtlinien, Tools und Ressourcen, die Entwicklern helfen, sichere Anwendungen von Grund auf zu entwickeln.

Zu den wichtigsten Beiträgen von OWASP gehören:

  • Top Ten Projekt: Das Top-Ten-Projekt von OWASP identifiziert und dokumentiert die kritischsten IT-Sicherheitsrisiken von Webanwendungen. Es dient als wertvolle Ressource für Entwickler, um häufige Schwachstellen zu verstehen und zu erkennen, wie sie entschärft werden können.
  • Spickzettel: OWASP stellt Spickzettel zur Verfügung, die praktische Anleitungen zu bestimmten IT-Sicherheitsthemen wie Authentifizierung, Zugangskontrolle und Kryptografie bieten. Diese Spickzettel dienen als schnelle Referenz für Entwickler, die sichere Kodierungspraktiken implementieren möchten.
  • Test-Leitfäden: Die OWASP-Testleitfäden bieten detaillierte Anleitungen für die Durchführung von IT-Sicherheitstests für Webanwendungen. Sie beschreiben verschiedene Testverfahren und Tools, die zur Identifizierung von Schwachstellen verwendet werden können.

Indem sie die OWASP-Empfehlungen befolgen, können Entwickler gängige IT-Sicherheitsschwachstellen abmildern und die allgemeine Sicherheit ihrer Softwareprodukte verbessern.

Sichere Software-Bereitstellung erreichen

Durch die Implementierung des SSDLC-Modells und die Befolgung der OWASP-Empfehlungen können Unternehmen eine sichere Softwarebereitstellung erreichen, bei der der Datenschutz und die Widerstandsfähigkeit gegen potenzielle IT-Bedrohungen im Vordergrund stehen.

Dies beinhaltet:

  1. Schulung von Entwicklern: Durchführung von Schulungen zu sicheren Kodierungspraktiken und OWASP-Richtlinien, um sicherzustellen, dass alle Entwickler sich potenzieller Risiken bewusst sind und wissen, wie sie diese entschärfen können.
  2. Durchführung regelmäßiger Bewertungen: Durchführung regelmäßiger IT-Sicherheitsbewertungen wie Code Reviews und Penetrationstests während des gesamten Entwicklungszyklus, um Schwachstellen zu erkennen, bevor sie ausgenutzt werden.
  3. Integration von IT-Sicherheits-Tools: Integration von automatisierten IT-Sicherheits-Tools in die CI/CD-Pipeline, um Schwachstellen frühzeitig während des Build-Prozesses zu erkennen.

Durch die Einführung dieser Maßnahmen in Verbindung mit dem SSDLC-Modell und den OWASP-Empfehlungen können Unternehmen ihr Risiko erheblich verringern und sicherere Softwareprodukte liefern.

Threat Modeling und User-Stories für eine bessere IT-Sicherheitsplanung

Die Modellierung von Bedrohungen ist eine wichtige Technik im Bereich der IT-Sicherheit, die Ihnen hilft, potenzielle Angriffe und Schwachstellen bereits in der Entwurfsphase zu erkennen. Dabei wird Ihr System systematisch analysiert, um zu verstehen, welche wertvollen Ressourcen vorhanden sind, wer sie angreifen möchte und wie diese Angriffe ablaufen könnten.

Ein praktischer Ansatz im Rahmen der Bedrohungsmodellierung ist die Erstellung von Benutzergeschichten. Dabei handelt es sich um Erzählungen aus der Perspektive eines Angreifers oder böswilligen Benutzers. Sie beschreiben, wie ein Angreifer Schwachstellen ausnutzen könnte, um das System zu kompromittieren. Abuser Stories zwingen Sie dazu, wie ein Angreifer zu denken, und decken verborgene Risiken auf, die bei herkömmlichen User-Stories übersehen werden könnten.

Zu den wichtigsten Vorteilen der Einbeziehung von Bedrohungsmodellierung und Abuser Stories gehören:

  • Aufzeigen von Angriffsvektoren, bevor der Code geschrieben wird
  • Anleitung der Entwickler zum Aufbau von Verteidigungsmaßnahmen, die auf realistische Bedrohungen zugeschnitten sind
  • Priorisierung von IT-Sicherheitskontrollen auf der Grundlage wahrscheinlicher Missbrauchsszenarien

Sie brauchen keine komplexen Tools oder aufwändigen Prozesse - eine einfache, strukturierte Bedrohungsmodellierung kann Ihre Designentscheidungen erheblich verbessern und spätere kostspielige Schwachstellen reduzieren.

Best Practices für sichere Schnittstellen und APIs

Verwenden Sie stark typisierte Schnittstellen

Die Verwendung stark typisierter Schnittstellen kann die IT-Sicherheit Ihrer Anwendung erheblich verbessern. Indem Sie die erwarteten Datentypen für Ihre Eingaben und Ausgaben definieren, können Sie strengere Validierungsregeln durchsetzen und das Risiko gängiger IT-Sicherheitsprobleme wie Injektionsangriffe verringern.

Anstatt beispielsweise eine allgemeine Zeichenkette als Eingabeparameter zu akzeptieren, können Sie einen spezifischen Typ wie "E-Mail" oder "Telefonnummer" definieren. Auf diese Weise wird jeder Wert, der an die Schnittstelle bestanden wird, anhand des definierten Typs validiert, wodurch sichergestellt wird, dass nur gültige E-Mail-Adressen oder Telefonnummern akzeptiert werden.

Sichere Standardwerte festlegen

Beim Entwurf Ihrer Schnittstellen und APIs ist es wichtig, wann immer möglich, sichere Standardwerte festzulegen. Das heißt, wenn ein Benutzer nicht ausdrücklich einen Wert für einen bestimmten Parameter angibt, sollte Ihre Anwendung automatisch eine sichere Option verwenden, anstatt eine unsichere anzunehmen.

Wenn Sie z. B. einen API-Endpunkt haben, der es Benutzern ermöglicht, Dateien hochzuladen, können Sie die standardmäßige Dateigrößenbegrenzung auf einen angemessenen Wert (z. B. 5 MB) festlegen, selbst wenn der Benutzer diesen in seiner Anfrage nicht angibt. Dies hilft, potenzielle Dienstblockaden zu verhindern, indem die Größe der hochzuladenden Dateien begrenzt wird.

Auch wenn es verlockend sein mag, eigene Verschlüsselungsalgorithmen oder -protokolle zu entwickeln, wird dies im Allgemeinen nicht empfohlen. Sofern Sie nicht über umfassende Kenntnisse und Erfahrungen in der Kryptografie verfügen, sollten Sie sich auf etablierte und weit verbreitete Verschlüsselungsstandards wie AES (Advanced Encryption Standard) oder RSA (Rivest-Shamir-Adleman) verlassen.

Durch die Verwendung bewährter Verschlüsselungsmethoden können Sie sicherstellen, dass sensible Daten, die über Ihre Schnittstellen und APIs übertragen werden, sicher vor unberechtigtem Zugriff geschützt sind. Außerdem wird es dadurch für andere Entwickler, die Ihr System integrieren, einfacher, die geforderten IT-Sicherheitsmaßnahmen zu verstehen und umzusetzen.

Fallstudien: Lernen aus realen IT-Sicherheitsvorfällen

1. Standardpasswörter in Produktionssystemen

Eine der berüchtigtsten IT-Sicherheitsverletzungen im Zusammenhang mit Standardpasswörtern ereignete sich 2019, als bei einem großen Cloud-Dienstanbieter ein Datenleck auftrat. Der Vorfall wurde auf eine ungeschützte Datenbank zurückgeführt, die für das Internet offen gelassen wurde, wobei das Standardpasswort noch intakt war.

Durch diese Sicherheitsverletzung wurden sensible Daten zahlreicher Kunden offengelegt und Fragen zu den IT-Sicherheitspraktiken sowohl des Dienstanbieters als auch seiner Kunden aufgeworfen. Es war eine deutliche Erinnerung daran, wie wichtig es ist, Standardpasswörter zu ändern und starke Authentifizierungsmaßnahmen zu ergreifen.

2. Faule API-Filterprobleme

Ein weiterer bemerkenswerter Vorfall betraf eine beliebte Social-Media-Plattform, bei der es aufgrund einer unzureichenden API-Filterung zu einem erheblichen Datenverlust kam. Angreifer nutzten Schwachstellen in der Application Programming Interface (API) der Plattform aus, um unbefugten Zugriff auf Benutzerkonten und sensible Daten zu erhalten.

Der Vorfall machte deutlich, wie wichtig robuste IT-Sicherheitsmaßnahmen für die API sind, einschließlich einer ordnungsgemäßen Validierung der Eingaben und Zugangskontrollen. Außerdem wurde deutlich, dass Entwickler der IT-Sicherheit bei der Entwicklung und Implementierung von APIs Priorität einräumen müssen.

Diese Fallstudien zeigen, wie Lücken in den IT-Sicherheitspraktiken zu verheerenden Folgen führen können. Sie unterstreichen die Notwendigkeit, proaktive Sicherheitsmaßnahmen wie Verschlüsselung und sichere Kodierungspraktiken einzuführen, um Risiken zu mindern und sensible Informationen zu schützen.

Zusammenarbeit zwischen Sicherheitsingenieuren und Produktverantwortlichen

IT-Sicherheitsingenieure sind unerlässlich, um von Beginn der Softwareentwicklung an sichere Kodierungspraktiken zu implementieren. Ihr Wissen in Bereichen wie Bedrohungsmodellierung, Penetrationstests und IT-Sicherheit kann helfen, Schwachstellen frühzeitig zu befunden. Gleichzeitig sind die Produktverantwortlichen wichtig, um die Prioritäten für die IT-Sicherheit festzulegen und sicherzustellen, dass die Sicherheit mit den Unternehmenszielen übereinstimmt.

Durch die Förderung einer kooperativen Beziehung zwischen diesen beiden wichtigen Rollen können Unternehmen der IT-Sicherheit während des gesamten Softwareentwicklungslebenszyklus effektiv Priorität einräumen. Diese Teamarbeit stellt sicher, dass IT-Sicherheit nicht etwas ist, das später hinzugefügt wird, sondern ein wesentlicher Bestandteil des Entwicklungsprozesses ist.

Schlussfolgerung

Hören Sie auf, Ihre eigene Verschlüsselung zu erfinden ist eine wichtige Richtlinie für alle, die an der Softwareentwicklung beteiligt sind. Die Entwicklung eigener Verschlüsselungsalgorithmen oder -protokolle birgt erhebliche Risiken, darunter versteckte Schwachstellen und Probleme bei der Wartung. Etablierte Industriestandards und weithin rezensierte kryptografische Bibliotheken bieten bewährte IT-Sicherheit und werden von Experten weltweit eingehend geprüft.

Wichtige Punkte, die Sie sich merken sollten:

  • Selbstgemachte Verschlüsselung führt oft zu fehlerhaften Implementierungen, die Angreifer ausnutzen können.
  • Die Verwendung von vertrauenswürdigen Open-Source- oder Closed-Source-Bibliotheken gewährleistet einen besseren Schutz und mehr Zuverlässigkeit.
  • Die IT-Sicherheit muss frühzeitig und kontinuierlich in den Softwareentwicklungslebenszyklus integriert werden.

Sie haben es in der Hand, die IT-Sicherheit zu verbessern, indem Sie sich über sichere Codierungspraktiken informieren und Ressourcen wie die OWASP-Richtlinien nutzen. Im Zweifelsfall sollten Sie professionelle Hilfe von Sicherheitsingenieuren in Anspruch nehmen, die sich mit Bedrohungsmodellierung, Penetrationstests und Defense-in-Depth-Strategien auskennen.

Erfinden Sie das Rad nicht neu - entwickeln Sie Ihre Software auf der Grundlage etablierter IT-Sicherheitsgrundsätze

Automatisierte Sicherheitsüberprüfungen

Automatisierte Sicherheitsüberprüfungen

Podcast Episode: Automatisierte Sicherheitsüberprüfungen In der aktuellen Folge beschäftigen wir uns mit der Bedeutung von Sicherheitstests in der...

Weiterlesen
Secure by Design

Secure by Design

Podcast Episode: Secure by Design Wie kann man Sicherheitsprinzipien frühzeitig in den Entwicklungsprozess einbeziehen, anstatt sie erst hinterher...

Weiterlesen
Ergebnisse der Softwaretest-Umfrage 2024

Ergebnisse der Softwaretest-Umfrage 2024

In einer aktuellen Analyse zur Software-Testumfrage 2024 werden zentrale Trends und Herausforderungen der Branche beleuchtet. Ein Schwerpunkt liegt...

Weiterlesen