Press "Enter" to skip to content

感谢 GitHub 的 $617 欢乐赞助(误)

虽然这不是“赞助”,但我们确实收到了来自 GitHub 的 $615 ,过程挺欢乐的。

故事的开头要从酷玩实验室于 2024-06-06 发的「终于,我们都受够了互联网“失忆症”」说起。

一位名为 @justcannotforgot (这 username 不错) 的 GitHub 用户看完这篇微信公众号文章后,甚是感动,想起实验室里还有十几块硬盘在吃灰,于是跑过来发了个 issue,想送我们9️⃣硬盘。

可惜,我们那三天在磨洋功,他的 issue 一直被放置。于是在无响应的三天后,他更新了 issue,@ 了我们的成员。

他一下子 @ 了 4 个账号,但问题是,有一个账号是我们的内部 bot 账号,按理说不应该被外界知晓,他是怎么找到这个账号的?

他这一 @ ,弄得我们大惊失色。

然后我们发现用无关账号直接在我们的公开仓库 @ ,Mention suggester 竟然会将我们的 Private Owner 直接列出来。

我们临时给所有成员都加上了 Private Owner 权限,Mention suggester API 真就把全部 Private Owner 列出来了,再把临时权限去掉,果然,对应账号又从 API 中消失了。(GitHub Web UI 上限制了显示行数,但 F12 能看到 API 有返回更多账号)

API 响应

正常情况下,Mention suggester 应该只会列出组织的 Public Owner 和调用处仓库的活跃维护者/贡献者。但是不知道为啥,它把本该隐藏的 Private Owner 全列出来了。

我们立即拿家里蹲大学和 Epic Game 开刀,不得不说不愧是家里蹲大学,API 返回了 642 个家里蹲仔。但可惜,图中聊天记录一开始的推断错了,Mention suggester 返回 642 个账号是由于每个家里蹲入学家里蹲大学的时候都开了个家里蹲申请 issue 而产生的家里蹲噪声。(一个加入家里蹲大学就可以得知的家里蹲大学秘密:家里蹲大学里面藏着大概 10 个 Private 家里蹲皇帝)

然后我们拿群友的组织(非生物组织,全过程没有任何成员受到伤害)做实验,又当场新建了个组织,均没有泄漏 Private Owner……

难道我们 saveweb 是体质比其他 org 特殊患感冒了?


很快啊,我们找到了问题的关键:是由于咱 saveweb 遥遥领先,别的组织入 org 即送全 org 范围的 read 权限(默认),而咱们则是设置成了入 org 啥权限都不派送(No permission),相反,我们用 GitHub 的 Team 功能“细粒度”分配不同 repos 的权限给不同的成员。

Member privileges->Base permissions 设置为 No permission 之后。所有 private 的 owner 就也会被 suggestion API 列出。
大 bug 啊。

我们随后创了 GItHub 新号,用它创了个新 org,org 设置成 No permission 后,一样成功复现。

所以是不是该…?
是该 report
哈哈哈 GitHub 也是个草台班子看来
这世界本来就是个大型的草台班子…

然后我们就去 HackerOne 给 GitHub 发 report 了。

  • June 10, 2024, 7:39pm UTC 发 report
  • June 17, 2024, 6:51pm UTC GitHub 确认 Bug
  • June 19, 2024, 10:1pm UTC GitHub 回复说由于是低风险,所以会修得比较慢,然后给了 $617 赏金。
  • 一段时间后,这个 bug 被修了。

最后,$617 电汇损失 $2 手续费,我们实际收到了 $615 赏金。


谢谢送硬盘的老兄。😚😚
送硬盘的老兄草
这老兄送的可比硬盘多多了
尝试送硬盘的
而这一切的一切还得感谢那位送硬盘的大哥at了一些不该at的东西

还拿到了个 Octoplush 吉祥物。(Shipped from USA, Made In China, 绷不住)


什么?你想问这个 bug 有啥用?你想不想知道某些的🍅组织的 private owner 🙂

什么?你问开头那位 @justcannotforgot 老哥的硬盘?他前几个月给我们说他师兄可能要卖二手处理掉那些9️⃣硬盘,然后到现在也没有音讯……

One Comment

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注