Skip to content
KitploitKITPLOIT
ИнструментыБлог
Отправить
ИнструментыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
Инструменты/GitHubGitHub/praetorian-inc/gokart
Статический анализ кода (SAST)Анализ уязвимостейАнализ КодаDevSecOpsОбнаружение СекретовНеправильная КонфигурацияArchived
GitHubpraetorian-inc/gokart

gokart

Инструмент статического анализа для обеспечения безопасности Go-кода

Репозиторий
2.2k1062 лет назадПроверено Kitploit

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться

GoKart - Статический анализ безопасности Go

CI Release

GoKart — это инструмент статического анализа для Go, который находит уязвимости, используя SSA (однократное статическое присваивание) исходного кода Go. Он способен отслеживать источник переменных и аргументов функций, чтобы определить, являются ли входные источники безопасными, что снижает количество ложных срабатываний по сравнению с другими сканерами безопасности Go. Например, SQL-запрос, конкатенированный с переменной, традиционно может быть помечен как SQL-инъекция; однако GoKart может выяснить, является ли переменная на самом деле константой или эквивалентом константы, и в этом случае уязвимости нет.

GoKart также помогает поддерживать Chariot, платформу безопасности Praetorian, которая помогает находить, управлять и устранять уязвимости в вашем исходном коде и облачных средах. Chariot упрощает запуск автоматических, непрерывных сканирований GoKart для вашего исходного кода. Если вы хотите попробовать GoKart, вы можете создать бесплатную учетную запись Chariot за несколько минут, нажав здесь.

Почему мы создали GoKart

Статический анализ — это мощный метод поиска уязвимостей в исходном коде. Однако этот подход страдает от зашумленности — то есть многие инструменты статического анализа находят достаточно много «уязвимостей», которые на самом деле не являются реальными. Это приводит к трениям с разработчиками, поскольку пользователи устают от того, что инструменты слишком часто «кричат "волки!"».

Мотивацией для GoKart было решение этой проблемы: сможем ли мы создать сканер со значительно более низким уровнем ложных срабатываний, чем существующие инструменты? Основываясь на наших экспериментах, ответ — да. Используя трассировку от источника к приемнику и SSA, GoKart способен отслеживать заражение переменных между присваиваниями, что значительно повышает точность результатов. Мы фокусируемся на удобстве использования: прагматически это означает, что мы оптимизировали наши подходы для уменьшения числа ложных тревог.

Для получения дополнительной информации прочитайте наш пост в блоге.

Установка

Вы можете установить GoKart локально, используя любой из перечисленных ниже вариантов.

Установка с помощью go install

root@kitploit:~
$ go install github.com/praetorian-inc/gokart@latest

Установка готового бинарного файла

  1. Загрузите бинарный файл для вашей ОС со страницы релизов.

  2. (ОПЦИОНАЛЬНО) Загрузите файл checksums.txt для проверки целостности архива

root@kitploit:~
# Проверка контрольной суммы загруженного архива
$ shasum -a 256 gokart_${VERSION}_${ARCH}.tar.gz
b05c4d7895be260aa16336f29249c50b84897dab90e1221c9e96af9233751f22  gokart_${VERSION}_${ARCH}.tar.gz

$ cat gokart_${VERSION}_${ARCH}_checksums.txt | grep gokart_${VERSION}_${ARCH}.tar.gz
b05c4d7895be260aa16336f29249c50b84897dab90e1221c9e96af9233751f22  gokart_${VERSION}_${ARCH}.tar.gz
  1. Распакуйте загруженный архив
root@kitploit:~
$ tar -xvf gokart_${VERSION}_${ARCH}.tar.gz
  1. Переместите бинарный файл gokart в ваш путь:
root@kitploit:~
$ mv ./gokart /usr/local/bin/

Клонирование и сборка вручную

root@kitploit:~
# клонируйте репозиторий GoKart
$ git clone https://github.com/praetorian-inc/gokart.git

# перейдите в каталог репозитория и соберите
$ cd gokart
$ go build

# Переместите бинарный файл gokart в ваш путь
$ mv ./gokart /usr/local/bin

Поддержка Docker

Соберите образ Docker

root@kitploit:~
docker build -t gokart .

Запуск контейнера с локальным сканированием (каталог локального сканирования должен быть смонтирован в образ контейнера)

root@kitploit:~
docker run -v /path/to/scan-dir:/scan-dir gokart scan /scan-dir

