Kontrolle statt Vertrauen
Qualitätssicherung von Fremdcodes

 

Kaum ein Entwicklerteam schreibt heute noch jede Codezeile selbst. Die industrielle Produktion hat auch in der Softwareentwicklung längst Einzug gehalten. Doch wäre es leichtfertig, sich auf die Qualität des Codes von Dritten blindlings zu verlassen. Im Rahmen einer Sourcing-Strategie bei der Entwicklung nimmt deswegen die Qualitätssicherung eine zentrale Rolle ein. Die große Hürde dabei ist allerdings, dass ein großer Teil des Fremdcodes binär vorliegt. Mit geeigneten Werkzeugen kann aber auch dieser einer strengen Analyse unterzogen werden.

 (Bild: GrammaTech Inc.)

(Bild: GrammaTech Inc.)

 

Das Internet of Things spielt eine zentrale Rolle bei der Digitalisierung: Die Grundlage vieler disruptiver Geschäftsmodelle bilden zahlreiche Sensoren und Aktoren, die über das Internet mit dem Rechenzentrum und auch untereinander verbunden sind. Für die Entwicklerteams im Embedded-Bereich bedeutet das zunächst, dass die Projekte durch neue, zusätzliche Anforderungen an die Software komplexer werden.. Die meisten Unternehmen reagieren darauf mit dem in der fertigenden Industrie etablierten und bewährten Muster, die Fertigungstiefe in der Softwareentwicklung zu reduzieren und Code-Bestandteile aus externen Quellen zu beschaffen. Das Marktforschungsunternehmen VDC Research ermittelte im Jahr 2016, dass bei Embedded-Applikationen fast 45 Prozent der Codebasis aktueller Projekte von Dritten stammt. Meist handelt es sich dabei um spezielle Komponenten wie Grafik- und Windowing-Toolkits, Kryptografie-Bibliotheken oder Datenbanken.

Risiken nicht unterschätzen

Mit dem Einsatz fremder Codebestandteile verringern Unternehmen zwar die Time to Market ihrer Anwendungen, handeln sich aber ein schwer einzuschätzendes Risiko ein: Ist der Code aus externen Quellen sicher und entspricht er den Standards der eigenen Entwicklungsabteilung?

Security und Zertifizierung betroffen

Unter anderem sind folgende Bereiche davon betroffen: Zum einen der Bereich Security. Dort werden mit dem Einsatz von Code aus externen Quellen möglicherweise vorhandene Sicherheitslücken in das eigene Projekt übernommen. Das stellt das eigene Unternehmen vor zwei Herausforderungen: Sicherheits-Updates des Codezulieferers müssen zeitnah in die eigene Anwendung übernommen und an die Kunden ausgerollt werden. Zudem kann der fremde Code versteckte und auch böswillige Schwachstellen aufweisen, für die das eigene Unternehmen geradestehen muss. Zum anderen ist der Bereich der Zertifizierung betroffen: Entwickler, die Anwendungen in kritischen Bereichen wie etwa Medizintechnik entwickeln, müssen sich beim Programmieren und beim Testing an klare Standards und Normen halten. Code Dritter muss nach denselben Standards zertifiziert sein. Die entsprechende vollständige Dokumentation seitens des Code-Zulieferers muss also vorliegen – oder der fragliche Code muss selbst zertifiziert werden. Bei Binärcode kann das ohne die richtigen Tools extrem schwierig werden.

  • Qualität: Fehler im externen Code müssen nicht gleich sicherheitsrelevant sein. Performance-Probleme oder Abstürze reichen aus, um den eigenen guten Ruf zu ruinieren. Zusätzliche Kosten für Updates oder sogar eine komplette Neuentwicklung sind da schon fast das kleinere Übel.
  • Es ist deswegen im Rahmen einer Sourcing-Initiative unverzichtbar, Schwachstellen im eigenen und in fremdem Code mit geeigneten Maßnahmen innerhalb des Software-Development-Lifecycles aufzuspüren und zu beseitigen.

Herausforderung Binärcode

