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 ...
随机推荐
- mybatis plus很好,但是我被它坑了!
作者今天在开发一个后台发送消息的功能时,由于需要给多个用户发送消息,于是使用了 mybatis plus 提供的 saveBatch() 方法,在测试环境测试通过上预发布后,测试反应发送消息接口很慢得 ...
- 「面试题」20+Vue面试题整理
「面试题」20+Vue面试题整理 转载地址:https://juejin.cn/post/6844904084374290446 「观感度:」 「口味:红烧猪蹄」 「烹饪时间:15min」 本文已收录 ...
- Java 基础学习第二弹
1. HashMap和HashT able的区别 HashMap和Hashtable是两种常见的哈希表数据结构,它们在实现上有一些区别. 线程安全性:Hashtable是线程安全的,而HashMap不 ...
- L2-033 简单计算器
#include <bits/stdc++.h> using namespace std; int cal(int a, int b, char c) { int t; if (c == ...
- UIPath流程控制
应当仔细地观察,为的是理解:应当努力地理解,为的是行动. UIPath程序中流程控制主要包括条件语句.循环语句以及中断语句.下面我们一一学习这些语句在RPA流程设计中的使用. 1. 条件判断 if ...
- RPN FPN ROIPooling
RPN(Region Proposal Network)介绍---> 特点从backbone 生成的Feture Map中 用一个 3x3 的Conv卷积核 遍历FeatureMap的每个点然后 ...
- 运行tomcat之后报一个:"Address localhost:1099 is already in use"错误
一.解决方案 1.错误原因 "地址 localhost:1099 已在使用中",是1099程序被占用,把1099程序后台停止掉即可. 2.解决方案 1.快捷键win+R打开CMD运 ...
- Java自定义ClassLoader实现插件类隔离加载
为什么需要类隔离加载 项目开发过程中,需要依赖不同版本的中间件依赖包,以适配不同的中间件服务端 如果这些中间件依赖包版本之间不能向下兼容,高版本依赖无法连接低版本的服务端,相反低版本依赖也无法连接高版 ...
- 12 HTTP的实体数据
目录 数据类型和编码 HTTP协议为什么要关心 body MIME(Multipurpose Internet Mail Extensions)多用途互联网邮件扩展类型 HTTP 常用数据类型 MIM ...
- 腾讯云服务器安装MySQL5.7基于xshell
腾讯云服务器安装MySQL5.7基于xshell 下载MySQL57安装包 wget https://dev.mysql.com/get/mysql57-community-release-el7-1 ...