Другие журналы
|
научное издание МГТУ им. Н.Э. БауманаНАУКА и ОБРАЗОВАНИЕИздатель ФГБОУ ВПО "МГТУ им. Н.Э. Баумана". Эл № ФС 77 - 48211. ISSN 1994-0408![]()
Метод поиска обращений по некорректному индексу к строкам C++
# 05, май 2016 DOI: 10.7463/0516.0840726
Файл статьи:
![]()
В связи с общей распространённостью языка C++, а также в связи с распространением языка C++ для программирования мобильных платформ, таких как Tizen, задача статического анализа программ, разрабатываемых с использованием этого языка, является актуальной. Статья посвящена поиску обращений по некорректному индексу к строковым объектам языка C++. В отличие от переполнений строк C, данный дефект крайне редко обнаруживается промышленными статическими анализаторами в связи со сложностью моделирования данных объектов. В настоящей работе формализованы критерии обнаружения дефекта, а также разработаны формальные правила моделирования методов строк C++ и ряда функций стандартной библиотеки шаблонов языка C++. Данные правила позволяют выполнять моделирование длины строки и индекса обращения к строке. Разработаны правила, позволяющие выполнять межпроцедурный анализ с использованием резюме анализируемой функции. В данной работе производится моделирование только длины строки, что является компромиссом между точностью поиска и объёмом обрабатываемой информации. На основе разработанных правил моделирования реализован проверяющий модуль для статического анализатора Clang Static Analyzer, использующего метод символьного выполнения для анализа возможных путей выполнения программы. Этот проверяющий модуль был опробован на исходном коде пользовательских окружений операционных систем Android и Tizen общим объёмом около 20 млн. строк кода. Результаты ручной проверки срабатываний проверяющего модуля подтвердили высокую точность, достаточную для применения в промышленном статическом анализаторе: около 70% срабатываний в результате ручной инспекции признаны корректными. Перспективы развития предложенного подхода заключаются в разработке более общего набора правил для моделирования классов контейнеров стандартной библиотеки языка C++, а также модификация правил для проверок программ на других языках программирования. Кроме того, интерес представляет моделирование содержимого строки, поскольку с его отсутствием был связан ряд ложных срабатываний. Список литературы
Публикации с ключевыми словами: C++, STL, статический анализ, Clang Static Analyzer, строковое переполнение Публикации со словами: C++, STL, статический анализ, Clang Static Analyzer, строковое переполнение Смотри также:
Тематические рубрики: Поделиться:
|
|
||||||||||||||||||||||||||||||||||
|