对GitHub的审查和封锁

GitHub logo
对GitHub的审查和封锁的行动经常在多个国家发生，例如中华人民共和国、俄罗斯、印度、土耳其等。审查和封锁包括但不限于DNS污染、中间人攻击等方式。由于用户量巨大，以及诸多用户对开发资源的需求强烈，故相关封锁常引发用户和科技公司的强烈反应。

**背景**
GitHub是一个基于Git的源代码托管网站，主要用于存储源代码并用于项目管理。截止到2015年，GitHub已有超过1000万用户和2.4亿个Git仓库。此外，GitHub还提供了免费的pastebin服务（Gist）和免费的网络空间GitHub Pages。GitHub许可协议禁止滥用GitHub的各项服务，保留了删除内容的权力。此外，如果GitHub收到DMCA删除通知，GitHub也会删除项目。

**

**防火长城封锁**

**DNS污染**
2013年1月20日，中华人民共和国政府的防火长城利用DNS污染和关键词过滤等手段封锁GitHub，令中国大陆的用户无法正常访问。对此，李开复在新浪微博抗议，迅速引起广大网民的关注，这条信息更在三小时内被转发逾3万2千次。2013年1月23日，GitHub被解封，事件得以平息（但新疆地区的GitHub始终没有解封，依然会受到DNS污染的影响）。修改DNS服务器为阿里巴巴的223.5.5.5可以缓解。
自2014年11月起，GitHub Gist在中国大陆被封锁，封锁方式为DNS污染，至今未解除封锁。
2019年10月29日晚间，为GitHub提供托管源代码原始档案的域名（raw.githubusercontent.com）遭到DNS污染，后于同年11月起被短暂解封（但在同年12月份起被更换方式重新予以间歇性封锁，并一直持续至今，详见下文叙述）。
此外，一些托管在GitHub Pages上的部分网站（*.github.io）也遭到了DNS污染，比如端点星。

**中间人攻击**
2013年1月26日，有中国大陆的用户在访问GitHub时发现证书无效，经检查发现，GitHub的证书变为了一自签署的X.509证书，生成时间为2013年1月25日，有效期一年，故有人推测GitHub疑似遭到了中间人攻击。攻击持续了约一个小时后停止，访问恢复正常。
2020年3月26日，中国大陆多地用户访问GitHub Pages时发现遭遇中间人攻击，证书变为一张通过私人QQ邮箱自签名的证书，生成时间为2019年9月26日。部分地区遭受攻击数小时后停止，但也有部分地区持续遭受攻击1-2天且证书变为了另一张使用MyMail自签名的证书。部分用户称同一时间京东也遭到了相同攻击，GitHub主站和部分子域名也遭到了攻击，百度、必应更是在3月24日就遭到了该证书攻击，有第三方研究者指出影响的域名多达15462个，且劫持早在3月21日就已开始。此次影响范围之广，不太像是黑客初学者练手。

**DDoS攻击**
GitHub从2015年3月26日凌晨2时左右（世界协调时间，以下简称为UTC）起遭到了持续的DDoS攻击。GitHub在其部落格称，这次攻击是GitHub历史上最严重的一次DDoS攻击。
GitHub坚信攻击者的目的在于迫使GitHub删除特定类型的内容。第三方研究者指出，此次攻击采用了HTTP劫持，百度的JS脚本文件被中间人植入了攻击GitHub的代码，其功能是每隔2秒加载一次GreatFire或其运营的纽约时报中文网镜像站点的帐号主页。。百度已否认自身产品存在安全问题。这次攻击导致GitHub在全球范围内的访问速度下降。
2015年3月28日（UTC+8）起，GitHub在中国大陆十分不稳定，多数情况下无法访问。截止29日，攻击者共使用了四种DDoS攻击技术：
#第一轮，利用中国大陆以外的网民与翻墙的网民浏览被劫持的百度JavaScript档案，该档案每2秒向GitHub上的两个页面发出请求，被GitHub的弹窗警告拦住；
#第二轮，跨网域攻击，被GitHub检查Referer拦住；
#第三轮，DDoS攻击GitHub Pages；
#第四轮，SYN flood，利用TCP协定缺陷发送大批伪造的TCP连线请求，耗尽GitHub的资源。
使用Traceroute追踪TTL来证明中国政府对GitHub发动攻击
根据系统状态讯息页面的显示，已于3月31日停止了网路攻击，该日凌晨0:09分（UTC）已经稳定。GitHub在其Twitter与微博予以了证实。至此，此网路攻击共持续了五天。这次用于网络攻击的工具被称为“大炮”。
2015年3月30日（UTC+8），中国外交部发言人在例行记者会上被媒体问及此事时，不承认也不否认网络攻击与中国政府有关，称“中国是网络-{黑}-客攻击的最主要的受害者之一。”、“近期似乎只要是美国或者其他哪个国家有网站受到攻击，就会有人联想是不是中方-{黑}-客所为，这很奇怪。”
2015年4月1日，美国总统奥巴马签署了一项政令，授权的内容为：凡参与由美国境外授意或实施，且对“美国的国家安全、外交政策、经济状况，或者金融稳定造成重大威胁”的骇客，将采取旅行与金融方面的制裁；5月8日，美国国务院发言人Jeff Rathke称，美国联邦政府已要求中国当局调查相关的网路攻击并告知调查结果。
2015年8月22日，翻墙软体Shadowsocks作者迫于警方压力删除项目。25日，翻墙软体GoAgent作者自行删除自己的代码。同一天GitHub再次遭到来自中国大陆的DDoS攻击。开发者普遍认为此次攻击与中国政府有关。

