跳到内容

使用 LavaMoat 解决软件供应链安全问题

LavaMoat 是一套安全工具,适用于任何 JavaScript 应用程序,可降低软件供应链风险。

3 分钟阅读
使用 LavaMoat 解决软件供应链安全问题

LavaMoat 是一款免费开源工具,专为关注供应链安全的 JavaScript 开发团队而设计。这一工具由 MetaMask 联合创始人 Kumavis 创立,同时解决了 Web3 中的安全问题以及开源生态系统中长期存在的结构性安全隐患。

如果你正在使用 JavaScript(简称 JS)进行开发,就必须了解其依赖项的安全现状。JS 工程师很少从零开始构建应用;他们通常会将现有代码片段(通常称为"依赖项")引入项目,像积木一样加以使用。这对协作和提升开发速度大有裨益,但如果某个依赖项中包含恶意代码,该怎么办?

软件供应链安全涵盖所有与应用程序相关的内容(如依赖项),以及参与开发过程的各个环节(如构建工具或 CI 系统)。JavaScript 是开发者最常用的编程语言,同时也极易遭受供应链攻击。这份来自 2017 年的漏洞时间线显示,约半数攻击源自 npm——一个广受欢迎的开源 JS 包来源:

来源:SonaType

JavaScript 之所以成为攻击目标,原因在于:

  1. 广泛普及: 前端和后端均有使用

  2. 环境权限: 在运行 JavaScript 的环境中,你可以获取大量权限,例如网络访问权限

  3. 可变性: 默认情况下,一切皆可修改

2018 年的 Copay 钱包黑客事件引发了 Kumavis 解决这一问题的兴趣,也成为设计 LavaMoat 的主要参考案例。Copay 是 BitPay 推出的一款自托管比特币钱包,遭遇了一次供应链攻击,导致用户资金被盗。攻击者控制了该钱包所使用的某个 npm 依赖项,从而得以实施攻击。

那么,如何解决这个问题?目前有几种常见的解决思路。

完全不使用依赖项?不现实。

虽然这样或许更安全,但你真的愿意放弃开源——那个作为我们共同基础、汇聚了无数共同财富的生态系统吗?放弃分享与协作?如果你想构建复杂的东西,真的愿意花时间重新造轮子吗?

我们也不愿意。

始终审计所有依赖项?同样不现实。

这个想法固然不错,但你有多少依赖项?几百个?几千个?几万个?这根本不切实际——不过,如果你确实想进行手动审计,LavaMoat 可以帮你优先排查最危险的依赖项(后文详述)。

而且,即便你有时间仔细审查每个包,你真的能发现其中的安全漏洞吗?

这很难说。所以,让我们来探索一种不同的解决方案:

LavaMoat?就是它。

与其完全不使用依赖项,或始终审计所有依赖项,不如来看看 LavaMoat 的安全内核——它将各个包封装在独立的隔离区中,并仅授予其所需的访问权限。

请记住,恶意代码要攻击你的系统,必须先获得相应的权限。LavaMoat 的内核会扫描你引入项目的第三方代码,判断各依赖项运行所需的权限,并且 仅授予这些权限**。**

LavaMoat 目前正在 MetaMask 为数千万用户提供保护,并在每个开发流程的三个不同阶段运行:依赖项安装、构建和运行时。

为了更直观地理解,请查看这个依赖关系图可视化仪表盘:

左侧列出了你的依赖项列表,右侧以神经网络的形式展示了依赖关系图。颜色基于危险程度的启发式评估:例如,绿色表示该依赖项未调用任何高权限平台 API。

这里的核心理念是帮助你优先排查需要审计的依赖项。

那么,如何实施呢?

结合三个开发阶段:

  1. 安装阶段:@lavamoat/allow-scripts

  2. 构建阶段:lavamoat-node

  3. 运行时阶段:适用于你的打包工具的 lavamoat-x 插件

这将为恶意代码构筑一道防护壕沟。

规模化软件构建

如果你有兴趣参与贡献,LavaMoat 是开源项目!我们正在努力为尽可能多的打包工具开发插件,并希望让策略审查更加便捷,同时在为包授予网络访问权限时实现更严格的锁定。欢迎在此处参与贡献。

订阅我们的开发者通讯,获取更多最新动态!祝构建顺利。

AI 翻译。可能包含错误。请务必核实信息。

评价此翻译

本文作者:

  • MetaMask

    MetaMask(前身为 Consensys Software Inc)是全球最大的自托管金融平台,为用户提供一站式服务,涵盖加密资产与传统资产的持有、消费、储蓄与增值。公司正在打造实现上述功能的消费级平台,将支付、储蓄、投资与数字资产整合于一体,带来无缝一体化的使用体验。MetaMask 脱胎于全球使用最广泛的自托管钱包,让用户直接掌控自己的资金与资产,覆盖约 190 个国家和地区。自 2016 年起,MetaMask 在以太坊的发展历程中扮演了举足轻重的奠基角色。如今,MetaMask 处于区块链经济的核心位置,致力于构建「开放货币」的操作系统,让每个人都能全面掌控自己的财务生活。

    阅读所有文章