Институт системного программирования Роcсийской академии наук


Инструмент итеративного динамического анализа программ Avalanche

Инструмент Avalanche построен на основе среды динамической инструментации программ Valgrind и реализует итеративный автоматический анализ исполняемого кода программ с целью обнаружения критических ошибок времени выполнения.

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

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

К основным достоинствам используемого инструментом метода проведения динамического анализа можно отнести:

  • анализ программы при отсутствии доступа к исходному коду программы.
  • отсутствие ложных предупреждений при определённых ограничениях, накладываемых на анализируемую программу (детерминированность).
  • автоматический обход достижимых путей выполнения программы, который нацелен на увеличение покрытия.
  • возможность воспроизведения найденных ошибок.

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

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

Публикации

  1. И.К. Исаев, Д.В. Сидоров, А.Ю. Герасимов, М.К. Ермаков. Avalanche: Применение динамического анализа для автоматического обнаружения ошибок в программах, использующих сетевые сокеты. Труды Института системного программирования РАН Том 21. 2011 г. Стр. 55-70.
  2. С. П. Вартанов, Д.В. Сидоров. Оптимизация задачи проверки выполнимости булевских ограничений при помощи кэширования промежуточных результатов. Труды Института системного программирования РАН Том 22. 2012 г. Стр. 281-292.
  3. М.К. Ермаков, А.Ю. Герасимов. Avalanche: применение параллельного и распределенного динамического анализа программ для ускорения поиска дефектов и уязвимостей. Труды Института системного программирования РАН Том 25. 2013 г. Стр. 29-38.

Проекты

Инструмент итеративного динамического анализа программ Avalanche

Разработчик/участник

Системное программирование

Перейти к списку всех технологий