**IP地址封锁与间歇性阻断**
自2019年12月起，GitHub所有静态资源（*.githubusercontent.com）所使用的IP地址151.101.0.133、151.101.228.133的443端口（HTTPS）遭到连接重置，导致出现图片及头像无法正常加载，以及无法下载原始资源文件等问题，直到后来GitHub官方更换IP地址后才予以解决（但之前使用的IP地址至今未被解封，2021年起又增加了对151.101.108.133的封锁）。

自2020年中旬起，由于WordPress博客所属的IP地址192.0.66.2在中国大陆地区遭到与上文所述相同的IP地址封锁，故导致GitHub的官方博客受到牵连，无法在中国大陆正常访问。

自2021年2月末起（中国两会期间），“防火长城”升级对GitHub的屏蔽措施，开始检测 *.github.com，以及raw.githubusercontent.com域名的SNI，并对上述域名所对应的IP地址的443端口（HTTPS协议）间歇性执行TCP重置攻击，或者直接封锁指定端口（强制丢包），从而出现连接重置、连接超时等错误，每次封锁至少持续3分钟后才能正常进入网站。这导致了GitHub在中国大陆的访问被严重干扰，非常不稳定，时断时续，相关干扰一直持续至今未完全解除。2022年后，间歇性阻断似乎有所减轻。date=2023年11月15日

**政府删除请求**
自从2016年开始，GitHub为了防止在实施互联网审查的国家被完全封锁，启用了黑名单机制，他们会审核来自于那一些国家的政府请求，并使得政府请求的页面无法被来自于该国的IP地址访问，并显示“Repository unavailable because of the Chinese Internet Blacklist（由于中国互联网黑名单，存储库不可用）”。根据GitHub官方所说，这是“以便我们在该辖区的用户可以继续访问GitHub进行协作和构建软件。”他们专门创建了一个页面来记录所有可供公开的政府请求。
2016年6月8日，中国网络空间安全协会 致信 date=20200326003407 GitHub，称项目“Zhao”下的 一个issue date=20200306123011 诽谤中共中央总书记习近平涉嫌杀害自己的同父异母的兄长习正宁，要求尽快删除该issue。三天后GitHub公开了这封公开信。这是GitHub收到的第六个政府删除请求，也是第一个来自中国政府的请求。该项目是博客主编程随想制作的“赵家人”名单。目前，在中国大陆访问该项目，网站会返回HTTP 451错误。

**浏览器端屏蔽**
2019年4月3日起，中国部分公司的一些网页浏览器（如QQ浏览器、搜狗浏览器、UC浏览器和2345浏览器等）将GitHub上的 996.icu date=20200918094957 项目仓库标记为“危险网站”、“违法网站”、“欺诈网站”等，阻止用户访问相关GitHub网页。同年11月30日起，上述浏览器屏蔽了搭建在GitHub上的Evil Huawei项目。

**
俄罗斯政府通过俄联邦电信、信息技术和大众传媒监督局维护一份网络封锁的黑名单，封锁网站包括儿童色情、毒品、宣扬自杀、宣扬恐怖主义和其他非法网站等。

**运营商封锁**
页面提示网站已被封禁，并列出了4个违反俄罗斯联邦法律的原因。
2014年12月2日，俄联邦电信、信息技术和大众传媒监督局因为网站内包含了几种涉及自杀教学的内容而封禁了GitHub。因为GitHub全站使用HTTPS连接，无法针对部分页面进行封锁，因此互联网服务供应商被强制要求封锁整个网站。 实行封锁的运营商包括：Beeline、MTS、MGTS和Megafon。监督局负责人Maxim Ksenzov表示，GitHub被封禁是因为之前的2014年10月10日GitHub未遵守俄罗斯的删除请求。在2014年10月2日GitHub曾被短暂封锁，直到原始的自杀教程被删除。

**被封禁的内容**
2014年3月23日，有人在GitHub上面发布了介绍自杀的手册，内含用俄语描述的31种自杀方法，该项目被数个用户复刻。在GitHub被封锁之后，很多GitHub用户举报了该项目。该项目于2014年10月2日被建立者删除。efn|然而，因为该项目被复刻，并且Git会记录变更历史，因此内容仍然可以在GitHub内被找到。

