spamsink: (Default)
[personal profile] spamsink
Это с одной стороны кролик, а с другой - утилита для случайного тестирования.





Программа afl-fuzz, с помощью которой были найдены ошибки и уязвимости во многих популярных библиотеках и программах, позволяет находить наборы входных данных для тестируемой программы, приводящие к как можно более разнообразным путям исполнения линейных участков. Тестируемая программа инструментируется путем перехвата ассемблерного кода внутри компилятора: к началу каждого линейного участка добавляется код, вычисляющий хэш из уникальных номеров предыдушего и текущего участков, и инкременту элемента массива (размером 64 кб) по полученному хэш-индексу.

Массив находится в общей памяти, разделяемой между сервером и анализируемой программой, поэтому по ее завершении сервер тут же видит всю статистику путей выполнения, оценивает новизну, решает, как изменить входные данные для максимизации вероятности получить новый путь, и повторяет процедуру, обычно со скоростью от нескольких тысяч до нескольких сотен раз в секунду, в зависимости от длины входных данных и сложности анализируемой программы. Для нахождения скрытых ошибок в нетривиальных программах, тем не менее, могут потребоваться дни или даже недели непрерывной работы.

Входные данные, приводящие к зависанию или аварийному завершению, запоминаются отдельно.

Разумеется, можно не полагаться на автоматическую инструментовку, а написать работу с массивом самостоятельно. При этом можно выбирать по вкусу, что считать "линейным участком", что - путём между ними, и т.п. Таким образом можно тестировать программы на многих разных языках, от Python до JS, а также программы в кодах на эмулируемых процессорах.

На картинке выше, как нетрудно видеть, программа работает с массивом самостоятельно, поэтому за считаные минуты обнаружилось бешеное количество "путей выполнения" и вся хэш-таблица оказалась забита под завязку (показатель заполнения становится тревожно-красного цвета, если таблица заполнена более чем на 70%).
From:
Anonymous( )Anonymous This account has disabled anonymous posting.
OpenID( )OpenID You can comment on this post while signed in with an account from many other sites, once you have confirmed your email address. Sign in using OpenID.
User
Account name:
Password:
If you don't have an account you can create one now.
Subject:
HTML doesn't work in the subject.

Message:

 
Notice: This account is set to log the IP addresses of everyone who comments.
Links will be displayed as unclickable URLs to help prevent spam.

Profile

spamsink: (Default)
spamsink

June 2017

S M T W T F S
    1 23
4 5 678910
111213 141516 17
18 1920 21 222324
252627282930 

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Jun. 28th, 2017 05:18 am
Powered by Dreamwidth Studios