乐趣区

关于开源:OpenSSF发布npm-最佳实践指南应对开源依赖风险

开源平安基金会(OpenSSF)公布了 npm 最佳实际指南,以帮忙 JavaScript 和 TypeScript 开发人员升高应用开源依赖项相干的平安危险。OpenSSF Best Practice Group 公布的 npm 最佳实际指南,重点关注 npm 的依赖治理和供应链平安,涵盖各个领域,例如如何设置平安的 CI 配置、如何防止依赖混同以及如何应答劫持依赖导致的结果。随着开发人员越来越多地共享和应用依赖项,依赖项在促成更快地开发和翻新的同时,带来的危险也随之减少。

开源依赖项可能带来重大平安危险

OpenSSF 的贡献者示意,尽管看起来应用开源依赖项的益处远大于其害处,但依赖项导致的平安危险可能很大,大到有些企业(尤其是中小型企业)甚至有力接受。此外,和任何其它软件一样,依赖项可能存在破绽或被劫持的可能,这将会在很大水平上影响应用其的我的项目。

同时,Linux 基金会开源供应链平安主管 David A. Wheeler 强调,相比应用依赖项自身带来的平安危险, 开发人员应用开源依赖项带来的最大平安危险是低估了间接和间接依赖项中的破绽可能产生的影响。 不可否认的是任何软件都可能呈现缺点,如果应用不慎,可能会重大影响相干的软件供应链。然而很多时候,大部分依赖项都是不可见的,因而对应的平安危险更大。但缓解开源依赖项危险的解决方案并不是停止使用软件,而是智慧地应用软件,并为发现破绽及时更新组件做好充沛的筹备。

当然,制订一套无效的依赖平安管理策略是非常具备挑战性的,因为这其中波及的问题并非开发人员所相熟的解决方案。而 npm 最佳实际指南可能为开发人员及其组织在面临此类问题时提供帮忙,让他们可能更从容、更平安地应用和治理开源依赖项。 指南概述了 npm 可用的供应链平安性能,形容了与应用依赖项相干的危险,并提出在不同我的项目阶段升高危险的倡议。

解决开源危险的依赖治理要点

npm 最佳实际指南次要侧重于依赖治理,其中具体介绍了开发人员可能采取的一些帮忙缩小潜在威逼的步骤。例如在指南中明确提出,应用依赖项的第一步是钻研其起源、可信度和平安情况。同时,指南还特地指出开发人员须要提防域名仿冒攻打,比方有时攻击者会创立一个看起来像官网的软件包名称来诱导用户装置恶意软件包,那么这时开发人员就须要通过辨认软件包的 GitHub 存储库,并且评估其可信度(参考贡献者数量,星级等)。

同时指南还强调,在确定感兴趣的 GitHub 我的项目后,开发人员该当确定相应包的名称,并应用 OpenSSF Security Scorecards 来理解依赖项以后的平安情况。同时,开发人员还该当应用 deps.dev 理解传递依赖项的平安情况,并应用 npm-audit 理解我的项目依赖项中现有的破绽。

在此指南中也提到可反复装置(Reproducible installation)可能为企业提供平安劣势,因为它可能确保每次装置软件包时都应用精确的依赖项正本,在依赖项存在破绽时疾速辨认潜在的网络危害、缓解歹意依赖项等威逼,以及检测包损坏。

与此同时,指南中还提到开发人员还该当应用锁定文件,该文件应用加密哈希(cryptographic hashes)实现哈希固定(hash pinning)。哈希固定告诉包管理器(package manager)每个依赖项的预期哈希,而不是信赖镜像仓库。而后,包管理器在每次装置期间验证每个依赖项的 hash 是否放弃不变。任何对依赖项的歹意更改都会被检测到并被回绝。

须要留神的是,依赖关系的继续保护也很重要,开发人员须要定期更新,以配合新破绽密钥的披露和修补。为了治理企业的依赖关系,倡议应用 dependabot 或 renovatebot 等工具。这些工具提交合并申请,开发人员能够查看这些申请并将其合并到默认分支中。此外,如果要删除依赖项,开发人员该当定期运行 npm-prune 并提交合并申请。

参考链接:

https://openssf.org/blog/2022…

https://github.com/ossf/score…

退出移动版