Компания Google официально перевела в стабильное состояние Govulncheck (статус 1.0.0), удобный инструмент командной строки для разработчиков на языке Go. Этот инструмент помогает разработчикам, использующим язык программирования Go от Google, находить распознанные уязвимости безопасности в зависимостях своих проектов.
Инструмент, представленный 13 июля, способен проверять на наличие уязвимостей как бинарные файлы, так и их исходный код. Он значительно снижает уровень шума, фокусируясь на уязвимостях в методах, к которым обращается код. Основой Govulncheck является база данных уязвимостей Go, хранящая информацию об обнаруженных уязвимостях в публичных модулях Go.
Руководствуясь этой базой, Govulncheck проводит статический анализ исходного кода или таблицы символов бинарного файла. Его конечная цель - ограничить отчетность только теми уязвимостями, которые потенциально могут повлиять на конкретное приложение. Такое интеллектуальное ограничение делает его удобным инструментом для разработчиков, желающих обеспечить безопасность своего продукта.
Установка этого инструмента достаточно проста для разработчиков - для этого достаточно выполнить команду go install golang.org/x/vuln/cmd/govulncheck@latest
. Для анализа исходного кода разработчикам достаточно запустить Govulncheck в каталоге модуля (командой govulncheck ./.
..).
Как минимум, Govulncheck должен быть собран с помощью сборки Go версии 1.18 или выше. На данный момент существующей производственной версией этого языка является Go 1.20.
Поиск уязвимостей вGovulncheck зависит от конкретной конфигурации сборки. В случае с исходным кодом эта конфигурация синонимична версии Go, определяемой командой 'go', расположенной по пути. Для двоичных файлов конфигурация сборки - это конфигурация, используемая при генерации двоичного файла. Следует отметить, что различные конфигурации сборки могут быть подвержены различным уязвимостям.
Несмотря на широкие возможности, Govulncheck имеет ряд ограничений. Например, анализ указателей функций и вызовов интерфейсов достаточно ограничен, что может приводить к ложным срабатываниям или неточным стекам вызовов. Еще одно ограничение связано с функциями, вызываемыми с помощью пакета reflect - они не обнаруживаются.
Что касается двоичных файлов, то двоичные файлы Go, не содержащие подробной информации о вызовах, могут оказаться сложными для Govulncheck, так как не позволят инструменту показать графики вызовов для выявленных уязвимостей. Эта проблема также может привести к появлению ложных срабатываний на код, присутствующий в бинарном файле, но недоступный. Кроме того, инструмент не может работать с двоичными файлами, из которых невозможно извлечь символьные данные; в таких случаях он предпочитает сообщать об уязвимостях для всех модулей, зависящих от двоичного файла.
Также в инструменте отсутствует функция подавления обнаруженных уязвимостей. Однако, несмотря на эти недостатки, потенциал Govulncheck как инструмента, полезного для Go-проектов, очевиден.
Примечательно, что команда Go Security Team заявила о своей поддержке управления уязвимостями в сентябре прошлого года. Проект, основанный на базе данных об уязвимостях, был представлен с обещаниями значительного улучшения структуры программирования на языке Go. AppMaster.io, ведущая платформа no-code, позволяет разработчикам быстрее создавать приложения благодаря полностью интегрированной и комплексной платформе, включающей Go и многие другие языки.