Bei Open-Source-Komponenten ist das noch relativ einfach. Der Quellcode liegt vor, das Programm oder die Bibliothek kann mit den üblichen Test- und Analysemethoden geprüft werden. Fortschrittliche Tools sind dabei auch in der Lage, gut im Code versteckte Fehler oder Angriffe zu erkennen. Zudem liegt der Code in einer Form vor, die ein geübter Entwickler zumindest bis zu einer gewissen Komplexität nachvollziehen kann. Ganz anders sieht es jedoch aus, wenn die Komponenten nur binär ausgeliefert werden. Diese können mit den meisten Analyse-Tools nicht überprüft werden. Somit bleibt nur das aufwändige Testing mit definierten Testfällen. Oder der Code bleibt ungeprüft.

Ausgereift, jedoch mit Schwächen

Die dynamischen Testmethoden sind zwar sehr ausgereift, haben aber eine prinzipielle Schwäche: Beim Testing wird ein in der Entwicklung oder im Review befindliches Programm ausgeführt und in mehreren, unterschiedlichen Szenarien geprüft. Diese sind in der Regel praxisnah definiert. Code, der im Rahmen der Testfälle nicht zur Anwendung kommt, hinterlässt in diesem Verfahren auch keine Hinweise auf mögliche Fehler. Auch häufig genutzte Angriffsvektoren wie etwa Time Bombs, die erst mit Ablauf eines bestimmten Datums aktiv werden, sind durch das klassische Testing nicht zu finden. Anders ist das bei Tools zur statischen Codeanalyse: Diese erstellen – vereinfacht gesagt – ein Modell des Codes und betrachten alle möglichen Daten- und Steuerungsströme. Nur wenige Anbieter sind derzeit in der Lage, das Verfahren der statischen Analyse auf binären Code anzuwenden. Das liegt zum einen an der hohen Komplexität, da viele analyserelevanten Informationen nur im Quellcode zu finden sind, im binären Zustand jedoch nicht. Zum anderen muss das Analyse-Tool die Struktur des ursprünglichen Codes wiederherstellen – obwohl Binärcode kein Konzept einer Struktur kennt. Ein Analyse-Tool, das sowohl Binär- als auch Quellcode statisch analysieren kann, ist CodeSonar von GrammaTech. CodeSonar ist in der Lage, sowohl ausführbare Dateien als auch binäre Bibliotheken auf Fehler und Schwachstellen zu prüfen. Das Tool erzeugt dazu ein Modell des gesamten Programms mit allen Source- und Binary-Bestandteilen und erstellt daraus eine einheitliche Präsentation, die die Semantik beider Teile konsistent abbildet. Um mögliche Fehler zu erkennen, durchläuft das Werkzeug das Modell interprozedural und sucht nach Anomalien.

Statische Analyse als zentrale Instanz

Es ist also auf jeden Fall sinnvoll, Code aus externen Quellen ebenso zu überprüfen wie die eigene Entwicklungsarbeit. Dazu empfehlen fast alle Standards ab einer gewissen Kritikalität der Anwendung den Einsatz von statischer Analyse. Für den Erfolg bei der Qualitätssicherung ist ein orchestriertes Vorgehen entscheidend. Tests und statische Analysen sollten als integrale Bestandteile des Entwicklungsprozesses etabliert werden. Dazu gehört, ein Vorgehensmodell festzulegen und zu forcieren, das den Software Development Lifecycle in einzelne Phasen gliedert. Innerhalb dieser Phasen sollte auch das Testing und die Code-Analyse fest als fortlaufender Prozess zur Qualitätssicherung eingeplant werden. Vor allem in den frühen Phasen der Softwareentwicklung ist meist noch kein wirkliches Testing möglich, da noch kein lauffähiger Gesamtcode existiert. Dabei ist die statische Analyse unverzichtbar, denn es gilt die Regel: Je später ein Fehler gefunden wird, desto aufwändiger und kostspieliger ist seine Beseitigung. Zudem sollte ein Review-Prozess implementiert werden, den alle Veränderungen des Codes durchlaufen müssen. So lässt sich weitgehend sicherstellen, dass vorhandene Sicherheitslücken gefunden und beseitigt werden. Die Entwickler-Teams können dadurch ihre Anwendungen sicherer machen und gleichzeitig die Time to Market verringern. Doch bei aller organisatorischen und technologischen Unterstützung: Tools können dem Entwickler nur Hinweise liefern, wo mögliche Fehler liegen. Ohne manuelle Prüfung und Tests durch erfahrene Programmierer wird es keine sichere Software geben, die den Anforderungen eines IoT-basierenden Geschäftsmodells gerecht wird.

