当开源生态日益繁荣,并逐步成为数字创新发展的关键模式时,各行各业也在积极拥抱开源。
今年三月,腾讯发布了一份《2021 年腾讯研发大数据报告》,该报告指出:截至当时,腾讯共在 GitHub 上贡献了超过 140 个项目,贡献者人数超过 3000 名,获得的全球 Star 数超过 40 万……
![GitHub 官宣微信成为“秘密扫描”合作伙伴](http://www.cjjjs.com/uploadfile/2022/1223/20221223114523762.jpg)
不仅如此,本周二 GitHub 官方博客更是宣布:“腾讯微信现在是 GitHub 秘密扫描合作伙伴。”
“秘密扫描”,GitHub 发起的一个计划
先别误会,这个“秘密扫描”并不是什么敏感行为,也不是说腾讯微信会秘密扫描 GitHub 的代码库——秘密扫描(Secret scanning),它只是 GitHub 发起的一个计划名称,旨在防止开发者的私有令牌对外泄露。
秘密扫描合作伙伴计划:作为服务提供者,你可以与 GitHub 合作,通过秘密扫描保护你的秘密令牌格式,该扫描会搜索秘密格式的意外提交,并将其发送至服务提供者的验证端点。
简单来说,GitHub 想要通过这个计划,与仓库所有者展开合作,对仓库进行秘密扫描以保护秘密令牌格式的安全,此举有助于防止数据泄露和欺诈,保护用户免受令牌泄露而造成的伤害——今年 4 月,GitHub 安全团队还发现有黑客盗用 OAuth 令牌,泄露了数十个组织的数据。
与腾讯微信合作后,GitHub 将扫描公共仓库的每一次提交,以寻找暴露在外的腾讯微信 API 令牌(腾讯微信令牌允许用户验证微信公众号和小程序开发者,获取业务应用程序的敏感信息,还可用于验证商家身份)。
(注:GitHub 方面指出,默认情况下秘密扫描只会发生在公共仓库,不过仓库管理员或组织所有者也可以在私有仓库上启用。)
发现后,GitHub 会把公共仓库中找到的访问令牌转发给腾讯微信,由后者通知受影响的用户。腾讯微信则将建议户删除 GitHub 上泄露的 API 令牌,并在微信支付商家平台或微信官方账号平台上创建一个新令牌。
下图即 GitHub 在公共仓库中进行“秘密扫描”,并将所有匹配项发送到服务提供者验证端点的整个流程:
务必第一时间更换密钥
根据腾讯微信官方给出的修复指引方案,首先要明确微信支付的密钥包括以下三种:
APIv2 密钥 (opens new window),用于 APIv2 所有接口。
商户 API 证书 (opens new window)对应的私钥,用于 APIv2 的高安全级别接口和 APIv3 所有接口。
APIv3 密钥,用于 APIv3 的微信支付平台证书下载接口以及回调通知。
一旦以上密钥在 GitHub 泄漏,微信方面表示,务必第一时间更换密钥,仅删除已经泄漏的密钥并不保险,还附上了一段来自 GitHub 的警告:
将提交推送到 GitHub 后,应将提交中的所有敏感数据视为泄露。如果你提交了密码,请更改密码!如果您提交了密钥,请生成新密钥。删除泄露的数据并不能解决其初始暴露问题,尤其是在仓库的现有克隆或复刻中。
除此之外,微信还建议开发者检查其商户系统,排查可疑的日志和微信支付的交易记录,确认泄漏的密钥是否已经造成影响。
据了解,包括腾讯微信在内,目前加入 GitHub 秘密扫描计划的服务提供商已有 56 家,其中还有 Meta、Figma、京东云和 Shopify 等。与此同时 GitHub 也在持续呼吁更多服务提供者积极参与这项计划,并提供了加入方式:
联系 GitHub 以启动流程。
识别要扫描的相关密码,并创建正则表达式来捕获它们。
针对在公共仓库中发现的匹配项,创建一个密码警报服务,以便从 GitHub 接受包含 secret scan 消息有效负载的 Webhook。
在密码警报服务中实施签名验证。
在密码警报服务中实施密码撤销和用户通知。
提供误报的反馈(可选)。
然而,对于这则消息,网友的反应却截然不同,由赞成亦有反对。
赞成
“这个计划可以保障我们的安全,防止数据泄露,我认为挺好的。”
“近些年来黑客入侵的事例繁多,能减少一些都是好的。”
反对
”GitHub 转发这些’泄露‘的秘密,难道不是在以另一种方式获得访问权限?“
”所以说,只要 GitHub 认为是访问令牌的所有字符串,就都会转发给腾讯吗?“
除此之外,还有部分网友对这项计划的名称感到些许迷惑,认为有歧义:”尽管我是付费的 GitHub 客户,我仍不知道他们有一个名为’秘密扫描‘的项目,甚至它还是有益的——但这个名字,我显然会误认为他们在让微信秘密扫描我的私人存储库。“