Как стать автором
Обновить

Комментарии 7

 Стоит отметить, что Go — это первый из распространённых языков, в котором есть встроенный фаззер. 

LibFuzzer (C/C++) был раньше

Конечно, фаззеры появились задолго до языка Go. Это, например, CrashMeClusterFuzzAFLlibFuzzer и другие.

ClusterFuzz это инфраструктура для фаззинга

Спасибо, поправил формулировку и убрал ClusterFuzz из списка.

Как в эту картину вписываются генераторы программ, типа csmith, gosmith, phpsmith? Они генерируют вход для компилятора/интерпретатора, а потом проверяют output и крашнулся ли он или нет.

Да, это тоже фаззинг, но фаззинг без обратной связи. Если вам тоже интересно тестирование компиляторов с помощью фаззинга, то возможно заинтересует доклад на эту тему:

Насколько успешен был ваш фаззер для PHP?

Доклад посмотрю, спасибо!

Фаззер для PHP/KPHP не вполне доделан, так что рановато пока говорить о результатах. Там сейчас очень плохой раннер, которые запускает генератор и проверяет результаты, а генератор более-менее нормальный. Какие-то проблемы нашлись, но хотелось бы большего.

В нашем конкретном случае есть ещё проверка того, что output у программ, запущенных на двух реализациях (компилируемый KPHP и интерпретатор PHP), одинаковый.

Зарегистрируйтесь на Хабре, чтобы оставить комментарий