Sehen Sie, welche API-Testlösung im GigaOm Radar Report am besten abgeschnitten hat. Holen Sie sich Ihren kostenlosen Analystenbericht >>

Sehen Sie, welche API-Testlösung im GigaOm Radar Report am besten abgeschnitten hat. Holen Sie sich Ihren kostenlosen Analystenbericht >>
Zum Abschnitt springen
Auch wenn die DSGVO beängstigend erscheint und zweifellos das Potenzial dazu hat, hilft Ihnen die Implementierung einer statischen Analyse mit den entsprechenden Tools und Richtlinien dabei, Ihr Programm zu schützen. Lesen Sie weiter, um herauszufinden, wie Sie mithilfe statischer Analyse „Secure by Design“ für die DSGVO implementieren können.
Zum Abschnitt springen
Zum Abschnitt springen
Wenn Sie die statische Analyse mit dem richtigen Tool und den richtigen Regeln richtig einrichten, können Sie Ihre Software sichern, den Prüfern beweisen, dass Sie das Richtige tun, und zeigen, dass Sie die Grundsätze von „Security by Design“ und „Privacy by Design“ befolgen.
Die DSGVO ist groß und beängstigend. Kurz gesagt bedeutet die DSGVO, dass Sie den Benutzern Folgendes mitteilen müssen:
Und oh ja, wenn Sie sich nicht daran halten, drohen hohe Geldstrafen.
Theoretisch gilt die DSGVO nur für EU-Bürger, aber die globale Reichweite der meisten Geschäfte erfordert heutzutage Sorgfalt bei der Einhaltung der Vorschriften auf der ganzen Welt. Dies lässt die Wahl zwischen der sicheren und privaten Behandlung aller Benutzer und beispielsweise einem vollständig segmentierten Datenfluss für EU- und Nicht-EU-Kunden – wahrscheinlich ein teureres Unterfangen. In diesem Blog erkläre ich, wie Sie die statische Codeanalyse nutzen können, um den Datenschutz und die Privatsphäre zu verbessern.
Die allgemeinen Ziele der DSGVO bestehen darin, Kundeninformationen angesichts der groß angelegten Datenerfassung durch Organisationen, vorwiegend im Internet, einzuschränken und zu schützen. Die Gesetze werden für EU-Bürger erlassen, aber die Auswirkungen werden weltweit sein, da die meisten Organisationen Geschäfte in EU-Ländern und/oder mit EU-Bürgern tätigen.
Hier sind die wichtigsten Prinzipien.
Der Einfluss von (DSGVO) Datenschutzgrundverordnung konform zur Softwareentwicklung ist von Bedeutung, da sie eine Reihe von Auswirkungen auf die Softwareentwicklungspraktiken hat. Ein Hauptaugenmerk für Softwareentwickler liegt auf den technischen und organisatorischen Sicherheitsmaßnahmen, die erforderlich sind, um die wichtigsten Grundsätze einzuhalten und die Integrität und Vertraulichkeit der Benutzerdaten sicherzustellen.
Wenn man an DSGVO, Datenschutz und andere damit verbundene Datenvorschriften wie PCI DSS (Payment Card Industry Data Security Standard) oder HIPAA (Health Insurance Portability and Accountability Act) denkt, kommt einem sofort die Notwendigkeit verstärkter Tests, dynamischer Analysen usw. in den Sinn Penetrationstests.
Obwohl diese Testtechnologien notwendig und wichtig sind, verringern sie die Wahrscheinlichkeit, unsichere Software auszuliefern, ohne die Software tatsächlich sicherer zu machen oder den Datenschutz überhaupt zu gewährleisten. Aber Sicherheit und Datenschutz können ebenso wenig in die Software „eingetestet“ werden wie Qualität oder Leistung. Daher erfordert die DSGVO Konzepte namens „Security by Design“ und „Privacy by Design“ (PbD), was in erster Linie bedeutet, Software besser zu entwickeln.
„Der Privacy by Design-Ansatz zeichnet sich durch proaktive statt reaktive Maßnahmen aus. Es antizipiert und verhindert Ereignisse, die in die Privatsphäre eingreifen, bevor sie eintreten. PbD wartet nicht darauf, dass Datenschutzrisiken eintreten, und bietet auch keine Abhilfemaßnahmen für die Behebung von Datenschutzverletzungen an, sobald diese eingetreten sind – es zielt darauf ab, deren Auftreten zu verhindern. Kurz gesagt: „Privacy by Design“ steht im Vordergrund und nicht im Nachhinein.“
-A. Cavoukian. Privacy by Design – Die 7 Grundprinzipien, Januar 2011.
Ich erwähne diese beiden Konzepte, weil sie der nächste Schritt nach den normalen Anwendungssicherheitsaktivitäten sind (Firewalls, Penetrationstests, Red Teams, DAST usw.). Der Teil „by design“ kann auch als „einbauen“ gelesen werden. Das ist die Idee, dass Sie, anstatt in Ihrer Anwendung herumzustochern und zu reparieren, wo die Lücken sind, eine Anwendung ohne die Lücken erstellen – sozusagen per Design. Beispielsweise ist SQL-Injection (SQLi) nach wie vor einer der häufigsten Exploits.
Es gibt viele Tools, mit denen versucht wird, entweder eine Injektion über die Benutzeroberfläche zu erzwingen (Penetrationstests) oder den Datenfluss in einem Programm zu simulieren, ohne es auszuführen, um zu sehen, ob fehlerhafte Daten zu einer Datenbankabfrage gelangen können (Flussanalyse).
Ein „by design“-Ansatz bedeutet, jede Eingabe – von einer Datenbank, einem Benutzer oder irgendwo anders – in dem Moment, in dem die Eingabe erfasst wird, in eine Validierungsfunktion einzubinden. Dadurch werden die möglichen Pfade, die die Daten umgehen können, auf Null reduziert. Sie müssen immer noch die Penetrationstests durchführen, um sicherzustellen, dass Sie Ihre Software richtig erstellt haben. Der Unterschied besteht jedoch darin, dass Sie bei einem erfolgreichen Penetrationstest nicht einfach die eine Schwachstelle beheben, die Sie gefunden haben. Stattdessen blicken Sie zurück und finden heraus, WARUM der Pen-Test erfolgreich war, und bauen Ihre Software so auf, dass sie nicht erfolgreich ist.
Wenn ein Pentest viele Sicherheitslücken in Ihrer Software aufdeckt, dann entwickeln Sie keine sichere Software „by design“. Ähnlich wie bei Privacy by Design beobachten wir, wen/was/wo wir teilen, und wir gehen davon aus, dass alle Daten wichtig sind, sofern nicht anders angegeben. Auch hier gehen Programmierer häufig davon aus, dass Daten NICHT wichtig sind, sofern sie nicht speziell gekennzeichnet sind.
Dies zeigt sich beispielsweise bei Entscheidungen darüber, ob die Daten im Klartext gespeichert oder verschlüsselt werden. Alles zu verschlüsseln ist eine Möglichkeit, Privatsphäre durch Design zu gewährleisten. Eines von vielen, aber das ist die Grundidee. Wenn Sie alles verschlüsseln, müssen Sie sich nie Sorgen machen, dass Sie etwas nicht verschlüsselt haben, das Sie haben sollten.
Das Rolle der statischen Analyse soll uns nicht sagen, dass unsere Software angreifbar ist. Das ist die Aufgabe des Testens. Die Rolle der statischen Analyse besteht darin, sicherzustellen, dass die Software von vornherein stark ist – vom Design her. Obwohl die Flussanalyse in den letzten 10 Jahren als Sicherheitstesttechnik populär geworden ist, handelt es sich immer noch um eine Methode zum Testen der Software und nicht um eine Möglichkeit, die Software zu härten – oder Sicherheit einzubauen – oder dies „by design“ durchzuführen.
Bei richtiger Anwendung kann die statische Analyse hervorragend als echte Präventionstechnik eingesetzt werden. Zusätzlich zu den Sicherheitsregeln für die Flussanalyse, beispielsweise zur Suche nach fehlerhaften Daten, aktivieren wir auch Regeln, die sicherstellen, dass die Software sicher erstellt wird. In Anbetracht der beiden oben genannten Fälle kann ich beim Durchführen von „Privacy by Design“ statische Analyseregeln haben, die Folgendes markieren:
Die Daten werden ohne vorherige Verschlüsselung gespeichert.
Anstelle einer starken Verschlüsselung wird eine alte, unsachgemäße und hackbare Verschlüsselungsmethode verwendet.
Benutzer versuchen, für ihre erwarteten Berechtigungen auf ungeeignete Daten zuzugreifen.
Hier finden Sie eine kurze Beschreibung einer Beispielregel, die die Protokollierung erzwingt, wenn vertrauliche Methoden aufgerufen werden. Diese statische Analyseregel findet keine Fehler, hilft Ihnen aber dabei, Software zu erstellen, die protokolliert, was vor sich geht, sodass sie in der Produktion sicherer ist. Diese Regel passt perfekt zu PCI DSS und DSGVO.
Stellen Sie sicher, dass alle vertraulichen Methodenaufrufe protokolliert werden [SECURITY.BV.ENFL]
BESCHREIBUNG: Diese Regel identifiziert Code, der keine vertraulichen Methodenaufrufe protokolliert. Ein Fehler wird gemeldet, wenn einige vertrauliche Methodenaufrufe, z. B. "Anmelden" und "Abmelden" von "javax.security.auth.login.LoginContext", bei Verwendung nicht protokolliert werden.
Ein weiteres Beispiel für Datenschutz ist diese Regel, die verhindert, dass Sie ungewollt persönliche oder wichtige Informationen verlieren, wenn ein Fehler in Ihrer Software auftritt:
Übergeben Sie keine Ausnahmemeldungen an die Ausgabe, um zu verhindern, dass die Anwendung vertrauliche Informationen verliert [SECURITY.ESD.PEO]
BESCHREIBUNG: Diese Regel identifiziert Code, der Ausnahmemeldungen an die Ausgabe übergibt. Ein Fehler wird gemeldet, wenn eine catch-Klausel eine Ausgabemethode aufruft und die in der catch-Klausel abgefangene Ausnahme in der Liste der Parameter angezeigt wird oder als aufrufendes Objekt verwendet wird.
Diese Regel deckt OWASP Top 10, CWE, PCI DSS und DSGVO ab – das heißt, es ist eine wirklich gute Idee, egal warum Sie versuchen, Sicherheit zu gewährleisten.
Statische Analysewerkzeuge sind nützlich, um die Anforderungen zum Schutz von Benutzerdaten auf allen Ebenen zu unterstützen, indem sie die Qualität, den Datenschutz und die Sicherheit von Anwendungen verbessern. Im Einzelnen umfasst dies:
Die Stärken statischer Analysetools liegen in zwei Schlüsselbereichen.
Die DSGVO stellt weder einen Codierungsstandard bereit, noch beschreibt sie explizit Sicherheits- und Datenschutzfehler, die erkannt und behoben werden müssen. Wenn Sie sich jedoch die Unterstützung anderer verwandter Standards wie PCI DSS ansehen, können wir dieselben Konzepte wiederverwenden. Es können beispielsweise folgende Arten von Datenschutzproblemen festgestellt werden:
Darüber hinaus unterstützt Parasoft die folgenden sicheren Codierungsstandards, von denen Entwickler einen einzigartigen Satz für ihre Organisation anpassen können:
Da es sich bei der DSGVO nicht um einen Codierungsstandard handelt, gibt es keine einfache statische Analysekonfiguration, die diese abdeckt. Der beste Ausgangspunkt besteht häufig darin, statische Analyseregeln zu finden, die sich direkt auf die Probleme beziehen, die Sie derzeit beim Testen finden, z. B. XSS- oder SQLi-Probleme. Für solche Probleme gibt es im Allgemeinen einige statische Analyseregeln, die als Fehlersucher dienen und eine frühzeitige Erkennung dieser Probleme ermöglichen, bevor sie zum Testen gelangen. Noch wichtiger ist, dass es auch damit verbundene Regeln gibt, in diesem Fall rund um die Eingabevalidierung, die Ihnen helfen, sicherzustellen, dass SQLi einfach nicht passieren kann, wie ich oben erwähnt habe.
Das Verfolgen von Daten von Benutzereingaben über den Speicher ist schwierig. Die Programmierung so, dass die Validierung immer erfolgt, ist einfach. Die Programmierung so, dass die Verschlüsselung immer erfolgt, ist einfach durchzuführen und leicht zu testen. Warum auf die harte Tour?
Sobald Sie Regeln für Probleme, die Sie beim Testen finden, gefunden und aktiviert haben, möchten Sie vielleicht noch weiter gehen. Ich würde vorschlagen, Ideen von anderen Codierungsstandards zu übernehmen, die bereits Datenschutz und Datenschutz abdecken. Einige gute Optionen sind OWASP, HIPAA und PCI DSS.
Wenn Sie in Ihrem statischen Analysetool Regeln aktivieren, die sich auf diese Standards beziehen, leisten Sie gute Arbeit für die DSGVO. Wenn Sie bereits PCI DSS-konform sind, werden Sie feststellen, dass zumindest die Vorbereitung auf diesen Teil der DSGVO relativ einfach sein sollte.
Wenn Sie bereits andere Sicherheitsanforderungen wie CWE oder CERT haben, können Sie sicherstellen, dass Sie diese ebenfalls befolgen, und Ihre Konfiguration bei Bedarf erweitern, um den spezifischen DSGVO-Datenschutz abzudecken, indem Sie in diesen Standards nach Elementen suchen, die sich auf Datenschutz beziehen und Verschlüsselung.
Parasoft kann Ihnen auf verschiedene Weise dabei helfen, Ihren Code sicher und privat zu gestalten. Erstens verfügen alle unsere statischen Analyse-Engines über Konfigurationen für OWASP, CWE, CERT, PCI DSS, HIPAA usw. Sie können genau die Sicherheitsregeln aktivieren, die für Ihr Unternehmen am besten geeignet sind, und diese dann automatisch durchsetzen.
Darüber hinaus verfügen Sie durch die Integration von Parasoft DTP mit der statischen Analyse über vollständige Audit-Funktionen und automatisieren den Prozess der Dokumentation, welche Regeln wann für welchen Code ausgeführt wurden. Sie können anhand der von Ihnen ausgewählten Regeln nachweisen, dass Sie Tests durchführen oder sich sogar als sicher erweisen.
Parasoft DTP hat auch einige ganz besondere Berichte. Wenn Sie sich dafür entscheiden, Ihre Sicherheitsbemühungen auf CWE zu stützen, bietet Ihnen das Parasoft CWE-Dashboard großartige SAST-Berichte, z. B. Probleme nach Schweregrad, Standort, Typ, Verlauf und mehr.
Wir sind noch einen Schritt weiter gegangen und haben die technischen Auswirkungsdaten in CWE implementiert. Technical Impact (TI) ist eine bei Mitre im Rahmen des Common Weakness Risk Analysis Framework (CWRAF) durchgeführte Forschung und hilft Ihnen, SAST-Ergebnisse basierend auf dem Problem, das sie verursachen können, zu klassifizieren. Anstelle einer Meldung, dass ein Pufferüberlauf vorliegt, den manche möglicherweise nicht als Sicherheitsproblem erkennen, teilt Ihnen TI mit, dass ein Pufferüberlauf zu einem Denial-of-Service führen könnte.
Jeder CWE-Befund sagt Ihnen, welche Arten von Problemen auftreten können. Es gibt spezielle Diagramme, die Ihnen bei der Navigation durch Ihre statischen Analyseprobleme anhand der für Sie wichtigsten Problembereiche und nicht nur anhand der Schweregrade helfen. Diese bahnbrechende Technik hilft Ihnen dabei, die oft überwältigende Anzahl an Schwachstellen in den Griff zu bekommen, insbesondere wenn Sie mit einer älteren Codebasis arbeiten. Konzentrieren Sie sich zunächst auf die Themen, die Ihnen am meisten Angst machen.
Und obwohl ich mich heute auf die statische Analyse als Möglichkeit für Security by Design konzentriert habe, dürfen wir nicht vergessen, dass Parasoft auch über Penetrationstest-Tools, API-Tests und Service-Virtualisierung verfügt, die alle ein wichtiger Bestandteil eines umfassenden Ansatzes sind sichere Software-Entwicklungsstrategie.
Die DSGVO sieht beängstigend aus und kann es sicherlich auch sein, aber die ordnungsgemäße Einrichtung der statischen Analyse mit dem richtigen Tool und den richtigen Regeln wird Ihnen helfen:
Dies ist etwas, was Penetrationstests allein nicht leisten können. Der zusätzliche Vorteil besteht darin, dass Sie feststellen werden, dass es weitaus effektiver ist, Sicherheit aus der „by-design“-Perspektive anzugehen, als zu versuchen, Ihren Weg zur Sicherung von Software zwischen QA und Release zu testen.