今年年初,我们发布了 Flutter 2022 产品路线图,其中「基础设施建设」这部分提到:2022 年 Flutter 团队将增加对供应链的安全的投入,目的是达到符合基础设施 SLSA 4 级别中描述的要求。

供应链安全

大多数开源项目依赖了数百个开源依赖项[1],随着更多开源项目被更广泛地使用,这些依赖项给其使用者们带来了安全隐患:如果我们使用的开源项目的依赖项受到攻击和破坏该怎么办?这将让你的直接用户 (软件的最终使用者) 蒙受供应链攻击带来的风险。

供应链攻击是一种新兴的、针对软件开发者和供应商的安全威胁[2],攻击者会通过寻找不安全的网络协议、不受保护的服务器以及不安全的代码等安全漏洞并更改代码,导致使用它的程序在构建和更新的过程中被加入隐藏的恶意代码。

为了确保依赖项供应链的安全性,开发者们需要确保所有依赖项和工具定期更新到最新稳定版本,因为这些新的版本通常会包含最新功能和已知漏洞的安全修补程序。依赖项包括依赖的代码、使用的二进制文件、使用的工具以及其他组件等[3]。在 GitHub 上托管的开源代码可以使用 GitHub 提供的代码扫描功能来查找项目中的安全漏洞和错误,并使用 Dependabot 维护项目的依赖项,以确保项目自动更新到依赖项的最新版本。

启用 package 版本检测

对 Dart package 的支持可以回溯至 19 年 4 月初,当时的 Flutter 刚刚发布到 v1.2 稳定版;同年 5 月,Dependabot 被 GitHub 收购并免费为开发者提供服务。有一位社区成员在 dependabot-core#2166 这个议题 (issue) 中发起提问,希望 Dependabot 加入对 Flutter / Dart 的支持。通过 Dependabot 与 Dart 团队的共同努力,包括后期为 Flutter 命令行工具加入了一些对 package 版本检测等功能,最后在今年 3 月 22 日开启封闭测试,并于 4 月 5 日进行公开的 beta 测试。

目前,Dependabot 版本更新对 pub package 生态的支持已进入测试阶段,开发者们可以使用 Dependabot 为他们的 Flutter 或 Dart 项目加入 package 的更新检测。目前仅支持已发布到 pub.dev 网站上的 package。

如果想在自己的 Dart 或 Flutter 仓库测试 Dependabot 版本更新检测,需要创建 .github/dependabot.yml 文件并添加如下内容:

version: 2
enable-beta-ecosystems: true
updates:
- package-ecosystem: "pub"
directory: "/"
schedule:
interval: "weekly"

请确保这两个参数设定: package-ecosystem: "pub" 以及 enable-beta-ecosystems: true

已知限制

目前的 pub package 版本检测支持仍处于测试阶段,并包含了一些已知的限制,例如 Dependabot 安全更新 目前尚不支持,将在未来发布的版本中加入对其的支持。

其他已知的限制:

  • 不支持更新以 git 方式引用的依赖
  • 如果在 dependabot 中配置忽略新版本检测,将不会进行任何更新
  • 不支持检测私享和自定义 pub 发布的 package

开发者们可以在 GitHub 官方的反馈讨论 里提出建议或 vote +1,也可以在 dependabot-core 仓库提交议题来帮助团队排查问题。

致谢

