“ 阅读本文大概需要 4 分钟。 ”
![](https://imgconvert.csdnimg.cn/aHR0cHM6Ly9tbWJpei5xcGljLmNuL21tYml6X3BuZy91RFJrTVdMaWEyOGpSRXdEaWJNOXBQdFg2TEhTMndwenhSYzQzaWFYTnpreHp4ekRpY3g3eFJmR01zUGhCdFVvQzZoOGhVN1g2ejAwS1lISms3ZXF2bXliRGcvNjQw?x-oss-process=image/format,png)
来自量子位
GitHub 忽然 “开源” 了自己代码的一部分,还将它放在了 GitHub 上。
事件起因是这样的:
TypeScript 的开发者 Resynth 忽然 Po 了篇文章,表示代码托管服务 GitHub 的全部源代码被泄露。
![](https://imgconvert.csdnimg.cn/aHR0cHM6Ly9tbWJpei5xcGljLmNuL21tYml6X3BuZy9ZaWNVaGs1YUFHdEFlYTBYZXc4bGc1aGpZV1lzSU02Qjg1Q0llTVVpYUZCVFZPTFFERzdtWXY5M2h6N090THZLeWJIMXBvbGpmMEZWS2QxVUpnR2IxQnFBLzY0MA?x-oss-process=image/format,png)
他表示,在向官方 GitHub DMCA 提交的可疑文件中,一个身份不明的人利用 GitHub 应用程序中的一个漏洞,冒充 GitHub 的 CEO 纳特・弗里德曼(Nat Friedman)上传了机密源代码。
事情一出,在 HN 上激起了网友的热烈讨论,也再次引发了关于 GitHub 安全问题的思考。
网友 lrvick 表示,包括他在内的许多安全人员,早就对 GitHub 上很多相关漏洞进行了公开演示。但除非 “搞出个病毒”,微软根本就不承认这些漏洞的存在。
而且,他早就说过,GitHub 提交签名的部分存在严重的设计缺陷,然而如今这件事发生,他们才引起重视。
![](https://imgconvert.csdnimg.cn/aHR0cHM6Ly9tbWJpei5xcGljLmNuL21tYml6X3BuZy9ZaWNVaGs1YUFHdEFlYTBYZXc4bGc1aGpZV1lzSU02QjhwdmJ4VHBhOW9zQmJWcXo5T2xXS1dPRjRNcWZNZWh3bGZRR2JUOU5xakNFY2x6U0s1WG10Y2cvNjQw?x-oss-process=image/format,png)
所以,这位陌生用户是怎么做到的?
如何伪造成 CEO 本人泄露代码?
GitHub 的源代码管理器 Git,并不能有效地防止用户假冒。
Git 的提交方式更接近于电子邮件,这也就意味着,用户可以随意起用户名和填写邮箱,所以做点小手脚也没关系。
—— 除非提交的信息上有 GitHub CEO 弗里德曼的 GPG 签名,否则 Git 在提交信息时,根本不会确认这是不是 CEO 本人的提交。(这次有问题的代码提交,就没有 CEO 本人的签名信息)
GPG(GNU Privacy Guard)是一个密钥软件,用于加密、签名通信的内容,也可作为管理非对称密码学的密钥。
除非 GPG 签名与邮箱地址相关联,它并不会对提交对象的真伪进行确认。
也就是说,当你提出一个提交请求到 Git 本地仓库时,你就会得到一个代表提交请求的哈希值,可以通过它直接跳转到你的分支。
![](https://imgconvert.csdnimg.cn/aHR0cHM6Ly9tbWJpei5xcGljLmNuL21tYml6X3BuZy9ZaWNVaGs1YUFHdEFlYTBYZXc4bGc1aGpZV1lzSU02QjhpY3B3M1Q4UVg1VWRrNkRzeWZLOWNVSEpQdTlEUVByamwwNWRaWWJxQzgxNU5udDI5YWs1bDl3LzY0MA?x-oss-process=image/format,png)
GitHub 类似于一个 Web 应用程序,负责提供浏览器到 Git 底层架构的请求交互,它会将所有的分支保存到一个底层仓库里,哪怕它不以通常的形式出现在在 URL 架构中。
于是,一位陌生的用户提交的文件 “光明正大地” 进入了 GitHub 的 DCMA 存储库,还伪造成了 CEO 弗里德曼的样子。
![](https://imgconvert.csdnimg.cn/aHR0cHM6Ly9tbWJpei5xcGljLmNuL21tYml6X3BuZy9ZaWNVaGs1YUFHdEFlYTBYZXc4bGc1aGpZV1lzSU02QjhpYVFDY1dMaWJFSGliMnk2NjdISHJjOGZKVEpLWWpuODRObFVpYWNYUTlid09rZ0pXQnhpY1lEOGZhQS82NDA?x-oss-process=image/format,png)
为了做到这一点,这位陌生用户先是复制了一份 DCMA 存储库、搞个分支出来,便于提交要泄露的 GitHub 源代码;
然后,陌生用户伪造了弗里德曼的用户名和邮箱,将它提交了。于是,在 DCMA 存储库里,名为弗里德曼的用户,自己提交了一份 GitHub 源代码。
CEO 回应后,网友却炸了
对此,GitHub CEO 弗里德曼做出了回应,表示 GitHub 前段时间不小心混淆了一部分源代码给客户,但这不会影响 GitHub 的安全。
他甚至还吟了首勃朗宁的诗:一切都很好,情况也很正常,云雀展翅飞翔,蜗牛在荆棘上爬动,世上一切顺当!
![](https://imgconvert.csdnimg.cn/aHR0cHM6Ly9tbWJpei5xcGljLmNuL21tYml6X3BuZy9ZaWNVaGs1YUFHdEFlYTBYZXc4bGc1aGpZV1lzSU02QjhJZk9TMzlET205NldpYUdxRHV2UVRJRXczSjJJSXNDc1RtWk5Cb2szMUJiaWFNdGNsVDdpYm1uYlEvNjQw?x-oss-process=image/format,png)
但显然,网友们并不在意这段源码是不是 CEO 本人泄露的,相反,这件事情再一次激起了他们针对 “GitHub 开源” 这件事本身的怒火。
网友 exabrial:您(指 CEO)认为这是正常情况?你们是不是想通过伪造 / 无效的 DCMA,删掉其他的什么项目?
CEO 弗里德曼:这边建议您阅读 DCMA 工作原理呢。
网友 dannyw:如果 GitHub 真的提倡开源,它就不会是现在这样。据我所知,微软是 RIAA 的成员哦。
网友 dannyw 之所以提到 RIAA(美国唱片业协会),是因为 GitHub 前段时间应 RIAA 的要求,直接删除了 GitHub 上开源的油管视频下载器 Youtube-dl。
![](https://imgconvert.csdnimg.cn/aHR0cHM6Ly9tbWJpei5xcGljLmNuL21tYml6X3BuZy9ZaWNVaGs1YUFHdEFlYTBYZXc4bGc1aGpZV1lzSU02QjhaYTZWb3lsOENJSUhjWEZpYnNRS0Y2c0M4c2ZFWDI1a1BPOWNLcnhQelhIRnZ5Wnl2SDNWU2dnLzY0MA?x-oss-process=image/format,png)
一石激起千层浪,原本 GitHub 最初删掉的相关项目就 18 个,现在一搜,竟然冒出了 4000 多个。
![](https://imgconvert.csdnimg.cn/aHR0cHM6Ly9tbWJpei5xcGljLmNuL21tYml6X3BuZy9ZaWNVaGs1YUFHdEFlYTBYZXc4bGc1aGpZV1lzSU02QjhWM2w2c2pSNlBCZWpaNUVNUWJ5RXlLaWFad1U0SmJzMFA5cER1Y3ZTNmRGaWEzWElONVpaeHVkQS82NDA?x-oss-process=image/format,png)
有开发者称,这次的 “伪造事件” 估计与 Youtube-dl 项目被删有关,也可能是伪造者对微软并不开放 GitHub 源代码的控诉。
关于 GitHub 开源,还得从微软收购 GitHub 后的一系列举动说起。
微软和它的 “开源”
自 2018 年微软收购 GitHub 后,一直声称自己 “致力于开源”。
Resynth 表示:“我们已经从大量商业广告里看到了(微软对开源的热爱),微软打的这些广告,的确让它处在开源开发的最前沿。”
但与微软提倡的 “开源” 理念相对,它直接封禁了好几次社区开源的代码。
闹到最近,就是这次伪造事件导火索的 “Youtube-dl 被封禁事件”。
![](https://imgconvert.csdnimg.cn/aHR0cHM6Ly9tbWJpei5xcGljLmNuL21tYml6X3BuZy9ZaWNVaGs1YUFHdEFlYTBYZXc4bGc1aGpZV1lzSU02Qjg2SjhWaWJXSnNpYUE0Y254RmhMSTNvSlpCMjJvUHhmSGo5Qk9pY3ZCSzBLZ3dQYXhsVk9yOHlGc1EvNjQw?x-oss-process=image/format,png)
有开发者表示,想要让 GitHub 开放自己的源码,如今在微软这看来,是绝对不可能的。
Resynth 也表示,由于有闭源软件的存在、以及 Git 的扩张,让 GitHub 看起来更像是一个试图 “包含开源项目” 的平台,而非开源本身。
例如,今年 6 月,GitHub 曾经出现过宕机两小时的情况,这期间,成千上万个开源项目无法被访问和使用。
![](https://imgconvert.csdnimg.cn/aHR0cHM6Ly9tbWJpei5xcGljLmNuL21tYml6X3BuZy9ZaWNVaGs1YUFHdEFlYTBYZXc4bGc1aGpZV1lzSU02QjhxTnVCajYwajl6NHpVNVA2SEp0czdUZDh1VGNxZ2xJMnNxVVRLSVZXTjJrNWVpYnljUjdXVEh3LzY0MA?x-oss-process=image/format,png)
对于这次 GitHub 泄露源码的事件,你怎么看?
已经走丢的 GitHub 源码网址:
https://web.archive.org/web/2/https://github.com/github/dmca/tree/565ece486c7c1652754d7b6d2b5ed9cb4097f9d5
参考链接:
https://arstechnica.com/information-technology/2020/11/githubs-source-code-was-leaked-on-github-last-night-sort-of/
https://www.zdnet.com/article/github-denies-getting-hacked/
https://resynth1943.net/articles/github-source-code-leak/
https://news.ycombinator.com/item?id=24994746
https://www.theverge.com/2020/6/29/21306674/github-down-errors-outage-june-2020
好文和朋友一起看~