继日前宣布完成 2000 万美元的 A 轮融资后,开源代码扫描工具 Socket 紧接着宣布新增了对 Go 语言的支持;此前其仅支持 JavaScript 和 Python 语言。
“在过去的几个月中,我们观察到针对 Golang 的供应链攻击有所增加。意识到这种迫在眉睫的威胁后,我们知道是时候将 Socket 已经验证的主动式防护引入 Go 了。”
Socket 方面还介绍了在添加 Go 支持过程中所面临的挑战:
- 自定义依赖关系管理:与具有集中式存储库的 npm 或 pip 不同,Go 的 decentralized 方法及其基于 VCS 的依赖项获取可能更难监控。使用 GOPROXY 协议作为 crutch 的工具将错过发布到版本控制系统的最新版本,而这些正是最有可能发起供应链攻击的软件包。
- No lockfile:
go.sum
文件不是 lockfile,而是 Go 抵御 VCS 存储库和模块代理中被劫持的版本标记的最后一道防线。虽然它是保持 Go 生态系统安全的重要组成部分,但仅靠它无法防止 Go 模块中的危险代码。 - 动态版本控制:Go 模块的伪版本提供了未标记的 commit-based 版本控制,为跟踪依赖项增加了另一层复杂性。
- 传递依赖关系:监视间接依赖项需要深入了解
go.mod
文件和最小版本选择。安全工具需要了解 Go 模块解析方案中的潜在漏洞以及通过传递依赖引入的危险。正如在 npm 生态系统中看到的那样,当安全工具无法正确解析使用的依赖项时,通常会出现混乱和安全漏洞。
目前其已面向所有客户提供了"early access"阶段的测试特性和功能。主要特点包括:
- 全面分析
go.mod
文件,并根据go.sum
校验和进行验证 - 支持检测任何给定项目或包的整个依赖项生成列表中的已知漏洞
- 监控直接和间接依赖关系
- 模块替换和排除的兼容性检查
- 包资源管理器和 Socket 网站搜索
- 在 Socket reports 中列出 Go issues
在接下来的几周内,预计还将推出与 Socket for GitHub 和 Socket for VSCode 集成、增强 Go 模块支持、改进 AI 驱动的 Go 问题检测和零日漏洞监控等内容。
值得一提的是,除了新增对 Go 生态系统的支持外。Socket 还宣布了一个用于在下载前检查开源包是否安全的浏览器扩展,目前可用于 Chrome、Edge、Brave 和任何其他基于 Chromium 的浏览器以及 Firefox;并推出了一个付费增值功能,可以深入研究整个组织的代码库,以便随时查找任何依赖项。