Dependabot 开始支持 pub package 版本检测的更多相关文章

  1. pub package all in one

    pub package all in one best practice The pubspec file https://dart.dev/tools/pub/pubspec demo name: ...

  2. GitHub 供应链安全已支持 Dart 开发者生态

    通过 Dart 和 GitHub 团队的共同努力,自 10 月 7 日起,GitHub 的 Advisory Database (安全咨询数据库).Dependency Graph (依赖项关系图) ...

  3. Flutter Cocoon 已达到 SLSA 2 级标准的要求

    文/ Jesse Seales, Dart 和 Flutter 安全工作组工程师 今年年初,我们发布了 Flutter 2022 产品路线图,其中「基础设施建设」这部分提到:2022 年 Flutte ...

  4. java使用poi操作word, 支持动态的行(一个占位符插入多条)和表格中动态行, 支持图片

    依赖 <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi</artifa ...

  5. Dart语法学习

    Dart语法学习 目录 参考资料 语言特性 关键字 变量与常量 数据类型 运算符 operators 控制流程语句 异常 Exceptions 函数 Function 类 Class 类-方法 类-抽 ...

  6. 【攻略】如何在云开发中使用 Redis?

    默认情况下,云开发的函数部署在公共网络中,只可以访问公网.如果开发者需要访问腾讯云的 Redis.TencentDB.CVM.Kafka 等资源,需要建立私有网络来确保数据安全及连接安全. 本文会演示 ...

  7. Dart 学习

    语言特性 Dart所有的东西都是对象, 即使是数字numbers.函数function.null也都是对象,所有的对象都继承自Object类. Dart动态类型语言, 尽量给变量定义一个类型,会更安全 ...

  8. Flutter 2.8 更新详解

    北半球的冬意已至,黄叶与气温均随风而落.年终的最后一个 Flutter 稳定版本 已悄然来到你的面前.让我们向 Flutter 2.8 打声招呼- 本次更新包含了 207 位贡献者和 178 位审核者 ...

  9. Dart 2.15 现已发布

    作者 / Michael Thomsen, Dart & Flutter Product Manager, Google 我们已经正式发布了 Dart SDK 的 2.15 版本,该版本新增了 ...

随机推荐

  1. 无传感FOC控制中的转子位置和速度确定方法一

    使用PLL估算器在无感的情况下,估计转子的角度和角速度 PLL估算器的工作原理基于反电动势的d分量在稳态下等于零,其框图如下: ΚΦ 表示电压常量,下面给出了电气转速计算中使用的归 一化 ΚΦ  : ...

  2. 到底为什么不建议使用SELECT *?

    "不要使用SELECT *"几乎已经成为了MySQL使用的一条金科玉律,就连<阿里Java开发手册>也明确表示不得使用*作为查询的字段列表,更是让这条规则拥有了权威的加 ...

  3. 这些OAuth2客户端的认证方式你未必了解

    OAuth2客户端按照它们与授权服务器进行安全认证的能力可以分为机密类型(Confidential)和公共类型(Public). 机密类型的自身会有个密码凭据,比如Web服务器后端程序:而公共类型则没 ...

  4. 同一套代码部署多个实例来并行完成mysql某项任务,且避免重复执行

    我经常会碰到一些耗时较长的任务,譬如更新5千万条表数据中的某个字段,代码中可以通过分页依次读取db,然后更新即可.但是耗时极长,那么能否通过将代码部署多个实例,譬如启动多个docker来并行执行任务, ...

  5. 二、mycat15种分片规则

    一.分片枚举 通过在配置文件中配置可能的枚举 id,自己配置分片,本规则适用于特定的场景,比如有些业务需要按照省份或区县来做保存,而全国省份区县固定的,这类业务使用本条规则,配置如下: <tab ...

  6. 如何监控 Elasticsearch 集群状态?

    Marvel 让你可以很简单的通过 Kibana 监控 Elasticsearch.你可以实时查看你 的集群健康状态和性能,也可以分析过去的集群.索引和节点指标.

  7. 5_系统的可控性_Controllability

  8. Python函数-导入模块的顺序及原理

    引入 当python导入模块,执行import语句时,到底进行了什么操作?按照python的文档,她执行了如下的操作: 第一步,创建一个新的module对象(它可能包含多个module) 第二步,把这 ...

  9. Web最佳实践阅读总结(1)

    介绍 最近开始刷一些书和题,此系列是介绍在读Web最佳实践的一些收获和体会. web前端发展现状 存在问题: 代码组织混乱 代码格式的问题突出 页面布局随意 网站整体性能差,没有意识到应用诸如缓存,动 ...

  10. 使用 Vuex + Vue.js 构建单页应用

    鉴于该篇文章阅读量大,回复的同学也挺多的,特地抽空写了一篇 vue2.0 下的 vuex 使用方法,传送门:使用 Vuex + Vue.js 构建单页应用[新篇] ------------------ ...