Comments 8
Удивляет, что в опросе нельзя выбрать больше одного варианта) Мы вот используем сразу 3 из списка + неупомянутый вроде как отечественный SVACE , который на удивление хорош (только документация отстой).
Спасибо за статью.
Интересно, что кол-во инструментов в духе "собери статический анализатор сам" растёт. Как я понял, по сути всё сводится к написанию рулсета (в совокупности с правилами отслеживания данных, а-ля синки и сорцы для taint-анализа).
Что ещё интересно — насколько часто подобные решения применяются где-нибудь в энтерпрайзе на регулярной основе. Всё-таки SAST — это не только про рулсеты и анализ, но и про сопутствующие штуки, которые нужны для удобного регулярного использования.
Например:
плагины для IDE;
удобство интеграции в CI;
возможности разметки false positives;
baselinig;
...
Даже если вернуться к рулсетам. Кажется, одно дело — писать их самим и самим же заниматься правками false positives и т. п., и другое — отдать всё это на откуп разработчикам анализатора.
Отсюда и вопрос — насколько удобно использовать подобные инструменты на регулярной основе в рамках процесса разработки.
Будет интересно почитать, если кто-нибудь поделится своим опытом. :)
Отличный комментарий.
Да, статья, можно сказать, написана с колокольни исследователей безопасности. Большинство инструментов в обзоре были созданы как раз с целью помогать ресечерам находить интересные/уязвимые места в исходном/декомпилированном коде. Эти инструменты едва ли будут полезны в процессе разработки, ибо это не главная цель их использования. Однако CodeQL и Semgrep имеют гораздо более широкий спектр применения и могут пригодиться всем сторонам.
Применяются очень широко. Насколько вижу (я DevOps фрилансер из Израиля) SonarCloud (+SonarQube) самый популярный. Он очень легко интегрируется с GitHub и т.п.
Используют SAST и по требованию проверяльщиков безопасности, и/или просто руководство хочет "правильный" код.
Кстати поэтому мне жаль, что SonarCloud не вошел в разбор. Насколько понимаю, многие его сканеры используются и в других продуктах - например в Codacy.
Насчет "собери статический анализатор сам" - ИМХО, как и во многих случаях, "в принципе возможно". Но когда мы хотим GUI, легкую интеграцию в CI и т.п., то лучше выбрать сервис, пусть даже и платный.
Неоспоримый плюс semgrep перед другими подобными инструментами - это поддержка большого количества языков. Не нашел другого варианта для написания правил для Lua кроме как semgrep.
Игрушечный проект расположился в github-репозитории "double-free-samples".
А что за странности с форматированием?
https://raw.githubusercontent.com/Nalen98/double-free-samples/main/funcs.cpp
Так и задумывалось? Зачем такие отступы?
Или в битве tabs vs spaces опять победили tabs?
SAST для самых маленьких. Обзор open-source инструментов поиска уязвимостей для C/C++