Automatische statische Software-Analyse – Drei entscheidende Punkte für Entwicklungsteams
Moderne Unternehmen, die Embedded Automotive Software entwickeln, müssen nicht nur Verstöße gegen vordergründige syntaktische Regeln aufspüren können, sondern auch ernste, aus undefiniertem Verhalten entstandene Bedrohungen identifizieren, wie es der MISRA-C Standard vorschreibt. Selbst wenn leichte statische Analysetools einige der offensichtlichsten Ereignisse durch Testläufe spezifizieren können, entdecken nur die fortschrittlichsten statischen Analysetools die subtileren Ereignisse auf. Folgende Punkte sind entscheidend:
1) Nutzen Sie die neueste Version des Standards – MISRA C: 2012 – Die aktuellste Version beinhaltet wichtige Verbesserungen zur vorhergehenden Fassung. Unternehmen, die noch nicht auf diese Version umgestiegen sind, setzen ihre Produkte und ihre Kunden beträchtlichen Risiken aus.
2) Beachten Sie insbesondere die Regel 1.3 und Richtlinie 1.4 –
Regel 1.3: „Es darf kein undefiniertes oder kritisches unspezifiziertes Verhalten eintreten.“ –
Richtlinie 4.1: „Laufzeit-Fehler müssen minimiert werden.“
Viele der gravierendsten Fehler in C entstehen durch unspezifiziertes Verhalten, wie Buffer Overruns und Underruns, Invalid Pointer Indirection, Double Close, Data Races, Division by Zero und Use of uninitialized memory.
3) Wenden Sie ein automatisiertes statisches Analysetool an – MICRA C empfiehlt den Einsatz eines automatisierten statischen Analysetools, um Verletzungen des Standards aufzuspüren. Allerdings sind nicht alle Tools sind gleich gestaltet, und einige können nur über oberflächliche syntaktische Eigenschaften des Codes Schlussfolgerungen ziehen. Anspruchsvollere Tools wie CodeSonar bieten fundierte semantische Kenntnisse des gesamten Programms.
Vermeiden Sie einfache statische Analysetools, die syntaktische Verletzungen finden, aber die tieferen Fehler insgesamt nicht aufspüren können. Ein Bericht eines einfachen Tools kann einen falschen Eindruck der Sicherheit vermitteln, da er ernste Fehler nicht enthält.
Suchen Sie ein Tool, das sowohl Verletzungen der oberflächlichen syntaktischen Regeln findet, als auch Fehler wie die oben genannten. Setzen Sie auf ein Tool mit nachfolgenden Eigenschaften.
Zur Kundengewinnung müssen Hersteller verstehen, dass ihre Marken immer enger mit der Qualität und Sicherheit der zugrunde liegenden Software verknüpft sind. Und sie müssen schnell handeln, um Sicherheitsprobleme wegen Software-Schwachstellen im Vorfeld zu vermeiden, bevor Kunden in Gefahr sind. Darum ist es unverzichtbar, dass ihre gesamte Software Supply Chain mit Hilfe von modernen automatisierten Analysetools die Codequalität übergreifend sicherstellt, sowohl für die Fahrzeuge selbst als auch zur Sicherheit für ihre Fahrer.
Was sollte also mein statisches Analysetool bereitstellen?
– Ein präzises Modell –
Das Tool kann Code genauso analysieren wie der Compiler. Alle Compiler sind unterschiedlich, und Analysetools, die das nicht in Betracht ziehen, liefern falsche Ergebnisse.
– Eine Analyse über das gesamte Programm –
Das Werkzeug kann den Informationsfluss zwischen Abläufen und über Grenzen der Kompilationseinheiten hinweg rückverfolgen.
– Eine flussempfindliche, kontextsensitive und Pfad-sensible Analyse – sie liefert präzise Angaben zu Fundstellen und Fehlern.
– Die Eliminierung von unausführbaren Pfaden –
Mithilfe dieser Eigenschaft senkt das Tool die Anzahl der False-Positive Ergebnisse. Die besten Werkzeuge nutzen hochentwickelte Technologien wie SMT Solver.
– MISRA C:2012 Native Checker –
Mit MISRA C:2012 Checkern stellt das Tool die Einhaltung des Standards sicher. Partnerschaften oder nur das Einhalten früherer Versionen des Standards bieten keine adäquate Leistung.
Bei der Entwicklung von embedded Software für Fahrzeuge ist C immer noch die populärste Programmiersprache. Rund die Hälfte des Codes von embedded Automotive Systemen läuft in der Embedded Entwicklung auf handgeschriebenem C, einer in vieler Hinsicht tollen Sprache – aber C-Programme sind anfällig für ernste Speicherzugriffsfehler wie Buffer Overrun oder Null-Ereignisse (null exceptions). Um unsichere Praktiken zu vermeiden und mit dem Programmieren in C-Sprache verbundene Risiken zu minimieren, ist der MISRA C Standard heute der fortgeschrittenste und weithin anerkannte Codierstandard. Ursprünglich als Automotive Standard in 1998 ins Leben gerufen, fand er immer größeren Zuspruch. Heute ist MISRA C auch in anderen Bereichen weitverbreitet, u.a. Luft-/Raumfahrt, Medizingeräte, Industriesteuerungen.
Über Grammatech (ww.grammatech.com):
Gegründet in den Informatik-Laboren der Cornell University (USA), ist GrammaTech heute ein führender Anbieter von Software-Assurance-Tools und moderner Cyber-Security-Lösungen. Mit statischen sowie dynamischen Analyseverfahren, die sowohl Quellcode als auch Maschinencode analysieren, stellt GrammaTech erstklassige statische Analysen für die Softwareoptimierung bereit. Software-Entwickler weltweit nutzen die GrammaTech Lösungen für Embedded Systeme in der Luft-/Raumfahrt-/Wehrtechnik, der Industrieelektronik, der Medizintechnik sowie in allen Branchen, in denen Zuverlässigkeit und Sicherheit höchste Priorität haben. Der Hauptsitz von GrammaTech ist in Ithaca (New York), weitere Standorte befinden sich in Madison (Wisconsins) und Davis (Kalifornien).
Firmenkontakt
GrammaTech, Inc.
Laurel Stewart
531 Esty Street 531
NY 14850 Ithaca
001 607-273-7340 – 168
[email protected]
http://www.grammatech.com
Pressekontakt
Agentur Lorenzoni GmbH, Public Relations
Beate Lorenzoni
Landshuter Straße 29
85435 Erding b. München
+49 8122 559 17-0
[email protected]
http://www.lorenzoni.de