一款安全工具,通过将 go.sum 中的校验和与原始源代码进行比对,绕过 Go Module Proxy 缓存,检测恶意 Go 软件包。
该工具可帮助防范利用 Go Module Proxy 缓存的供应链攻击,正如最近恶意 github.com/boltdb-go/bolt 软件包所展示的那样。
此类攻击利用 Go Module Proxy 的无限期缓存机制,即使在源仓库已被清理后,仍会提供恶意代码。
有关此类攻击的更多详细信息,请参阅:
该工具的工作原理如下:
go install github.com/knqyf263/go-mal-pkgs@latest
基本用法:
go-mal-pkgs /path/to/your/go/project
该工具将分析您项目的 go.sum 文件,并验证每个模块的完整性。
成功验证:
$ go-mal-pkgs /path/to/project
Checking golang.org/x/[email protected]...
✅ Verified golang.org/x/[email protected]
Checking github.com/stretchr/[email protected]...
✅ Verified github.com/stretchr/[email protected]
检测到潜在恶意软件包:
$ go-mal-pkgs /path/to/compromised-project
Checking github.com/boltdb-go/[email protected]...
⚠️ WARNING: checksum mismatch for github.com/boltdb-go/[email protected]:
expected: h1:abc123def456...
actual: h1:xyz789uvw012...
该工具使用 golang.org/x/mod/sumdb/dirhash 包实现 Go 的校验和验证算法。当检测到 go.sum 中的校验和与根据源仓库计算的校验和之间存在不匹配时,可能表明:
这是一个实验性工具,为应对近期 Go 模块代理缓存被利用的事件而创建,作为概念验证。整个代码库由 Claude 3.5 Sonnet AI 助手生成。