對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日，在土耳其黑客組織RedHack聲稱入侵土耳其能源部長、埃爾多安女婿阿爾巴伊拉克之後，土耳其資訊與通信技術署命令網際網路服務供應商封鎖幾個檔案分享網站，包括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最後在爭議下覺得有所理虧而改變作法，被封禁的使用者可以下載回自己的作品，但依然不能在社區裏查看代碼。

### 6.1

2025年，澳大利亞計劃將GitHub列為「危害未成年人的社交媒體平台」並要求GitHub落實網路實名制。