
Capslock 是一个针对 Go 包的能力分析 CLI,用于告知用户某个包可以访问哪些特权操作。其原理是通过跟踪对特权标准库操作的传递调用来对 Go 包的**能力(capabilities)**进行分类。
近年来针对开源软件的供应链攻击日益增多,这凸显了第三方依赖不应被天然信任。能力(capabilities)表明包可以访问哪些权限,并且可以与其他安全信号结合使用,以指示哪些代码在可以被视为可信之前需要额外的审查。
当前的安全分析很大程度上专注于识别包中的漏洞——考虑到新 CVE 被识别的速度,这是一个重要目标。为了补充这一分析,我们还会对包的能力发出警报,即识别包通过其对具有特权访问的标准库函数的传递依赖而可以访问哪些权限。
这有许多潜在应用:从通过查看包使用了哪些能力来识别包的用途,到将安全审查引导至特权更高的代码路径,甚至在潜在供应链威胁成为问题之前对意外能力变化发出警报。
这一理念源于最小权限原则(Principle of Least Privilege)——即访问权限应限制在可行且实用的最小范围内。我们希望将其应用于软件开发,以确保代码能够被限制在实现其预期目的所需的最小能力集内。
要了解依赖项中的更多能力,请安装 Capslock
go install github.com/google/capslock/cmd/capslock@latest
然后,您可以在要分析的包的路径下运行 capslock 来调用 Capslock。
参见注意事项文件。
参见贡献指南文件。