Skip to content
KitploitKITPLOIT
工具博客
提交
工具博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
gokart — 一个用于保护 Go 代码安全的静态分析工具 | Kitploit
工具/GitHubGitHub/praetorian-inc/gokart
静态代码分析 (SAST)漏洞分析代码分析DevSecOps秘密检测错误配置Archived
GitHubpraetorian-inc/gokart

gokart

一个用于保护 Go 代码安全的静态分析工具

查看仓库
2.2k1062年前Kitploit 审核通过

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

GoKart - Go 安全静态分析

CI Release

GoKart 是一款针对 Go 语言的静态分析工具,它利用 Go 源码的 SSA(单静态赋值)形式来发现漏洞。该工具能够追踪变量和函数参数的来源,判断输入源是否安全,从而相比其他 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

使用方法

在当前目录的 Go 模块上运行 GoKart

root@kitploit:~
# 未指定目录时默认使用 '.'
gokart scan <flags>

扫描不同目录中的 Go 模块

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

获取帮助

root@kitploit:~
gokart help

入门指南 - 扫描示例应用

您可以按照以下步骤在 Go Test Bench(Contrast Security 团队故意构建的易受攻击 Go 应用程序)上运行 GoKart。

root@kitploit:~
# 克隆示例易受攻击应用程序
git clone https://github.com/Contrast-Security-OSS/go-test-bench.git
gokart scan go-test-bench/

输出应显示一些识别出的漏洞,每个漏洞都包含识别出的“易受攻击函数”和“用户输入源”。

要测试 GoKart 的更多功能,您可以使用下面建议的 CLI 标志进行扫描。

root@kitploit:~
# 使用 verbose 标志显示这些漏洞的完整追踪
gokart scan go-test-bench/ -v

# 使用 globalsTainted 标志忽略白名单中的源
# 可能会增加误报结果
gokart scan go-test-bench/ -v -g

# 使用 debug 标志显示内部分析信息
# 对开发和调试非常有用
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 中定义了一个测试接收器分析器。修改 util/analyzers.yml,移除测试接收器分析器上的注释,然后使用 -i 标志指示 GoKart 使用修改后的配置文件。

root@kitploit:~
# 使用修改后的 analyzers.yml 文件进行扫描,并输出完整追踪
gokart scan go-test-bench/ -v -i <path-to-gokart>/util/analyzers.yml

输出现在应包含额外的漏洞,包括新的“测试接收器可由用户输入到达”的漏洞。

运行 GoKart 测试

您可以通过以下命令(在 GoKart 根目录下运行)来执行包含的测试。

root@kitploit:~
go test -v ./...
下载工具