**回应**
按照俄罗斯政府的相关要求，GitHub屏蔽了相关仓库在俄罗斯内的访问，以解除对GitHub的封锁。GitHub为监督局专门建立了一个名为“roskomnadzor”的仓库，并记录来自监督局的删除通知。在仓库的README文件中，GitHub指出，他们对互联网审查表示关注，公开透明是为了防止一些审查反倒会使事情欲盖弥彰。GitHub还指出，发布通知仅仅是为了记录，不会针对仓库内容的观点进行判断。

**政府删除请求**
截至2016年6月，GitHub共收到6份政府删除请求，其中5份来自俄罗斯政府。

**
印度根据联邦和州法律来审查网站。互联网服务供应商需要按照Information Technology Act, 2000的要求来进行审查。但有评论指出，这些法律规定比较模糊，供应商容易过分审查。

**运营商封锁**
在2014年12月17日，Department of Telecommunications命令运营商封禁32个网站。命令于2014年12月31日被公开，其中包括GitHub、Gist、Vimeo、互联网档案馆和多个pastebin服务。
封锁令被印度执政党印度人民党的Arvind Gupta所证实，他还指出封锁令与印度的反恐小组针对伊斯兰国的建议有关。Gupta还指出，配合政府调查的网站会被解除封锁。
2015年1月2日，印度通信部门宣布将解封四个网站，其中有GitHub Gist，并指出一旦剩下的网站遵守印度法律，也会被解除封锁。解释封禁原因时，部长提到“在这些网站中，大多数网站在发布内容之前都不需要任何审核……这些网站经常被用于传递和交流吉哈德内容……”
2015年1月4日，一个GitHub发言人指出，一些用户在访问GitHub时仍然会遇到困难，GitHub已经和印度政府进行接触，但仍然无法确定封禁的具体原因。发言人还指出，使印度的开发者能够重新访问GitHub是他们的高优先级工作，他们“愿意与印度政府合作，建立一套识别和处理非法内容的过滤系统，以恢复网站的正常访问，并确保将来不会再受到影响。”

**影响**
据印度时报报道，运营商Vodafone、BSNL、Hathway封锁了GitHub而通过Airtel仍能访问。因为封锁令只告诉运营商封锁哪些网站但未指出如何封锁，因此封锁程度是不同的。封锁是不可靠的，并且似乎发生在多个层面上。即使是同一运营商，封锁方法也有多种，包括IP封锁、使用代理服务器、DNS污染。根据封锁程度不同，突破封锁的方法也不同，例如更换DNS服务器或使用代理软件。

**批评**
Free Software Foundation Tamil Nadu绘制的海报，用“#GOIBlocks”的标签来抗议封锁。
针对封锁，TechCrunch评论到“在名单中加入GitHub……是最脑残的决定之一”，并预言GitHub在信息技术领域的重要性会使封禁行为引发抗议。Twitter用户通过“#GOIblocks”标签进行抗议，并引用纳伦德拉·莫迪在2012年发表的信息来谴责网络封锁。印度匿名者多次向政府发出威胁，但并未采取实际行动。

****
由Turkey Blocks提供的证明GitHub已被封锁的截图
2016年10月8日，在土耳其黑客组织RedHack声称入侵土耳其能源部长、埃尔多安女婿阿尔巴伊拉克之后，Information and Communication Technologies Authority命令互联网服务供应商封锁几个档案分享网站，包括Dropbox、Microsoft OneDrive、Google Drive。观测网路审查情况的Turkey Blocks注意到GitHub于次日上午被封锁，并且相关的封锁令被信息与通信技术署逐步发布出来。封锁导致依赖GitHub的软体（例如Font Awesome、Homebrew等）无法正常运行。Startup Istanbul活动的参与者也表达了对基础设施可用性的不满。在土耳其，#GitHub标签成为了Twitter的热门标签之一。按照The Daily Dot的说法，RedHack组织蓄意通过多种服务来传播邮件内容，期待土耳其政府将其封锁，以造成史翠珊效应。18小时后GitHub被解封。

****
2019年5月起，美国的出口管理条例开始对开源代码进行管制。
此时开始对伊朗、叙利亚和克里米亚的私人repo和付费账户实施限制，2020年4月起一个名为Aurelia的软体代码被GitHub封锁引起较大纷争，其理由为参与的两个志愿者为伊朗人，引起该程式诸多志愿者不满并于硅谷的「 黑客新闻 」论坛大举批判，后续GitHub改变作法重新启动Aurelia页面但封锁两个伊朗人帐号，之前并发生过一名为Hamed Saeed的开发者已经移民芬兰多年但祖籍为伊朗而被封锁的事件。此事件引发一个后续讨论，美国订定的制裁他国法案仅限于不让特定外国人使用美国技术，然而GitHub上的技术是各国志愿者撰写并无偿分享，并非美国购买有版权的所有物，其中也包含伊朗程式员也就是其实有伊朗的技术，美国无权拿不属于自己的东西制裁别人甚至「拿伊朗的技术制裁伊朗」。GitHub最后在争议下觉得有所理亏而改变作法，被封禁的用户可以下载回自己的作品，但依然不能在社区里查看代码。