Code Intelligence

Code Intelligence – Coverage-based Fuzzing revolutioniert Software Tests

Was ist das für ein Startup, das die Deutsche Börse, Bosch und die Deutsche Telekom schon zu seinen Kunden zählt? Code Intelligence bringt eine wichtige Innovation in den Software Testing Prozess: die CI Security Suite basiert auf einem neuen Konzept von Fuzzing, das viel manuelle Arbeit und bestehende Integrationsprobleme eliminiert.

Die Lösung unterstützt Entwickler dabei (semi-) automatisierte Sicherheits- und Zuverlässigkeitstests einzurichten und kontinuierlich durchzuführen. Das Versprechen: Softwaretests werden schneller, sicherer und sind leichter einzurichten. Die resultierende Software hat eine höhere Qualität. Sicherheitslücken werden gefunden, bevor Hacker sich daran zu schaffen machen. Welches IT-Unternehmen kann sich dem schon entziehen?

Das Problem

Software zu testen ist eine knifflige Angelegenheit. Die gebräuchlichen Methoden haben alle ihre Mängel. Schauen wir uns an, welche das sind:

Unit / Integration / System Testing

Ein Unit Test oder Modultest wird auf der untersten Ebene ausgeführt. Kleine Module können mit einer geringen Zahl von Testfällen geprüft werden. Die nächste Stufe ist der Integrationstest, der das Zusammenwirken der Module betrachtet. Abschließend wird das Gesamtsystem getestet.

Dieses dreischrittige Bottom-up-Verfahren hat folgende Nachteile:

  • Es deckt nur einen kleinen Teil des Codes ab.
  • Es ist sehr zeitaufwendig.
  • Unerwartetes Verhalten und Randbedingungen werden leicht übersehen.

Static Code Analysis

Bei dieser Methode wird die Software zur Übersetzungszeit getestet, d. h. während sie kompiliert wird und nicht, während sie ausgeführt wird. Heuristiken überprüfen dabei den Quelltext und erkennen Schwachstellen im Code.

Die Mängel dieser Methode sind folgende:

  • Statisch können nicht alle Programmabläufe vorhergesagt werden.
  • Ein hoher Anteil an False-Positives: Korrektes Verhalten wird als Fehler und Fehler werden als korrektes Verhalten gemeldet.
  • Großer manueller Aufwand macht die Methode ineffizient.
  • Tester benötigen seltenes Spezialwissen, um die Resultate zu beurteilen.
  • Bugs werden nicht zuverlässig erkannt.

Dynamic Code Analysis

Dynamisch bedeutet, dass die Software läuft, während sie getestet wird. Die Tester erstellen Eingabedaten, führen das Testprogramm aus, sammeln die notwendigen Parameter und analysieren die Ausgabe.

Die Schwierigkeiten bei diesem Verfahren sind:

  • Es ist ineffizient wegen des sehr hohen manuellen Aufwands.
  • Es wird nur der Code getestet, der auch mit den festgelegten Eingabedaten erreicht werden kann.

Penetrationstests durch Consultants

Bei einem Penetrationstest, kurz: Pentest, versuchen Spezialisten, eine Software zu hacken. Penetration ist das unerlaubte Eindringen in ein System. Dabei werden Werkzeuge verwendet, die verschiedenste Angriffsmuster nachbilden.

Auch dieses Verfahren hat seine Probleme:

  • Es ist kostspielig wegen des hohen manuellen Aufwands.
  • Die Methode lässt sich nicht in einen kontinuierlichen Softwareentwicklungsprozess einbinden, sondern nur punktuell, beispielsweise vor einem Release, anwenden.

Coverage-based Fuzzing

Fuzzing, auch Fuzzy-Test oder Negativtest genannt, ist eine Technik, bei der die Fehleranfälligkeit eines Systems durch die Eingabe einer großen Menge an Zufallsdaten untersucht wird. Es ist ebenfalls eine dynamische Technik, die während der Laufzeit des zu testenden Codes ausgeführt wird.

Die Schwierigkeiten dabei:

  • Die Methode ist so komplex, dass sie schwer aufzusetzen ist.
  • Sie kann nur von hoch qualifizierten Sicherheitsexperten in den Entwicklungsprozess integriert werden. Diese sind kostspielig und am Markt kaum zu finden.

