YouTube -dl事件刚过去,GitHub又登上Hacker News榜首。原因是程序代码全遭外流!
从开发者Resynth的博客文了解,一个向GitHub官方DMCA数据库提交的可疑Commit,不明身份人员利用GitHub应用程序的bug假冒GitHub CEO Nat Friedman上传机密程序代码。
泄露文件已全部移除。
GitHub想必大家都非常熟悉,是大型程序代码存储库,主要为企业和开发人员提供托管项目和服务程序代码。苹果、亚马逊、Google、Facebook及其他许多大型科技公司都是主要用户。同时GitHub被托管超过1亿个程序库,为4千万开发人员提供资源支持。
因此泄露事件一出便迅速冲上Hacker News热搜,不少开发者表示为GitHub平台的安全性担忧。
Friedman第一时间解释,表示GitHub没有被黑客入侵,泄露的是部分GitHub Enterprise Server程序代码。两者虽然共享大量程序代码,但GitHub主要是由Ruby编写,还是有很大差别。
事件起因是几个月前,开发人员无意间将企业服务器程序代码的未脱敏/混淆的tarball交给一些用户。他们正全力修复Bug,防止未经授权的不明人士通过虚拟身份随意盗用、修改他人项目。
Friedman为了安抚用户,甚至还引用勃朗宁的诗:一切都很好,情况也很正常,云雀展翅飞翔,蜗牛在荆棘上爬动,世上一切顺常!
不过开发者并不买帐。从吐槽来看,Github程序代码管理系统早有多只Bug,如提交程序代码时,Git不会验证用户身份,造成极大安全风险,但GitHub从未重视。
另外有人表示正是利用这点,不明人士才顺利冒充Friedman发出机密程序代码。
程序代码管理者Git有Bug
Git是Github托管程序代码的分布式版本管理系统,简单来说,就是程序代码管理者。但设计有明显的缺陷,即没有为防止其他用户盗用提供太多保护。举例说,Git上传程序代码的过程,类似发送电子邮件,用户可在user.name和user.email字段输入任何信息,如果两字段不采用GPG加密键连接,系统就不会验证它的指定来源,造假非常容易。
不明人士顺利提交成功,显然是Friedman没为相关字段创建GPG(General Planning Group)加密键。
那绕过这层限制后,不明人士又如何提交至程序库,同时又不损害其他账号?据了解,提交内容上传到Git程序库会得到散列值,可用于寻找树。GitHub是Web应用程序的一部分,提供浏览器底层Git架构的访问权,因此可将Git程序库所有分支存到一个单独底层程序库,尽管通常不会在URL架构显示。
为了假冒别人,不明人士首先需要复制一个DMCA程序库。延伸到程序库后,再提交泄露程序代码,并伪造Friedman姓名和信箱。过程Fork程序库可能会出现错误,换句话说,URL可能依然指向假冒者真正的用户名和账号。
但在底层Git,父级和Fork都是同个程序库的一部分,允许假冒者创建一个URL,可在内存程序库提交,而不是在Fork。
因此,假冒者从https://github.com/github/dmca开始,将tree/$hash加到尾端,其中$hash是攻击者自己的fork提交散列值,故假冒者得以假冒Friedman使用一个URL在GitHub提交自己的机密程序代码。
除了程序代码安全性担忧,也再度引起开发者对GitHub开源态度的关注。长久以来,GitHub一直因未公开程序代码饱受批评,恰好前几日,GitHub再因封杀下载视频神器YouTube-dl陷入舆论风波。
此次泄露事件很可能是不知名开发者对封杀YouTube-dl的报复。
或许与下架YouTube-dl有关
10月美国唱片业协会(RIAA)提出要求,故GitHub禁止7.5万颗星的热门开源项目YouTube-dl。
当时RIAA的理由是,YouTube-dl违反DMCA反规避条款:
此程序代码的明确目的是:1. 规避YouTube等授权流媒体服务使用的技术保护措施;2. 未经授权复制和传播会员公司拥有的音乐视频和音频。3. 除YouTube外,支持更多影音网站下载视频。
但GitHub下架YouTube-dl激怒了开发者,复制并上传大量程序代码副本到GitHub,对下架行为表示抗议。目前去GitHub搜索YouTube-dl,相关结果高达4,108项。
后来GitHub法律团队不得不警告,如果继续发布程序代码副本,可能会封号处理。
请注意,未遵循流程的情况下发布YouTube-dl程序代码副本违反GitHub平台DMCA政策和服务条款。如果您在明知违反服务条款的情况下,继续向程序库提交或发布相关内容,我们会移除,并可能中止账号的访问权。
虽然造成泄露事件的不知名人士并未表态,但有人猜测称可能是对GitHub下架YouTube-dl的报复。
Friedman回应泄露事件的帖子下也可看到,不少网友对GitHub因DMCA协议下架YouTube-dl表示不满。
有位用户表示,GitHub之所以这么做,很可能因微软是RIAA成员。他说,DMCA要求下架不是让程序代码版权所有者本身下架,GitHub身为倡导开源的独立公司,不需遵守RIAA的非法要求。
可看出网友不满正是因下架与GitHub最初开源里念背道而驰。
GitHub开源精神惹争议
2018年,微软以75亿美元收购GitHub。新CEO Nat Friedman曾表示:GitHub将始终坚持开发者优先并独立运营。
Resynth博客文章也表示:微软一再强调致力开源,这点我们从很多商业广告经常看到,目的是让微软处于开源发展的最前线。
但现在来看,微软似乎没有做到承诺。且YouTube-dl只是最近发生的事,GitHub已因保密程序代码的问题饱受批评。
Resynth也提醒,这次事件不得不让人担心GitHub程序代码的安全性。因封闭应用程序执行的是“隐蔽式安全”(Security By Obscurity),即程序代码隐藏,目的是降低安全风险。如果GitHub真的公开程序代码,很可能会损害整体安全性。