AppSec ist schwierig

Jan 17 2023
So sind die Programme…
Anwendungssicherheitsprogramme sind schwierig. Es gibt viele bewegliche Teile.

Anwendungssicherheitsprogramme sind schwierig. Es gibt viele bewegliche Teile. Es muss jedoch sichergestellt werden, dass Software so konzipiert, erstellt und bereitgestellt wird, dass Sicherheitslücken minimiert werden und so Benutzer und ihre Daten vor potenziellen Cyberangriffen geschützt werden. Ein robustes AppSec-Programm verfügt über einen umfassenden Ansatz, der die Integration verschiedener Praktiken im gesamten Softwareentwicklungsprozess umfasst, um das Risiko von Sicherheitslücken und -verstößen zu minimieren. Dies ist keineswegs eine vollständige Liste, aber sie wird Ihnen einen Eindruck vom Umfang vermitteln.

Unter Bedrohungsmodellierung versteht man den Prozess der Identifizierung und Bewertung potenzieller Sicherheitsbedrohungen und Schwachstellen in der Software, bevor diese ausgenutzt werden können. Dies kann durch die Analyse der Architektur und des Designs der Software, die Identifizierung sensibler Daten und die Identifizierung potenzieller Angriffsvektoren erreicht werden. Bei der agilen Bedrohungsmodellierung handelt es sich um eine Methodik, die die Prinzipien der agilen Softwareentwicklung mit der Bedrohungsmodellierung kombiniert. Dieser Ansatz ermöglicht es Teams, potenzielle Sicherheitsbedrohungen und Schwachstellen frühzeitig im Entwicklungsprozess zu erkennen und zu beheben und gleichzeitig schnell auf sich ändernde Anforderungen zu reagieren.

Sicheres Codieren ist eine weitere wichtige Praxis in der sicheren Softwareentwicklung. Dabei geht es darum, Code zu schreiben, der frei von häufigen Sicherheitsmängeln und Schwachstellen ist. Dies kann durch die Verwendung sicherer Codierungsrichtlinien wie dem OWASP-Material unterstützt werden . Diese Art von Ressourcen bieten Entwicklern eine Reihe bewährter Methoden zum Schreiben von sicherem Code und helfen ihnen, häufige Fehler zu vermeiden, die zu Sicherheitslücken führen können.

Eine weitere wichtige Vorgehensweise besteht darin, die Software auf dem neuesten Stand zu halten. Dazu gehört nicht nur die Software selbst, sondern auch etwaige Bibliotheken und Abhängigkeiten von Drittanbietern. Dadurch wird sichergestellt, dass alle bekannten Sicherheitslücken zeitnah behoben werden, wodurch das Risiko einer Ausnutzung durch Angreifer verringert wird.

