查看原文
其他

GitHub:我开源了我自己 ?

QbitAI 逛逛GitHub 2021-08-19

萧箫 发自 凹非寺
量子位 报道 | 公众号 QbitAI

大家好,我是阿逛。

前几天有一个新闻:GitHub忽然“开源”了自己代码的一部分,还将它放在了GitHub上。

事件起因是这样的:

TypeScript的开发者Resynth忽然Po了篇文章,表示代码托管服务GitHub的全部源代码被泄露。

他表示,在向官方GitHub DMCA提交的可疑文件中,一个身份不明的人利用GitHub应用程序中的一个漏洞,冒充GitHub的CEO纳特·弗里德曼(Nat Friedman)上传了机密源代码。

事情一出,在HN上激起了网友的热烈讨论,也再次引发了关于GitHub安全问题的思考。

网友lrvick表示,包括他在内的许多安全人员,早就对GitHub上很多相关漏洞进行了公开演示。但除非“搞出个病毒”,微软根本就不承认这些漏洞的存在。

而且,他早就说过,GitHub提交签名的部分存在严重的设计缺陷,然而如今这件事发生,他们才引起重视。

所以,这位陌生用户是怎么做到的?

如何伪造成CEO本人泄露代码?

GitHub的源代码管理器Git,并不能有效地防止用户假冒。

Git的提交方式更接近于电子邮件,这也就意味着,用户可以随意起用户名和填写邮箱,所以做点小手脚也没关系。

——除非提交的信息上有GitHub CEO弗里德曼的GPG签名,否则Git在提交信息时,根本不会确认这是不是CEO本人的提交。(这次有问题的代码提交,就没有CEO本人的签名信息)

GPG(GNU Privacy Guard)是一个密钥软件,用于加密、签名通信的内容,也可作为管理非对称密码学的密钥。

除非GPG签名与邮箱地址相关联,它并不会对提交对象的真伪进行确认。

也就是说,当你提出一个提交请求到Git本地仓库时,你就会得到一个代表提交请求的哈希值,可以通过它直接跳转到你的分支。

GitHub类似于一个Web应用程序,负责提供浏览器到Git底层架构的请求交互,它会将所有的分支保存到一个底层仓库里,哪怕它不以通常的形式出现在在URL架构中。

于是,一位陌生的用户提交的文件“光明正大地”进入了GitHub的DMCA存储库,还伪造成了CEO弗里德曼的样子。

为了做到这一点,这位陌生用户先是复制了一份DMCA存储库、搞个分支出来,便于提交要泄露的GitHub源代码

然后,陌生用户伪造了弗里德曼的用户名和邮箱,将它提交了。于是,在DMCA存储库里,名为弗里德曼的用户,自己提交了一份GitHub源代码。

CEO回应后,网友却炸了

对此,GitHub CEO弗里德曼做出了回应,表示GitHub前段时间不小心混淆了一部分源代码给客户,但这不会影响GitHub的安全。

他甚至还吟了首勃朗宁的诗:一切都很好,情况也很正常,云雀展翅飞翔,蜗牛在荆棘上爬动,世上一切顺当!

但显然,网友们并不在意这段源码是不是CEO本人泄露的,相反,这件事情再一次激起了他们针对“GitHub开源”这件事本身的怒火。

网友exabrial:您(指CEO)认为这是正常情况?你们是不是想通过伪造/无效的DMCA,删掉其他的什么项目?

CEO弗里德曼:这边建议您阅读DMCA工作原理呢。

网友dannyw:如果GitHub真的提倡开源,它就不会是现在这样。据我所知,微软是RIAA的成员哦

网友dannyw之所以提到RIAA(美国唱片业协会),是因为GitHub前段时间应RIAA的要求,直接删除了GitHub上开源的油管视频下载器Youtube-dl

这个事件 逛逛GitHub 也发过文章:这个 72k Star 的 GitHub 项目被封了

一石激起千层浪,原本GitHub最初删掉的相关项目就18个,现在一搜,竟然冒出了4000多个。

有开发者称,这次的“伪造事件”估计与Youtube-dl项目被删有关,也可能是伪造者对微软并不开放GitHub源代码的控诉。

关于GitHub开源,还得从微软收购GitHub后的一系列举动说起。

微软和它的“开源”

自2018年微软收购GitHub后,一直声称自己“致力于开源”。

Resynth表示:“我们已经从大量商业广告里看到了(微软对开源的热爱),微软打的这些广告,的确让它处在开源开发的最前沿。”

但与微软提倡的“开源”理念相对,它直接封禁了好几次社区开源的代码。

闹到最近,就是这次伪造事件导火索的“Youtube-dl被封禁事件”。

有开发者表示,想要让GitHub开放自己的源码,如今在微软这看来,是绝对不可能的。

Resynth也表示,由于有闭源软件的存在、以及Git的扩张,让GitHub看起来更像是一个试图“包含开源项目”的平台,而非开源本身

例如,今年6月,GitHub曾经出现过宕机两小时的情况,这期间,成千上万个开源项目无法被访问和使用。

对于这次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

逛逛GitHub交流群已成立


公众号运营至今,离不开小伙伴们的支持。为了给小伙伴们提供一个互相交流的平台,特地开通了逛逛GitHub官方交流群。需要进群的朋友,可长按扫描下方二维码加我微信 focusoncode,备注 进群, 交流群二维码在我的朋友圈

1. 基于 SSM 的分布式敏捷开发系统架构
2. 这个 72k Star 的 GitHub 项目被封了
3. 你会在 GitHub上面找项目吗?
4. 漫画:为什么C语言永不过时?


在看 

    您可能也对以下帖子感兴趣

    文章有问题?点此查看未经处理的缓存