对GitHub的审查和封锁

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

## 背景
GitHub是一个基于Git的源代码托管网站，主要用于存储源代码并用于项目管理。截止到2015年，GitHub已有超过1000万用户和2.4亿个Git仓库。此外，GitHub还提供了免费的服务（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的資源。

根據系統狀態訊息頁面的顯示，已於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年后，间歇性阻断似乎有所减轻。

### 政府删除请求
自从2016年开始，GitHub为了防止在实施互联网审查的国家被完全封锁，启用了黑名单机制，他们会审核来自于那一些国家的政府请求，并使得政府请求的页面无法被来自于该国的IP地址访问，并显示“Repository unavailable because of the Chinese Internet Blacklist（由于中国互联网黑名单，存储库不可用）”。根据GitHub官方所说，这是“以便我们在该辖区的用户可以继续访问GitHub进行协作和构建软件。”他们专门创建了一个页面来记录所有可供公开的政府请求。

2016年6月8日，中国网络空间安全协会致信 GitHub，称项目“Zhao”下的一个issue 诽谤中共中央总书记习近平涉嫌杀害自己的同父异母的兄长习正宁，要求尽快删除该issue。三天后GitHub公开了这封公开信。这是GitHub收到的第六个政府删除请求，也是第一个来自中国政府的请求。该项目是博客主编程随想制作的“赵家人”名单。目前，在中国大陆访问该项目，网站会返回HTTP 451错误。

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

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

### 运营商封锁

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日被建立者删除。

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

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

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

### 运营商封锁
在2014年12月17日，命令运营商封禁32个网站。命令于2014年12月31日被公开，其中包括GitHub、Gist、Vimeo、互联网档案馆和多个服务。

封锁令被印度执政党印度人民党的Arvind Gupta所证实，他还指出封锁令与印度的反恐小组针对伊斯兰国的建议有关。Gupta还指出，配合政府调查的网站会被解除封锁。

2015年1月2日，印度通信部门宣布将解封四个网站，其中有GitHub Gist，并指出一旦剩下的网站遵守印度法律，也会被解除封锁。解释封禁原因时，部长提到“在这些网站中，大多数网站在发布内容之前都不需要任何审核……这些网站经常被用于传递和交流吉哈德内容……”

2015年1月4日，一个GitHub发言人指出，一些用户在访问GitHub时仍然会遇到困难，GitHub已经和印度政府进行接触，但仍然无法确定封禁的具体原因。发言人还指出，使印度的开发者能够重新访问GitHub是他们的高优先级工作，他们“愿意与印度政府合作，建立一套识别和处理非法内容的过滤系统，以恢复网站的正常访问，并确保将来不会再受到影响。”

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

### 批评

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

## 

2016年10月8日，在土耳其黑客组织声称入侵土耳其能源部长、埃尔多安女婿阿尔巴伊拉克之后，命令互联网服务供应商封锁几个檔案分享网站，包括Dropbox、Microsoft OneDrive、Google Drive。觀測網路審查情況的Turkey Blocks注意到GitHub於次日上午被封鎖，並且相關的封鎖令被信息与通信技术署逐步發佈出來。封鎖導致依賴GitHub的軟體（例如Font Awesome、等）無法正常運行。Startup Istanbul活動的參與者也表達了對基礎設施可用性的不滿。在土耳其，#GitHub標籤成為了Twitter的熱門標籤之一。按照The Daily Dot的說法，RedHack組織蓄意通過多種服務來傳播郵件內容，期待土耳其政府將其封鎖，以造成史翠珊效應。18小時後GitHub被解封。

## 
2019年5月起，美国的出口管理条例开始对开源代码进行管制。

此時开始对伊朗、叙利亚和克里米亚的私人repo和付费账户实施限制，2020年4月起一個名為Aurelia的軟體代碼被GitHub封鎖引起較大紛爭，其理由為參與的兩個志願者為伊朗人，引起該程式諸多志願者不滿並於硅谷的「 黑客新闻 」论坛大舉批判，後續GitHub改變作法重新啟動Aurelia頁面但封鎖兩個伊朗人帳號，之前並發生過一名為Hamed Saeed的開發者已經移民芬蘭多年但祖籍為伊朗而被封鎖的事件。此事件引發一個後續討論，美國訂定的制裁他國法案僅限於不讓特定外國人使用美國技術，然而GitHub上的技術是各國志願者撰寫並無償分享，並非美國購買有版權的所有物，其中也包含伊朗程式員也就是其實有伊朗的技術，美國無權拿不屬於自己的東西制裁別人甚至「拿伊朗的技術制裁伊朗」。GitHub最后在爭議下覺得有所理虧而改變作法，被封禁的用户可以下載回自己的作品，但依然不能在社区裏查看代码。

#### 
2025年，澳大利亚计划将GitHub列为“危害未成年人的社交媒体平台”并要求GitHub落实网络实名制。

## 注释

## 参考文献