Natürlich gibt es Penetrationstests und Schwachstellenscans, Techniken zur Identifizierung und Behebung von Sicherheitslücken in Software. Diese Techniken simulieren reale Angriffe auf die Software und ermöglichen es Entwicklern, etwaige Schwachstellen zu identifizieren und zu beheben, bevor sie von Angreifern ausgenutzt werden können. Automatisierte Tools wie Software-Kompositionsanalyse (SCA), statische Anwendungssicherheitstests (SAST), dynamische Anwendungssicherheitstests (DAST), interaktive Anwendungssicherheitstests (IAST), mobile Anwendungssicherheitstests (MAST) und Selbstschutz von Laufzeitanwendungen ( Mithilfe von RASP kann die Identifizierung und Behebung von Sicherheitslücken automatisiert werden. Darüber hinaus ist die API-Sicherheit ein entscheidender Aspekt der modernen Softwareentwicklung.

Ein weiterer wichtiger Aspekt der sicheren Softwareentwicklung ist die Verhinderung von Datenverlust (Data Loss Prevention, DLP). DLP-Lösungen können verwendet werden, um die unbefugte Offenlegung sensibler Daten wie personenbezogener Daten (PII), Geheimnisse usw. zu erkennen und zu verhindern.

Auch Bildung und Schulung sind wichtig für eine sichere Softwareentwicklung. Security-Champions-Programme und Schulungsprogramme für Entwickler können dazu beitragen, sicherzustellen, dass alle Mitglieder des Entwicklungsteams über das Wissen und die Fähigkeiten verfügen, die zum Schreiben von sicherem Code erforderlich sind. Dazu gehört das Verständnis der OWASP Top 10, einer Liste der kritischsten Sicherheitsrisiken für Webanwendungen, und der Common Weakness Enumeration (CWE) Top 25 , einer Liste häufiger Softwareschwächen.

Auch die Shift-Left-Methodik und automatisierte Gates in Pipelines sind für eine sichere Softwareentwicklung unerlässlich. Diese Praktiken ermöglichen es Entwicklern, potenzielle Schwachstellen frühzeitig zu erkennen und zu beheben, bevor sie Teil der Codebasis werden und in der Produktion bereitgestellt werden, indem Tools in Continuous Integration and Delivery (CI/CD)-Pipelines integriert werden und die Ausgabe dieser Tools abgerufen wird irgendwo, wo Sie Key Performance Indicators (KPIs) verfolgen und potenzielle Schwachstellen durch die Integration mit etwas wie JIRA für eine agile Arbeitsverwaltung aussortieren können .

Pre-Commit-Git-Hooks sind ebenfalls ein nützliches Werkzeug für die sichere Softwareentwicklung. Diese Hooks können verwendet werden, um Code automatisch auf Unsicherheit zu überprüfen, bevor er in das Repository übertragen wird, oder um zu verhindern, dass Sie Geheimnisse übertragen.

Ein weiterer wichtiger Aspekt von AppSec ist die Untersuchung von Schwachstellen. Hierbei handelt es sich um den Prozess der Identifizierung und Priorisierung von Schwachstellen basierend auf ihrem Schweregrad und ihren potenziellen Auswirkungen. Dieser Ansatz ermöglicht es Unternehmen, ihre Ressourcen auf die kritischsten Schwachstellen zu konzentrieren und diese zeitnah zu beheben. Bei der Einstufung von Schwachstellen werden Faktoren wie die Wahrscheinlichkeit einer Ausnutzung, potenzielle Auswirkungen und die einfache Ausnutzung berücksichtigt. In einigen Fällen ist Patchen möglicherweise nicht die beste Vorgehensweise, und Alternativen wie Überwachung, Netzwerksegmentierung und Zugriffskontrollen können in Betracht gezogen werden.

Um ein robustes AppSec-Programm zu verwalten, ist es wichtig, über die richtigen Tools und Plattformen zu verfügen. Zu den beliebten Optionen gehört Esno, um die Tools, Personen und Prozesse transparenter zu machen und zu koordinieren. Checkmarx und Veracode bieten eine umfassende Funktionsabdeckung für statisches und dynamisches Scannen, und Snyk ist für seine Open-Source-Sicherheitsfunktionen bekannt und die Plattform insgesamt ist wegen ihrer Benutzerfreundlichkeit und Entwicklerorientierung sehr beliebt, Black Duck jedoch schon einen guten Ruf in SCA. Invicti ist gut für IAST, Wiz wird für CSPM immer beliebter. Aqua für die Containersicherheit hat sich bewährt, SpectralOpsfür DLP, NoName Security oder Salt für API-Sicherheit, NowSecure für Mobile AppSec, Irius Risk für die Bedrohungsmodellierung oder Bionic für einen stärker automatisierten Ansatz zur Bedrohungsmodellierung und zur Haltungsverwaltung. Es gibt auch Fuzzing, eine Art dynamisches, verhaltensbasiertes Testen, das das Unbekannte testet und versucht, Schwachstellen zu finden; Ein sehr modernes Beispiel für eine Plattform in diesem Bereich ist Mayhem .

Um Open-Source- und Drittanbieterrisiken im Auge zu behalten, ist es auch wichtig, eine Software-Stückliste (SBOM) zu führen. Einige dieser Tools können sie für Sie generieren (Veracode, Black Duck usw.).

Manche betrachten dies vielleicht nicht als Teil eines AppSec-Programms, aber ich bin der Meinung, dass Deception Engineering-Technologie Teil des größeren Produktsicherheitsprogramms sein sollte, das darauf abzielt, die Ressourcen der Angreifer zu verschwenden und sie dazu zu zwingen, sich einfacheren, kostengünstigeren Zielen zuzuwenden. Ein führendes Beispiel in diesem Bereich ist CounterCraft. Denken Sie an Honeypot-Technologie auf Steroiden.

Darüber hinaus sind Schulungen und Schulungen für eine sichere Softwareentwicklung unerlässlich. Zu den Schulungsoptionen für Secure Code Review gehören Secure Code Warrior , Security Journey , Immersive Labs und Avatao . Vulnerability Disclosure Programs (VDP) können über Plattformen wie HackerOne verwaltet werden und Bug Bounty-Programme können über Plattformen wie Intigriti eingerichtet und verwaltet werden .

Es gibt noch mehr, worauf wir uns einlassen könnten, etwa die Rolle der Richtlinie als Code und wie man Gates vollständig automatisiert und wie Genehmigungsworkflows in stark regulierten Kontexten funktionieren sollten, aber wir müssen uns damit vorerst belassen.

Zusammenfassend lässt sich sagen, dass eine sichere Softwareentwicklung einen umfassenden und vielschichtigen Ansatz erfordert, der die Integration aller oben genannten Praktiken im gesamten Softwareentwicklungsprozess beinhaltet. Auf diese Weise können Entwickler die Sicherheit der Benutzer und ihrer Daten gewährleisten und Software erstellen, die robust, zuverlässig und sicher ist. Es ist wichtig zu beachten, dass sich die Sicherheitslandschaft ständig verändert. Daher sind kontinuierliche Überprüfungen und Recherchen erforderlich, um Schritt zu halten.