Релиз Svace 4.0

Мы выпускаем пререлиз Svace 4.0.241016. По сравнению с svace 3.4 было сделано множество улучшений и исправлений, о которых будет написано ниже. Этот релиз не является стабильным. Мы выполнили базовое тестирование и исправили критические проблемы. Исправление некритичных регрессий будет выполнено в первом обновлении 4.0.

Поддерживаемые версии языков

В Svace 4.0 мы обновили поддерживаемые версии для следующих языков:

Кроме этого для Go теперь будут игнорироваться обновления минорных версий.

Анализ JavaScript

На базе инфраструктуры UAST был реализован анализ на основе абстрактного синтаксического дерева для языка JavaScript. Реализованы следующие виды детекторов:

Улучшение анализа Python

В текущем релизе был существенно улучшен анализ python проектов. Мы переделали построение промежуточного представления (графа потока управления и графа вызовов), что позволило более точно моделировать семантику языка. Также добавлена базовая девиртуализация, которая помогает лучше устанавливать вызываемые функции для python кода.

Количество детекторов, доступных для python, достигло 50. Предыдущая версия имела 16 детекторов.

Развитие UAST

Количество поддерживаемых UAST детекторов увеличилось вдвое и достигло 70.

Для Go АСТ-детекторы были реализованы в отдельном компоненте Goa. В этом релизе мы реализовали АСТ-детекторы на инфраструктуре UAST. Благодаря этому возможности UAST-анализа доступны для языка Go, то позволит более активно развивать АСТ-детекторы для Go, и увеличит консистентность с другими языками.

Теперь UAST доступен для следующих языков: Java, Kotlin, Python, Go и JavaScript.

Улучшение Svace API

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

Мы добавили доступ к части внутренних свойств значений переменных:

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

Улучшение taint-детекторов

Tainted-детекторы осуществляют поиск уязвимостей использования данных из внешних источников. Внешними считаются данные, которые приходят из-вне программы. Например, это может быть пользовательский ввод; данные, полученные из сети; данные из файлов. Программа должна проверять такие данные перед использованием, иначе злоумышленник, имеющий возможность менять их, подберёт такие данные, что их использование вызовет возможные проблемы (падения программ, выполнение произвольного кода, утечку конфиденциальных данных и прочее).

Мы пометили общеизвестные функции, которые являются источником внешних данных. Пользователи могут расширять такие функции с помощью спецификаций Svace, комментариев к полям структур, а также JSON-файлов для языка C#.

Этот релиз содержит множество улучшений инфраструктуры taint-детекторов:

Ускорение анализа

В обновлении 3.4.240516 мы усовершенствовали систему проверки наличия лицензии, что позволило существенно ускорить анализ. В ряде случаев (в зависисимости от используемого сервера и анализируемого проекта) анализ ускорился в 10 раз.

Для пользователей, которые уже используют Svace версии 3.4.240516 и выше, ничего не поменяется. Те, кто используют более старые версии, могут ожидать ускорение анализа в новой версии.


Алексей Бородин