Capslock: 你的代码真正能做什么?

本文介绍了由 Google 开源安全团队带来的一款代码能力分析的命令行工具 Capslock,它可以帮助我们进行代码审计等工作。

当你导入第三方库时,你会检查每一行代码吗?大多数软件包依赖于外部库,相信这些包不会做出任何意外的行为。如果这种信任被破坏,后果可能是巨大的——无论这个包是恶意的,还是出于善意但使用了过于宽泛的权限,比如2021年的Log4j。供应链安全是一个日益严重的问题,我们希望更多地了解包的功能能够帮助每个人更轻松地进行安全编码。

在没有关于依赖项代码实际功能的适当信息的情况下,避免不良依赖可能很困难,而且审查每一行代码是一项巨大的任务。每个依赖项还会带来自己的依赖项,扩大了对扩展的传递依赖的审查需求。但是,如果有一种简单的方法可以了解您的依赖项的功能-代码访问的特权操作,那该多好呢?

Capslock是一个能力分析的命令行工具,它可以告知用户在给定软件包及其依赖中的特权操作(如网络访问和任意代码执行)。上个月,我们发布了Capslock针对Go语言的alpha版本,它可以分析并报告开源软件在表面之下使用的能力。

这个命令行工具将通过报告访问标准库中特权操作的代码路径,提供对依赖行为的更深入洞察。在即将推出的版本中,我们将为开源维护者添加支持,以规定和隔离其软件包所需的功能,向用户突出显示存在的功能,并在其发生变化时提醒他们。

能力与弱点

漏洞管理是供应链安全的重要组成部分,但它并不能完全揭示您的依赖是否安全可用。将能力分析纳入您的安全姿态中,可以更好地了解您的依赖可能的行为类型,识别潜在的弱点,并使您能够更明智地选择是否使用特定的依赖。

Capslock的动力来自于这样一种信念:最小权限原则——即访问应该限制在最小可行和实际可行的范围内——应该成为安全且易用软件的一流设计概念。在软件开发中应用这一原则意味着一个软件包只能被允许访问其核心行为所需的能力。例如,你不会期望一个数据分析软件包需要访问网络,或者一个日志库包含远程代码执行能力。

Capslock最初是为Go推出的,Go是一种具有强大安全承诺和出色工具的语言,可用于查找包依赖中已知的漏洞。当Capslock与Go的漏洞管理工具一起使用时,开发人员可以利用额外的、互补的信号来解释他们依赖项中的漏洞。

这些能力信号可以用来

  • 寻找具有最高访问级别的代码,以优先进行审计、代码审查和漏洞修补
  • 当现有的依赖关系不再适用时,比较潜在的依赖关系,或寻找替代的软件包
  • 揭示包中不需要的功能使用情况,以发现新的漏洞或识别正在进行的供应链攻击
  • 监控由于软件包版本或依赖关系变化而产生的意外新功能,并将能力监控整合到CI/CD流程中
  • 筛选漏洞数据以应对最相关的案例,例如在网络特定漏洞警报期间发现具有网络访问权限的软件包

使用 Capslock 工具

Capslock: 你的代码真正能做什么?

我们期待在未来的版本中增加新功能,例如更好地支持声明软件包的预期功能,并扩展到其他编程语言。我们正在努力将Capslock应用到更大范围,并使开源软件包的能力信息在deps.dev等各种社区工具中广泛可用。

现在你可以尝试使用Capslock,我们希望它能帮助你审计外部依赖并对代码的功能做出明智的决策。

 

谷饭原创编/译文章,作者:peter,转载请注明出处来自谷饭,并加入本文链接: https://www.goofan.com/2023/09/capslock-what-is-your-code-reall/

(0)
peter的头像peter谷饭作者
上一篇 2023年 9月 9日 下午9:39
下一篇 2023年 10月 3日 下午10:56

相关推荐

wechat
关注微信公众号