Зазвичай фазинг-тестування використовують для мов типу C і C++, але минулого року Google створив інструментарій і для Python, він називається Atheris. Тепер компанія відкрила код цього проєкту й опублікувала його на GitHub.
Atheris підтримує фазинг-тестування для Python 2.7 and Python 3.3+. Однак для повного покриття (того, що coverage-guided) радять використовувати Python 3.8 і пізніші версії. Якщо йдеться про фазинг нативних виразів, Atheris можна застосувати разом з інструментами Address Sanitizer чи Undefined Behavior Sanitizer.
Під час роботи Atheris багато разів перебирає різні вхідні дані та стежить, як програма виконується і чи не виникає проблем або винятків. Ще він корисний для порівняння бібліотек, котрі мають виконувати ті самі задачі. Наприклад, Atheris помітив, що пакети idna
для Python та libidn2
для C можуть видавати різні результати, хоч вони й роблять те саме декодування.
Також Atheris підтримує libFuzzer для фазинг-тестування нативних Python-розширень. Механізм libFuzzer інтегрований в Clang і зазвичай використовується для тестувань коду на C або C++. Atheris вкупі з libFuzzer може знаходити (окрім всього іншого) ще й помилки пошкодження пам'яті, які є лише у його власному коді.
Ще немає коментарів