Die Lösung

Die CI Security Suite vereint die Vorteile statischer und dynamischer Verfahren. Sie kombiniert Coverage-based Fuzzing mit Sanitizern, um Software während der Ausführung zu überwachen und kritische Sicherheitsrisiken aufzudecken.

Code Intelligence Produkt

Die Suite wird direkt in die Entwicklungsumgebung integriert. So fallen Sicherheitslücken bereits während der Entwicklung auf – ein Riesenvorteil für agile Softwareprojekte.

Vorteile

Die Vorteile von Code Intelligence auf einem Blick:

  • Sicherheit und Zuverlässigkeit
  • Schwachstellen in der Software, die mit anderen Methoden nicht bereinigt werden, werden mithilfe der CI Security Suite erkannt und behoben.
  • Kosten der Rekrutierung teurer IT-Sicherheitsexperten werden vermieden.
  • Schnelligkeit – die zeitintensive manuelle Auswertung von False-Positives entfällt.
  • Testumfang – die gewonnene Zeit kann in umfangreichere Tests investiert werden.
  • Prozessoptimierung – Sicherheitstests können in eine agile Softwareentwicklung eingebunden werden.
  • Kontinuierliches Qualitätsmanagement

Einfache Integration

Die Integration der CI Security Suite ist einfach, weil ein Plugin den Benutzer durch den Vorgang leitet. Es ist kein teures Fachpersonal dafür nötig. Der Entwickler kann sehen, was der Fuzzer bereits überprüft hat, und er kann durch die Analyseergebnisse browsen. Bei jeder Änderung am Code wird die CI Security Suite erneut ausgeführt.

Einsatzgebiete

Derzeit erkennt die CI Security Suite Sicherheitslücken in C/C++ Projekten. Die Gründer planen, die Lösung auf weitere Programmiersprachen auszuweiten.

Die Kunden des Startups kommen derzeit aus den Bereichen:

  • Softwareentwicklung
  • Qualitätsmanagement
  • IT-Security und Pentesting

Wer steckt hinter Code Intelligence?

Die Gründer, Dr. Khaled Yakdan, Sergej Dechand und  Dr. Henning Perl, haben beim Fraunhofer FKIE im Team von Prof. Matthew Smith jahrelang zu Cyber Security, Schwachstellen und Fuzz Driven Development geforscht. Mit im Team ist außerdem Philipp Langnickel, Startup-Gründer und Business Development Manager.

Code Intelligence Gründer

Prof. Matthew Smith, Spezialist für Usable Security and Privacy an der Universität Bonn und am Fraunhofer FKIE, fungiert als Berater des jungen Unternehmens. Als Berater außerdem dabei: Thomas Tschersich, Senior Vice President Security Deutsche Telekom / T-Systems.

Fazit

Code Intelligence bietet eine Lösung für das automatisierte Software Testing an, die den herkömmlichen Methoden überlegen ist. Das Startup zählt bereits jetzt renommierte Unternehmen zu seinen Kunden. Gefördert vom Digital Hub Bonn und dem High Tech Gründerfonds haben die Security-Spezialisten das Potenzial, Software Testing durch Coverage-based Fuzzing auf eine neue Stufe zu heben.

Was ist das für ein Startup, das die Deutsche Börse, Bosch und die Deutsche Telekom schon zu seinen Kunden zählt? Code Intelligence bringt eine wichtige Innovation in den Software Testing Prozess: die CI Security Suite basiert auf einem neuen Konzept von Fuzzing, das viel manuelle Arbeit und bestehende Integrationsprobleme eliminiert.

Die Lösung unterstützt Entwickler dabei (semi-) automatisierte Sicherheits- und Zuverlässigkeitstests einzurichten und kontinuierlich durchzuführen. Das Versprechen: Softwaretests werden schneller, leichter anwendbar und sicherer. Die resultierende Software hat eine höhere Qualität. Sicherheitslücken werden gefunden, bevor Hacker sich daran zu schaffen machen. Welches IT-Unternehmen kann sich dem schon entziehen?

Share this post