Аннотация:В данной работе предложен уточненный метод автоматизированной оценки
степени опасности найденных программных дефектов. На этапе тестирования
промышленного программного обеспечения выявляется значительное число дефектов,
приводящих к аварийному завершению. Из-за ограниченности ресурсов исправление
дефектов растягивается во времени и требует расстановки приоритетов. Основным
критерием для назначения высокого приоритета становится возможность использования
ошибки в злонамеренных целях. На практике эта задача решается путем
автоматизированного построения входных данных, подтверждающего наличие опасной
уязвимости. Но в известных публикациях по данной теме не учитывают современные
защитные механизмы, препятствующие действиям атакующего, что снижает качество
вырабатываемых оценок. В данной статье рассматриваются современные защитные
механизмы и дается оценка их распространенности и эффективности. Метод применим
к бинарным файлам и не требует какой-либо отладочной информации. В основе метода
лежит символьная интерпретация трасс выполнения, полученных при помощи
полносистемного эмулятора. Даже в условиях одновременного функционирования DEP,
ASLR и защиты стека («канарейка») метод способен демонстрировать возможность
использования ошибок, сочетающих условия «write-what-where» и переполнение буфера
на стеке. Возможности реализованного метода были продемонстрированы на модельных
примерах и реальных программах.