点击上方“AI遇见机器学习”,选择“星标”公众号

重磅干货,第一时间送达

萧箫 发自 凹非寺
量子位 报道 | 公众号 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最初删掉的相关项目就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:我开源我自己;CEO:不存在的相关推荐

  1. 华为首款可折叠屏5G手机今日开售;GitHub将开源代码保存在北极;Win10禁用WEP加密|极客头条...

    整理 | 郭芮 快来收听极客头条音频版吧,智能播报由标贝科技提供技术支持. 「极客头条」-- 技术人员的新闻圈! CSDN 的读者朋友们早上好哇,「极客头条」来啦,快来看今天都有哪些值得我们技术人关注 ...

  2. 知名游戏设计师的 GitHub 仓库被删,CEO 道歉;工信部向四家公司发放 5G 牌照

    (给技术最前线加星标,每天看技术热点) 转自:开源中国.solidot.cnBeta.腾讯科技.快科技等 [技术资讯] 0.知名游戏设计师 Jason Rohrer 的 GitHub 仓库被删,CEO ...

  3. GitHub上开源的YOLOv5

    GitHub上开源的YOLOv5 代码地址:https://github.com/ultralytics/YOLOv5 该存储库代表Ultralytics对未来的对象检测方法的开源研究,并结合了我们在 ...

  4. GitHub 重磅开源!这个 AI 项目至少价值百万!!!

    点击上方"AI遇见机器学习",选择"星标"公众号 重磅干货,第一时间送达 来源 | GitHubDaily 作者 | 小G 大家好,我是小 G. 今天给大家推荐 ...

  5. 重磅!GitHub发布开源负载均衡组件GLB

    https://baijiahao.baidu.com/s?id=1608946032781953161&wfr=spider&for=pc 导读:GitHub GLB directo ...

  6. B 站硬件大佬在 GitHub 上开源了一款神器

    转自量子位 野生钢铁侠稚晖君在 GitHub 上开源了一个硬核项目. 上次自制纯手工打造 AI 小电视,播放量就超过 300 万,还登上了 b 站首页. 可能有些朋友对他还有点陌生. 他毕业于电子科大 ...

  7. github 参与开源_开源桥吸引了独特的演讲者和参与者

    github 参与开源 下个月, 开放源代码桥将于2016年6月21日至24日在俄勒冈州波特兰举行其第八届年会.开放源代码桥会议的主题是围绕建立开放源代码社区和公民身份的主题. 什么是开源公民身份? ...

  8. 国外大学生谈经验:如何在Github参与开源(Open Source on Github: Your First Contribution)

    作者:spencerpmoran 转载自http://spencermoran.me/2013/08/13/open-source-on-github-your-first-contribution/ ...

  9. 超级计算机阿波罗11,阿波罗11号制导计算机中指令模块和登月模块原始代码已在 GitHub 上开源...

    维基百科上"阿波罗11号"词条下对阿波罗 11 号的介绍如下: 阿波罗11号(英语:Apollo 11)是美国国家航空航天局的阿波罗计划中的第五次载人任务,是人类第一次登月任务,歷 ...

  10. 用github写开源书籍

    用github写开源书籍 gitbook http://blog.csdn.net/hk2291976/article/details/51173850 用github写书籍 创建一个新的仓库 创建新 ...

最新文章

  1. 牛人总结python中string模块各属性以及函数的用法,果断转了,好东西
  2. mysql的存储过程原理_mysql存储过程原理与用法详解
  3. 对话院士成果转化基地-丰收节交易会·李喜贵:谋定精准对接
  4. visual c++创建位图资源文件
  5. jbpm 和 drools_Drools和jBPM KIE A​​pps平台
  6. axure实现搜索功能_vue实现模糊搜索功能
  7. PHP解决方案@时间差异计算函数
  8. Leetcode每日一题:690.employee-importance(员工的重要性)
  9. FFmpeg发送流媒体的命令(UDP,RTP,RTMP)
  10. 供电绘图计算软件-新增了图库管理功能
  11. 《构建之法》阅读笔记
  12. 安卓学习之路-RecyclerView的简单用法
  13. 【React】1332- 2022 年值得推荐的 React 库
  14. IDEA使用教程(三) 功能面板
  15. 九月腾讯,创新工场,淘宝等公司最新面试三十题
  16. Element-UI安装与使用
  17. 关于MNN中图像预处理
  18. 【C++】-命名空间的概念及使用
  19. 手把手教你实战开发黑白棋实时对战游戏
  20. Spring定时任务注解说明

热门文章

  1. Rabbitmq 相关介绍之双机镜像模式集群配置
  2. 好雨云帮近期问答集锦(1.16~2.5)
  3. CAS 单点登出失效的问题(源码跟踪)
  4. typedef的作用
  5. vsftp锁定用户在家目录
  6. 如何修改datagrid行的高度_如何开出一份完美的信用证?
  7. 如何从阿里云Code升级至Codeup
  8. 简单粗暴tensorflow2.0
  9. js RegExp用法
  10. 学习:正则表达式的基本语法