7. Oktober 2015

Fuzzing und kryptographische Protokolle

Als Prüfstelle für IT-Sicherheit beschäftigen wir uns mit verschiedenen Arten von Prüf-Technologien. Im Bereich Fuzzer wollten wir den internen Entwicklungsaufwand vermeiden und kommerzielle Werkzeuge einsetzen. In den Produkttests ist uns dann allerdings aufgefallen, dass die verfügbaren Werkzeuge zum einen nicht die notwendige technische Transparenz liefern und zum anderen nicht ausreichend relevante oder uninteressante Testfälle abdecken.

Als Prüfstelle war für uns diese Art von Prüf-Technologie so nicht nutzbar. Stattdessen haben wir im Rahmen einer Thesis zunächst die Grundlagen von Fuzzing aufgearbeitet und danach etwas Technik implementiert, welche zukünftig projektspezifisch eingesetzt wird. Die Arbeit lief unter dem Titel „Entwurf und Realisierung eines Fuzzing Tools für kryptographische Protokolle“, neben Fuzzing-Techniken als Grundlage wurde betrachtet, in welcher Protokollphase (Algorithmenaushandlung, Schlüsselaustausch, etc.) ein Fuzzing sinnvoll möglich ist. Der Fuzzer wurde in die Client-Server-Kommunikation der untersuchten Implementierung eingebunden, eine weitere Herausforderung war hierbei der Umgang mit kryptographischen Session-Keys.

Eines der Highlights der Ergebnisse war, dass es möglich war die vollständige Code-Coverage einzelner Funktionen abprüfen zu können. Für die Zukunft überlegen wir auf Basis statischer Analysetechniken eine automatische Testfällen-Erstellung abzuleiten, sodass Teile einer Implemementierung vollständig mittels Fuzzing geprüft werden können. Die Arbeit ( FuzzingKryptographischeProtokolle.pdf  ) stellen wir gerne zur Verfügung und ist ein Diskussionsbeitrag zu Fuzzer-Technologien.

/sf