forked from nihonium/linux-auth
small fixes in report
This commit is contained in:
parent
5fa0ca0444
commit
4befabc967
1 changed files with 16 additions and 10 deletions
|
|
@ -8,7 +8,7 @@ Go версии 1.23, Debian 12.
|
|||
|
||||
Go версии 1.24, Debian 13.
|
||||
|
||||
# Статический анализ
|
||||
# Статический анализ (SAST)
|
||||
|
||||
* Bearer - хорошо работает для анализа взаимодействия с ОС, подсветил возможную утечку информации в логах работы приложения и отсутствие проверки пути загрузки конфига.
|
||||
|
||||
|
|
@ -16,24 +16,24 @@ Go версии 1.24, Debian 13.
|
|||
|
||||
* Golangci-lint - больше линтер, нежели статический анализатор, указал только на возможную замену if с условием, содержащем "ИЛИ", на switch (я считаю, что это false positive).
|
||||
|
||||
* Svace (svacer) - проприетарный инструмент, который был развёрнут во внутренней сети компании и был также использован, но не был включён в итоги;
|
||||
было одно срабатывание на код самого приложения и достаточно много - на использованные модули; по моему мнению, все срабатывания - false positive.
|
||||
* Svace (svacer) - проприетарный инструмент, который был развёрнут во внутренней сети компании и был также использован, но не был включён в итоги; было одно срабатывание на код самого приложения и достаточно много - на использованные модули; по моему мнению, все срабатывания - false positive.
|
||||
|
||||
Подробные результаты (кроме svace/svacer) см. в директории sast_results.
|
||||
|
||||
# Фаззинг
|
||||
|
||||
* Нативный фаззинг (доступен с версии Go 1.18 и считается стандартом, как дополнение нативного тестирования позволяет визуализировать покрытие кода) - объектом тестирования стала функция аутентификации, которая в том числе вызывала функции для доступа к БД и хеширования;
|
||||
цель фаззинга - проверка корректности работы функции аутентификации; входные данные - строки логина и пароля (начальные данные - правильные и неправильные пары логин-пароль для 2 тестовыъ пользователей, а также пустые строки в качестве логина и пароля);
|
||||
отслеживались ошибки, возвращаемые самой функцией аутентификации, неожиданная (не по 2 парам логин-пароль в тестовой базе) успешная аутентификация и аварийное завершение работы.
|
||||
* Нативный фаззинг (доступен с версии Go 1.18 и считается стандартом, как дополнение нативного тестирования позволяет визуализировать покрытие кода) - **объектом тестирования** стала функция аутентификации, которая в том числе вызывала функции для доступа к БД и хеширования; **цель фаззинга** - проверка корректности работы функции аутентификации; **входные данные** - строки логина и пароля (начальные данные - правильные и неправильные пары логин-пароль для 2 тестовых пользователей, а также пустые строки в качестве логина и пароля); **отслеживались ошибки**, возвращаемые самой функцией аутентификации, а также неожиданная (не по 2 парам логин-пароль в тестовой базе) успешная аутентификация и аварийное завершение работы.
|
||||
|
||||
* AFL++ в режиме QEMU (универсальный способ проверки готового бинарника, принимающего данные в stdin или из файла) - объектом тестирования стала скомпилированная программа; цель - проверка устойчивости итогового исполняемого файла к различным входным данным;
|
||||
начальные входные данные были как и в нативном фаззинге (корректные строки), но во время фаззинга они мутировали в том числе и в бинарные данные; отслеживалось аварийное завершение работы.
|
||||
* AFL++ в режиме QEMU (универсальный способ проверки готового бинарника, принимающего данные в stdin или из файла) - **объектом тестирования** стала скомпилированная программа; **цель** - проверка устойчивости итогового исполняемого файла к различным входным данным; **начальные входные данные** были как и в нативном фаззинге (корректные строки), но во время фаззинга они мутировали в том числе и в бинарные данные; **отслеживалось** аварийное завершение работы.
|
||||
|
||||
Длительность фаззинга - 6 часов. Ошибок не найдено.
|
||||
|
||||
# Анализ зависимостей
|
||||
# Анализ сторонних зависимостей
|
||||
|
||||
Go хорош тем, что не даёт скомпилировать программу при наличии избыточных зависимостей (неиспользованные import считаются ошибкой). Скачать библиотеки можно как из официального репозитория пакетов, так и из пользовательских репозиториев (на github).
|
||||
|
||||
Также система модулей (см. файлы go.mod и go.sum) позволяет зафиксировать версии заимствованных библиотек с использованием хешей как исходного кода самих импортируемых модулей, так и хешей их зависимостей (их go.mod).
|
||||
|
||||
Таким образом, гарантируется автоматическое ведение списка зависимостей, повторяемость сборок и защита от возможных злоумышленных изменений кода сторонних библиотек. В файле go.mod в том числе указывается тип зависимости, а именно приписка indirect у транзитивной зависимости, требующейся для работы прямой зависимости.
|
||||
|
||||
## Список зависимостей
|
||||
|
|
@ -46,7 +46,13 @@ Go хорош тем, что не даёт скомпилировать прог
|
|||
|
||||
* golang.org/x/sys - зависимость golang.org/x/term для низкоуровневой работы с ОС
|
||||
|
||||
Анализ зависимостей на известные уязвимости с помощью утилиты govulncheck дал такой результат (это именно вызовы уязвимых функций, подробнее см. в директории govulncheck):
|
||||
* а также компоненты стандартной библиотеки Go
|
||||
|
||||
Итого: библиотека term (с зависимостью sys) используется в единственном месте для важной задачи (маскирование вводимого пароля), библиотека go-toml тоже используется для единственной функции (чтение параметров-настроек при запуске приложения для возможности гибкой настройки), библиотека go-sqlite3 используется для модификации поведения стандартной библиотеки database/sql (а именно регистрация драйвера SQLite) и затрагивает все 8 функций в internal/db/sqlite.go.
|
||||
|
||||
## Безопасность зависимостей
|
||||
|
||||
Анализ зависимостей на известные уязвимости с помощью утилиты govulncheck (официальный инструмент, использующий официальную базу уязвимостей) дал такой результат (это именно вызовы уязвимых функций, подробные результаты см. в директории govulncheck):
|
||||
|
||||
Vulnerability #1: GO-2026-4341 Memory exhaustion in query parameter parsing in net/url (More info: https://pkg.go.dev/vuln/GO-2026-4341)
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue