Sichern Sie Ihre Software mit SEI CERT C.
Von Arthur Hicken
27. September 2018
5 min lesen
Der SEI CERT-Standard für sichere Codierung ist eine gute Wahl für die Sicherung Ihres Codes, insbesondere wenn Ihre Anwendung eingebettet oder sicherheitskritisch ist. In diesem Beitrag werde ich erläutern, wie mithilfe der statischen Analyse dieser Standard für Sicherheit durch Design implementiert wird.
"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.
Das Problem mit IoT und eingebetteter Sicherheit
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.
Warum CERT zur Sicherung Ihres Codes?
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.
Warum sollte ein statisches Analysetool über einem anderen verwendet werden, um die Codierung sicher durchzusetzen?
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:
- Integrierte Unterstützung für CERT C-Regeln. Wir haben jede CERT C-Regel implementiert und die meisten Empfehlungen hinzugefügt, der Rest kommt bald. Einfach ausgedrückt, wir sind der einzige Anbieter, der die CERT C-Regeln vollständig abdeckt, und wir decken auch die meisten Empfehlungen aller Anbieter ab. Wenn Sie sich also für die CERT-Richtlinien interessieren, ist der Parasoft C / C ++ - Test objektiv die beste Wahl.
- Ihre Fähigkeit, mehr zu tun als nur über Risikobewertungen zu sprechen. Unsere Implementierung des CERT-Risikorahmens ist einzigartig, da sie in jedes Widget und jeden Bericht eingebettet sind, den wir für den Standard haben. Dies bedeutet, dass Sie zwischen Regeln und Empfehlungen wählen, Prioritätswerte, Stufen, Kategorien usw. auswählen und die Änderungen sofort sehen können.
- Einfache Audits und Compliance-Berichte. Parasoft bietet alle üblichen Schnickschnack, die Sie von statischen Analysetools (vom Benutzer anpassbare Dashboards, PDF-Berichte, Histogramme usw.) erwarten, sowie dynamische Risiko-Widgets. Parasoft bietet Ihnen jedoch den einzigartigen Vorteil, dass wir all dies in unser Standard-Compliance-Framework integriert haben, sodass Sie problemlos Berichte erstellen können, um zu beweisen, was Sie getan haben, wann Sie es getan haben und wie Sie Parasoft CERT zugeordnet haben und alle anderen für Sicherheitsüberprüfungen erforderlichen Sicherheiten. Ihr Sicherheitsbeauftragter wird es Ihnen und Ihren Kunden danken.
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.