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/09/01/npm-best-practices-for-the-supply-chain/
OpenSSF发布npm 最佳实践指南,应对开源依赖风险的更多相关文章
- 如何让HTTPS站点评级达到A+? 还得看这篇HTTPS安全优化配置最佳实践指南
0x00 前言简述 SSL/TLS 简单说明 描述: 当下越来越多的网站管理员为企业站点或自己的站点进行了SSL/TLS配置, SSL/TLS 是一种简单易懂的技术,它很容易部署及运行,但要对其进行安 ...
- ASP.NET Core Web API 最佳实践指南
原文地址: ASP.NET-Core-Web-API-Best-Practices-Guide 介绍 当我们编写一个项目的时候,我们的主要目标是使它能如期运行,并尽可能地满足所有用户需求. 但是,你难 ...
- [转]ASP.NET Core Web API 最佳实践指南
原文地址: ASP.NET-Core-Web-API-Best-Practices-Guide 转自 介绍# 当我们编写一个项目的时候,我们的主要目标是使它能如期运行,并尽可能地满足所有用户需求. 但 ...
- Python编程之美:最佳实践指南PDF高清完整版免费下载|百度云盘|Python新手到进阶
百度云盘:Python编程之美:最佳实践指南PDF高清完整版免费下载 提取码:1py6 内容简介 <Python编程之美:最佳实践指南>是Python用户的一本百科式学习指南,由Pytho ...
- Python 最佳实践指南 2018 学习笔记
基础信息 版本 Python 2.7 Python 3.x Python2.7 版本在 2020 年后不再提供支持,建议新手使用 3.x 版本进行学习 实现 CPython:Python的标准实现: ...
- 转载:Google 官方应用架构的最佳实践指南 赞👍
官方给的实践指南,很有实际的指导意义, 特别是对一些小公司,小团队,给了很好的参考意义. 原文地址: https://developer.android.com/topic/libraries/ar ...
- PYTHON 最佳实践指南(转)
add by zhj: 本文参考了The Hitchhiker's Guide to Python,当然也加入了作者的一些东西.The Hitchhiker's Guide to Python 的gi ...
- Android最佳实践指南
Updated on 2016/1/6 修正了一些翻译段落欢迎转载,但请保留译者链接:http://www.jianshu.com/p/613d28a3c8a0 Lessons learned fro ...
- Redis 混合存储最佳实践指南
Redis 混合存储实例是阿里云自主研发的兼容Redis协议和特性的云数据库产品,混合存储实例突破 Redis 数据必须全部存储到内存的限制,使用磁盘存储全量数据,并将热数据缓存到内存,实现访问性能与 ...
- HTTPS安全加固配置最佳实践指南
转载自:https://www.bilibili.com/read/cv16067729?spm_id_from=333.999.0.0 0x02 HTTPS安全加固指南 描述: 当你的网站上了 HT ...
随机推荐
- VRRP相关简述
VRRP 诞生原因 单网关,出问题时,旗下所有主机无法通信. 多网关,容易产生网关冲突. 而,VRRP能够在不改变组网的情况下,将多台路由器虚拟成一个虚拟路由器,通过配置虚拟路由器的IP地址为默认网关 ...
- 特殊符号传到后端发生变异 & "<>
业务遇到bug,前端传回数据 & ,到后台接收到的数据就是 & 后台接收到的数据就携带了amp;的后缀 网上查找原因,大部分说法是前端传回的数据导致,但是实际并不是,这里是框架的正则过 ...
- xxl-job默认accessToken命令执行漏洞复现
起因: 昨天看见微步发布XXL-JOB默认accessToken身份绕过漏洞,之前hw期间遇到过几次,都没弱口令和未授权,对其有点印象,遂复现一下. 漏洞影响:2.3.1和2.4 环境准备: 1.下载 ...
- reverse_re3
main函数 点击重要函数 对if里面的数字按r键,使其从ASCII码转为字符 发现wasd四个关键的移动方向键,判断为迷宫问题 判断应该是要次数为2,即次数++3(从0开始计数)次才会有flag 点 ...
- 神经网络入门篇:详解多样本向量化(Vectorizing across multiple examples)
多样本向量化 与上篇博客相联系的来理解 逻辑回归是将各个训练样本组合成矩阵,对矩阵的各列进行计算.神经网络是通过对逻辑回归中的等式简单的变形,让神经网络计算出输出值.这种计算是所有的训练样本同时进行的 ...
- Vue 2.x源码学习:数据响应式改造
内容乃本人学习Vue2源码的一点笔记,若有错误还望指正. 源码版本: vue: 2.6 vue-loader: 13.x vue-template-compiler: 2.6 相关学习笔记: rend ...
- Codeforces Round #696 (Div. 2) (A~C题解)
写在前边 链接:Codeforces Round #696 (Div. 2) A. Puzzle From the Future 链接:A题链接 题目大意: 给定一个\(a\),\(b\),\(d = ...
- preparedStatement.setObject()为什么要这样写?
setObject就是给JDBC的SQL语句的占位符赋值的,即是下面的"?" 预编译的SQL:参数使用?作为占位符 注意:sql的参数使用?作为占位符. 如: select * f ...
- MyBatis-Plus雪花算法实现源码解析
1. 雪花算法(Snowflake Algorithm) 雪花算法(Snowflake Algorithm)是一种用于生成唯一标识符(ID)的分布式算法.最初由 Twitter 公司开发,用于生成其内 ...
- LeetCode54、59:螺旋矩阵|、||(递归,模拟)
解题思路:定义一个方向数组,用栈或者直接从左上角的起点进行DFS,如果碰到下一步无法访问,调整方向,继续遍历,直到所有元素都访问了. (这道题好有历史感,到现在还记得我读大一的时候参加院队培训的时候做 ...