今年年初,我们发布了 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. (数据科学学习手札135)tenacity:Python中最强大的错误重试库

    本文示例代码及文件已上传至我的Github仓库https://github.com/CNFeffery/DataScienceStudyNotes 1 简介 我们在编写程序尤其是与网络请求相关的程序, ...

  2. 在线Remix链接本地文件夹

    问题 1.本地Remix环境版本滞后于在线编译器,新版本的语法在旧版本编译器中出现错误. 2.没有配置Vscode编译器,不便导入项目. 解决方案 *本解决方案基于Mac系统 创建共享文件夹 在本地创 ...

  3. 学习Spring资料

    参考文档 官方文档 源码分析 书籍 Spring5核心原理与30个类手写实战 Spring技术内幕 视频 bilibili

  4. JVM 内存 (堆(heap)、栈(stack)和方法区(method) )

    JVM 内存初学 (堆(heap).栈(stack)和方法区(method) ) 堆区: 1.存储的全部是对象,每个对象都包含一个与之对应的class的信息.(class的目的是得到操作指令)2.jv ...

  5. ZAB 和 Paxos 算法的联系与区别?

    相同点: 1.两者都存在一个类似于 Leader 进程的角色,由其负责协调多个 Follower 进程的运行 2.Leader 进程都会等待超过半数的 Follower 做出正确的反馈后,才会将一个提 ...

  6. 面试问题之C++语言:面向对象的三大特性

    转载于:https://www.cnblogs.com/BEN-LK/p/10720249.html 面向对象的三大特性:封装.继承.多态 封装:就是把客观事物封装成抽象的类,并且类可以把自己的数据和 ...

  7. Java 面试问题列表包含的主题?

    多线程,并发及线程基础 数据类型转换的基本原则 垃圾回收(GC) Java 集合框架 数组 字符串 GOF 设计模式 SOLID 抽象类与接口 Java 基础,如 equals 和 hashcode ...

  8. centos 7环境下安装jdk

    在此之前已经安装了xshell并能传输文件. 1.下载对应版本的jdk:jdk-8u191-linux-x64.tar.gz 2.上传到centos的目录下 3.解压jdk的gz包,命令: tar - ...

  9. Python - 文档格式转换(CSV与JSON)

  10. leedcode_13 罗马数字转整数

    罗马数字包含以下七种字符: I, V, X, L,C,D 和 M. 字符 数值I 1V 5X 10L 50C 100D 500M 1000例如, 罗马数字 2 写做 II ,即为两个并列的 1 .12 ...