Das könnte Sie auch interessieren

Der Nutzen neuer Technologien kommt nur dann zum Tragen, wenn diese von den Menschen mindestens toleriert, besser aber gesamtgesellschaftlich angenommen werden. Dafür braucht es Dialog und Möglichkeiten für gemeinsame Gestaltung. Welche Kommunikationsformate sich hierfür eignen und welche Wirkung sie bei den Beteiligten erzielen, das hat das Acatech-Projekt 'Technologischen Wandel gestalten' bei den Themen elektronische Patientenakte, digitale Verwaltung und Katastrophenschutz untersucht. Jetzt hat das Projektteam die Ergebnisse vorgelegt.‣ weiterlesen

Der Fachkräftemangel erfordert einen möglichst intelligenten und flexiblen Personaleinsatz. KI spielt dabei eine wichtige Rolle. Der Industriesoftware-Spezialist Augmentir zeigt sechs Ansatzmöglichkeiten auf.‣ weiterlesen

Eine aktuelle Studie von Reichelt Elektronik betrachtet den aktuellen Stand der Digitalisierung und stellt die Frage, wie Deutschland im Vergleich zu anderen europäischen Ländern abschneidet.‣ weiterlesen

Können Roboter dabei helfen, dem Fachkräftemangel in der Logistik-Branche Herr zu werden? Der Branchenverband IFR meint ja - und zwar mit Hilfe von Robotik, die durch künstliche Intelligenz unterstützt wird.‣ weiterlesen

Künstliche Intelligenz (KI) lässt sich auch für die automatische Qualitätsüberwachung in Roboterschweißzellen nutzen. Oft fehlen hier jedoch Daten zum Trainieren und Ausführen der Algorithmen. Insbesondere für Bestandsanlagen existieren meist keine passenden Standardsysteme, da Geräte über uneinheitliche Datenmodelle und Schnittstellen verfügen. IoT-Baukästen können helfen.‣ weiterlesen

Nach Angaben der Eclipse Foundation verzeichnete die IoT-Einführung im Jahr 2023 einen sprunghaften Anstieg. 64 Prozent der Befragten setzen mittlerweile entsprechende Lösungen ein - ein Plus von 11 Prozentpunkten.‣ weiterlesen

2023 blockierte Trend Micro mehr als 161 Milliarden Cyberbedrohungen weltweit - 10 Prozent mehr als im Jahr zuvor und fast 107 Milliarden mehr als noch vor fünf Jahren. Der Security-Spezialist berichtet zudem davon, dass Cyberkriminelle gezieltere Attacken setzen. Auch Cloud-Umgebungen rücken zunehmend in den Fokus.‣ weiterlesen

Ein Forschungsteam vom Fraunhofer IPA und vom Campus Schwarzwald hat eine Roboterzelle aufgebaut, die Brennstoffzellen in Sekundenschnelle und automatisiert stecken kann. Brennstoffzellensysteme könnten so günstiger werden und den Verbrenner im Schwerlastverkehr ablösen.‣ weiterlesen

Das Fraunhofer-Institut für Produktionstechnik und Automatisierung IPA und das Technologieunternehmen Q.ANT haben einen Vertrag zur Gründung des Kompetenz-Zentrums Mensch-Maschine-Schnittstelle unterzeichnet.‣ weiterlesen

Der Digitale Zwilling einer Produktionsanlage ermöglicht die Simulation des Verhaltens aktueller Konfigurationen. Die Implementierung neuer Produktionskonfigurationen kann so bereits im Vorfeld getestet werden. Die Integration der benötigten Simulationsmodelle einzelner Komponenten ist jedoch mit Aufwand verbunden. Hier kann die Verwaltungsschale helfen.‣ weiterlesen

Logicalis veröffentlicht seinen zehnten Jahresbericht, basierend auf den Erfahrungen von 1.000 CIOs weltweit. Technologien wie Künstliche Intelligenz (KI) und neue Cyberbedrohungen dominieren darin die Prioritäten der CIOs.‣ weiterlesen