Erfahren Sie, wie die Continuous Quality Platform von Parasoft dabei hilft, Testumgebungen zu steuern und zu verwalten, um zuverlässig hochwertige Software zu liefern. Für Demo registrieren >>
"Obwohl der Begriff des Schutzes von Software wichtig ist, ist es einfach einfacher, etwas zu schützen, das fehlerfrei ist, als etwas, das mit Schwachstellen behaftet ist."
- Gary McGraw, Cigital
Die Verbreitung von eingebetteter Software und IoT-Geräten erhöht täglich das Risiko von Sicherheitsangriffen. In meinem IoT Hall of Shame Ich sehe regelmäßige Angriffe gegen alles, von Wasseraufbereitungsanlagen über Autos bis hin zu Kinderspielzeug. Wenn „Dinge“ mehr Code erhalten und sich mit dem Internet verbinden, versprechen sie großartige neue Fähigkeiten und Funktionen, erhöhen aber auch die Chancen, dass ein schlechter Schauspieler in unsere Systeme und sogar in unser Privatleben eindringt.
Studien zeigen, dass sogar Autos über 100 Millionen Codezeilen enthalten können. Die Zeiten, in denen einige Entwickler den Code manuell überprüfen konnten, sind vorbei. Bei solch großen, hoch entwickelten Systemen müssen wir die Software-Sicherheit ernst nehmen. Glücklicherweise (in dem Sinne, dass Strategien zur Behebung von Problemen dieselben sein können) sind die Codierungsprobleme, die sich auf sichere Software auswirken, häufig dieselben wie diejenigen, die sich auf sichere und zuverlässige Software auswirken.
Zahlreiche Sicherheitsstandards (ISO 26262, DO-178B / C, FDA usw.) haben gezeigt, dass die Sicherheit und Zuverlässigkeit von Software durch die Verwendung von Codierungsstandards und statischer Code-Analyse erheblich verbessert werden kann. Statische Analysen sind der beste Weg, um Ihren Code konsistent zu härten und von einer "Test Security In" zu einer Secure-by-Design-Mentalität überzugehen. Das heißt, wir können die Cybersicherheit nicht einem separaten Team überlassen, sondern müssen sie sofort angehen, sobald wir mit der Planung und Codierung beginnen. Die Codierungsstandards führen uns vom Zyklus „Erstellen, Pen-Test, Fixieren“ zurück zu einem „Entwerfen, Erstellen“ , liefern ”Zyklus mit hoher Qualität, Sicherheit und Geborgenheit.
Welcher Codierungsstandard soll also verwendet werden? Es gibt viele, auch wenn Sie nur die Sicherheitsaspekte berücksichtigen. CWE, OWASP und CERT sind gängige sichere Codierungsstandards, um nur einige zu nennen. Möglicherweise haben Sie Anforderungen, die Ihnen sagen, welche Standards Sie verwenden sollen, und wenn ja, sollten Sie diese befolgen. Ich möchte jedoch darauf hinweisen, dass CERT eine gute Wahl für die Sicherung Ihres Codes ist, insbesondere wenn Ihre Anwendung eingebettet oder sicherheitskritisch ist.
Die offensichtliche Frage lautet also: "Warum CERT?" Ist CWE nicht beliebter? Oder OWASP? Zunächst einmal soll OWASP (Open Web Application Security Project) oder die OWASP Top 10 ein Ausgangspunkt sein, kein vollständiger strenger Anwendungssicherheitsprozess. Wie der Name schon sagt, ist es hauptsächlich für Webanwendungen gedacht.
CWE (Common Weakness Enumeration) hat eine Top 25-Liste von Problemen. Auch wenn dies ein großartiger Startplatz ist, reicht es nicht aus. Außerdem ist CWE in gewissem Sinne ein symptomatischer Standard - er beschreibt Code, der zu bestimmten Schwachstellen führt, wie sie beispielsweise in CVE (Common Vulnerability Enumeration) auftreten. Dies ist zwar eine nützliche und wichtige Aufgabe, aber von Natur aus reaktiv.
Ich mag den SEI CERT-Standard für sichere Codierung aus mehreren Gründen. Erstens konzentriert es sich viel mehr auf sichere Codierungspraktiken als nur auf die Symptome (z. B. ist es immer eine sichere Codierungspraxis, Eingaben immer zu validieren, während SQL Injection ein Symptom ist). CERT hat analysiert, welche Richtlinien am kritischsten sind und analysiert werden können solide und dann getrennt in "Regeln", die befolgt werden sollten, und "Empfehlungen", die weniger kritisch und / oder weniger in der Lage sind, fundierte Analysen durchzuführen. Dies hilft dabei, die statischen Analyseergebnisse schnell auf die kritischsten zu reduzieren.
Darüber hinaus hat CERT eine Rahmen für die Risikobewertung Dies hilft dabei, die statischen Analyseergebnisse für bestimmte Richtlinien weiter zu priorisieren, wobei der inhärente Schweregrad der Richtlinie, die Schwierigkeit bei der Nutzung eines solchen Elements und die Kosten für dessen Behebung berücksichtigt werden. Auf diese Weise erhalten Sie eine sehr detaillierte Priorisierung, mit der Sie sich auf das Wesentliche konzentrieren können, anstatt sich mit einer Flut von Verstößen gegen statische Analysen zu befassen.
Mir ist klar, dass andere Standards wie CWE ebenfalls Risikorahmen haben, aber bisher hat niemand sie vollständig für statische Analysen implementiert, da dies äußerst schwierig ist. Zum Beispiel haben wir die CWE-Scores für „technische Auswirkungen“ berücksichtigt, was hilfreich ist, aber die CERT-Scores gehen viel tiefer in Richtung automatisierter Priorisierung.
Die Sache mit diesen Risiko-Frameworks ist, dass sie bis jetzt entweder eine akademische Übung waren, über die man interessant sprechen kann, die man aber nicht auf dem Gebiet anwenden kann, oder dass sie ein vollständig manueller und etwas subjektiver Prozess waren. Deshalb haben wir das CERT-System direkt in unser statisches Analyse-Berichtssystem implementiert. Mehr dazu in Kürze.
Also bin ich der Parasoft Evangelist. Aber warum uns benutzen? Sind nicht alle statischen Analysewerkzeuge grundsätzlich gleich? Die Antwort lautet natürlich nein, das sind sie nicht. Und für den sicheren Codierungsstandard CERT C: Parasoft C / C ++ test ist die vollständigste Lösung, mit der Sie auf drei Arten vorankommen können:
Ich habe einen schnellen Überblick über das Sicherheits-Dashboard für CERT aufgezeichnet, um Ihnen einige der Workflows zu zeigen, die mit den Berichten und Widgets in der integrierten Compliance-Konfiguration möglich sind:
All dies funktioniert so, wie es die Entwickler tatsächlich brauchen. Parasoft lässt sich vollständig in Build- und CI-Systeme integrieren und verfügt über eine Web-Benutzeroberfläche, über die jeder die Ergebnisse sehen kann. Noch wichtiger ist, dass es direkt in die Entwickler-IDE (z. B. Eclipse oder Visual Studio) integriert wird, sodass der Entwickler dort arbeitet, wo der Code für ein möglichst schnelles Feedback vorgesehen ist.
Wenn Sie in der Vergangenheit Sicherheitstools für statische Analysen ausprobiert haben und Probleme hatten, weil sie zu laut waren oder Ihren Code nicht wirklich gehärtet haben, ist jetzt ein guter Zeitpunkt dafür Schauen Sie sich Parasoft an.
Arthur ist seit über 25 Jahren bei Parasoft im Bereich Software-Sicherheit und Testautomatisierung tätig. Er hilft bei der Erforschung neuer Methoden und Techniken (einschließlich 5 Patente) und hilft Kunden dabei, ihre Software-Praktiken zu verbessern.