Аннотация:
В статье рассматривается метод оценки эксплуатируемости программных дефектов. Применение данного подхода позволяет осуществить приоритезацию найденных ошибок в программах. Это даёт возможность разработчику программного обеспечения исправлять ошибки, которые представляют наибольшую угрозу безопасности в первую очередь. Метод представляет собой совместное применение предварительной классификации аварийных завершений и автоматическую генерацию эксплойтов. Предварительная классификация используется для фильтрации неэксплуатируемых ошибок. Если аварийное завершение считается потенциально эксплуатируемым, то выбирается соответствующий алгоритм генерации эксплойта. В случае успешной генерации эксплойта происходит проверка работоспособности посредством эксплуатации анализируемой программы в эмуляторе. Для поиска программных дефектов можно использовать различные методы. В качестве таких методов можно выделить фаззинг и активно развивающийся в настоящее время подход к поиску ошибок на основе динамического символьного выполнения. Главным требованием для использования предлагаемого метода является возможность получения входных данных, на которых проявляется найденный дефект. Разработанный подход применяется к бинарным файлам программ и не требует дополнительной отладочной информации. Реализация метода представляет собой совокупность программных средств, которые связаны между собой управляющими скриптами. Метод предварительной классификации и метод автоматической генерации эксплойтов реализованы в виде отдельных программных средств, которые могут работать независимо друг от друга. Метод был апробирован на анализе 274 аварийных завершений, полученных в результате фаззинга. В результате анализа удалось обнаружить 13 эксплуатируемых дефектов, для которых в последствии успешно сгенерированы работоспособные эксплойты.