REKLAMA

LLVM LibFuzzer

Fuzzing jest obecnie jednym z najskuteczniejszych sposobów na detekcję błędów bezpieczeństwa w oprogramowaniu. Jest to prosta technika testowania, polegająca na przekazywaniu programowi nieprawidłowych danych i sprawdzaniu poprawności reakcji na nie. Od 2014 roku, kiedy po raz pierwszy został zaprezentowany fuzzer opierający się na badaniu pokrycia kodu, czyli American Fuzzy Lop, na rynku pojawiło się wiele rozwiązań tego typu. W tym artykule postaram się omówić bibliotekę pozwalającą na integrację fuzzera z własnym projektem oraz techniki pozwalające zmaksymalizować efektywność wyszukiwania błędów...

Zagadnienia poruszane w tym artykule:

  • Wprowadzenie do LLVM LibFuzzer;
  • Różnice w filozofii pomiędzy AFL a LibFuzzerem;
  • Modelowy process coverage-guided fuzzingu z pomocą LibFuzzera;
  • Integracja z własnym projektem;
  • Jak napisać dobry (szybki) fuzzer?
  • Badanie pokrycia kodu i jego maksymalizacja;
  • Maksymalizacja pokrycia kodu;
  • Fuzz-Driven Development i Google OSS-Fuzz;

Artykuł znajduje się w miesięczniku "Programista" nr 65 (10/2017). Jest to wydanie z przełomu listopada i grudnia. Szczegółowy spis treści: http://programistamag.pl/programista-10-2017-65/

Autorem artykułu jest Kamil Frankowicz. Fan fuzzingu oraz nowych metod powodowania awarii programów. Na co dzień broni bezpieczeństwa polskiego Internetu, pracując jako Security Engineer w CERT Polska / NASK. Do jego specjalności należy psucie - często nieintencjonalne. W czasie wolnym lata dronem i nieregularnie opisuje swoje znaleziska na blogu związanym z bughuntingiem (https://frankowicz.me).