Выпуск утилиты GNU cflow 1.7 с устранением уязвимостей

После трёх лет разработки опубликован выпуск утилиты GNU cflow 1.7, предназначенной для построения наглядного графа вызовов функций в программах на языке Си, который может использоваться для упрощения изучения логики работы приложения. Граф строится только на основе анализа исходных текстов, без необходимости выполнения программы. Поддерживается генерация как прямых, так и обратных графов потоков выполнения, а также генерация списков перекрёстных ссылок для файлов с кодом.

Выпуск примечателен реализацией возможности указания нескольких стартовых функций через дублирование опций '--main', для каждой из подобных функций будет сгенерирован отдельный граф. Также добавлена опция »--target=FUNCTION» позволяющая ограничить результирующий граф только веткой, включающей определённые функции (опцию »--target» можно указывать несколько раз). Добавлен новый формат вывода — «dot» ('--format=dot') для формирования результата на языке DOT для последующей визуализации в пакете Graphviz. В режим cflow-mode добавлены новые команды для навигации по графу: «c» — переход к вызывающей функции, «n» — переход к следующей функции на данном уровне вложенности и «p» — переход к предыдущей функции с тем же уровнем вложенности.

В новой версии также устранены две уязвимости, которые были выявлены ещё в 2019 году и приводят к повреждению памяти при обработке в cflow специально оформленных исходных текстов. Первая уязвимость (CVE-2019–16165) вызвана обращением к памяти после её освобождения (use-after-free) в коде парсера (функция reference в parser.c). Вторая уязвимость (CVE-2019–16166) связана с переполнением буфера в функции nexttoken (). По мнению разработчиков, указанные проблемы не представляют угрозы безопасности, так как ограничиваются аварийным завершением утилиты.



Источник: http://www.opennet.ru/opennews/art.shtml? num=56444

© OpenNet