Запуск контейнера с удаленным сканированием (при указании приватного ключа для аутентификации его также необходимо смонтировать в контейнер)

root@kitploit:~
docker run gokart scan -r https://github.com/praetorian-inc/gokart

# указание приватного ключа для аутентификации по SSH в частном репозитории
docker run -v /path/to/key-dir/:/key-dir gokart scan -r [email protected]:praetorian-inc/gokart.git -k /key-dir/ssh_key

Использование

Запуск GoKart на Go-модуле в текущей директории

root@kitploit:~
# запуск без указания директории по умолчанию использует '.'
gokart scan <flags>

Сканирование Go-модуля в другой директории

root@kitploit:~
gokart scan <directory> <flags> 

Получить справку

root@kitploit:~
gokart help

Начало работы - Сканирование примера приложения

Вы можете выполнить следующие шаги, чтобы запустить GoKart на Go Test Bench, преднамеренно уязвимом Go-приложении от команды Contrast Security.

root@kitploit:~
# Клонируйте пример уязвимого приложения
git clone https://github.com/Contrast-Security-OSS/go-test-bench.git
gokart scan go-test-bench/

Вывод должен показать некоторые выявленные уязвимости, каждая с указанием Уязвимой функции и Источника пользовательского ввода.

Чтобы протестировать некоторые дополнительные функции GoKart, вы можете выполнить сканирование с флагами CLI, предложенными ниже.

root@kitploit:~
# Используйте флаг подробного вывода, чтобы показать полные трассировки этих уязвимостей
gokart scan go-test-bench/ -v

# Используйте флаг globalsTainted, чтобы игнорировать разрешенные источники
# может увеличить количество ложных срабатываний
gokart scan go-test-bench/ -v -g

# Используйте флаг отладки для отображения внутренней информации анализа
# полезно для разработки и отладки
gokart scan go-test-bench/ -d

# Вывод результатов в формате SARIF
gokart scan go-test-bench/ -s

# Вывод результатов в файл
gokart scan go-test-bench/ -o gokart-go-test-bench.txt

# Вывод результатов в формате SARIF в файл
gokart scan go-test-bench/ -o gokart-go-test-bench.txt -s

# Сканирование удаленного публичного репозитория
# Репозиторий будет клонирован локально, отсканирован и удален после
gokart scan -r https://github.com/ShiftLeftSecurity/shiftleft-go-demo -v

# Указание удаленной ветки для сканирования
gokart scan -r https://github.com/ShiftLeftSecurity/shiftleft-go-demo -b actions_fix

# Сканирование удаленного приватного репозитория через SSH
gokart scan -r [email protected]:Contrast-Security-OSS/go-test-bench.git 

# Сканирование удаленного приватного репозитория с опциональным указанием ключа для аутентификации по SSH
gokart scan -r [email protected]:Contrast-Security-OSS/go-test-bench.git -k /home/gokart/.ssh/github_rsa_key

# Используйте флаги удаленного сканирования и вывода вместе для бесшовных проверок безопасности
gokart scan -r https://github.com/ShiftLeftSecurity/shiftleft-go-demo -o gokart-shiftleft-go-demo.txt -v 

# Используйте флаги удаленного сканирования, вывода и SARIF для бесшовной интеграции в CI/CD
gokart scan -r https://github.com/ShiftLeftSecurity/shiftleft-go-demo -o gokart-shiftleft-go-demo.txt -s

Чтобы протестировать расширяемость GoKart, вы можете изменить файл конфигурации, который использует GoKart, чтобы ввести новый уязвимый приемник в анализ. В файле конфигурации по умолчанию, включенном в комплект, по адресу util/analyzers.yml определен анализатор Test Sink. Измените util/analyzers.yml, чтобы удалить комментарии на анализаторе Test Sink, а затем укажите GoKart использовать измененный файл конфигурации с флагом -i.

root@kitploit:~
# Сканирование с использованием измененного файла analyzers.yml и вывод полных трассировок
gokart scan go-test-bench/ -v -i <path-to-gokart>/util/analyzers.yml

Вывод теперь должен содержать дополнительные уязвимости, включая новые уязвимости "Test Sink reachable by user input".

Запуск тестов GoKart

Вы можете запустить включенные тесты с помощью следующей команды, вызванной из корневого каталога GoKart.

root@kitploit:~
go test -v ./...
Скачать инструмент