GitHub 同日两项供应链安全更新:提交推送溯源 + Dependabot 匿名私有注册表

导语:GitHub 在同一天发布两项供应链安全更新。

摘要

GitHub 在同一天发布两项供应链安全更新。其一是提交推送溯源(Push attribution):GitHub 开始持久记录每次提交的实际推送者身份,并在界面与 API 中与 author、committer 并列展示;由于后两者只是客户端可任意填写的字符串,该功能用于堵住"冒用可信维护者身份伪造提交"的路径。其二是 Dependabot 的组织级私有注册表新增 Anonymous 认证方式,让组织在不填凭据的前提下让 Dependabot 访问内部镜像做依赖扫描。前者为限量公开预览,后者已在 github.com 正式可用。

正文(译文)

一、提交的推送溯源(限量公开预览)

GitHub 现在会持久记录推送每个提交的已认证用户,并把这一推送者身份与既有的 author 和 committer 字段一起,展示在界面与 API 中。

提交的 author 与 committer 字段只是推送客户端提供的字符串,任何对该仓库有写权限的人都可以把它们设成任意的姓名和邮箱。这使得攻破一个低权限账号的攻击者,能够伪造出看似来自可信维护者的提交,从而绕过评审策略、扰乱审计线索。

GitHub 本来就会对推送做身份认证。本次发布是在 author 与 committer 元数据之外,新增了持久的、按提交记录的推送者身份。

本次发布带来的变化:

推送溯源目前以限量公开预览的形式面向 GitHub Enterprise 客户提供。如有意加入预览,请联系你的客户团队申请访问权限。

二、面向 Dependabot 的匿名组织级注册表

现在可以为组织级私有注册表选择 Anonymous(匿名)作为认证方式。

它适用于 Dependabot 无需凭据即可访问的注册表,例如允许匿名读取的内部软件包镜像。

在 github.com 上,Dependabot 的更新任务只能访问出网白名单上的主机,以及你所配置的私有注册表。仅定义在 .npmrc 或 nuget.config 这类文件中的私有注册表会被阻断。

组织级注册表适用于你授予访问权限的每一个仓库,包括那些只使用 Dependabot 安全更新、没有 dependabot.yml 文件的仓库。

要添加一个注册表,请进入组织的 Settings,选择 Secrets and variables,再选择 Private registries,然后选择 New private registry。

如果你此前用占位 token 作为变通方案,请删除该注册表,并以 Anonymous 认证方式重新添加。这一步是必需的,因为已有注册表的认证方式无法修改。

Anonymous 选项目前已在 github.com 正式可用,并将在 GitHub Enterprise Server 3.24 中提供。

(文章为作者独立观点,不代表艾瑞网立场)