程序員大本營GitHub遭黑客劫持,是時候認真聊聊開源代碼安全了

圖片來源@視覺中國

文 | 腦極體前端

著名的「交友網站」GitHub是程序員的「大本營」,不少人都將源代碼託管在上面,並不斷利用社區開源資源開發新的算法、軟件、應用。git

這樣一個極客雲集的平臺,竟然被黑客給一窩端了,委實有點玄幻。程序員

5月2日開始,GitHub遭到了黑客的攻擊勒索,有370多名用戶的源代碼和信息被名爲「gitb ackup」的帳號刪除。web

黑客下載了那些代碼,並存儲到了本身的服務器上。要求他們往特定帳戶上支付0.1比特幣。並進行了惡狠狠發威脅——「若是咱們在將來10天內未收到您的付款,會將您的代碼公開或以其餘方式使用。」算法

花開兩朵各表一枝,這邊GitHub程序員忙着找代碼, 隔壁微軟的開源開發平臺也不幸被黑客選中了。黑客擦除了其392個代碼儲存庫,要求微軟支付必定的款項纔會歸還竊取的數百個源代碼。數據庫

對此,許多受害者認爲,開源平臺遭受攻擊是其上開發的應用程序有漏洞,被黑客利用了。npm

那麼,有什麼解決辦法麼?GitLab建議是,使用強密碼下降被破解的風險,開啓雙重身份驗證,使用SSH密鑰等……編程

什麼??全球頂尖程序員匯聚的平臺,安全措施也這麼原始嗎?富土康流水線工人、村頭王大爺的交友帳號也都是這麼提示的好嗎?瀏覽器

不得不說,GitHub程序員被劫持事件給業界上了生動一課,提醒人們,開源軟件和組件的先天不足,可能給普通網民和企業安全帶來巨大的風險,尤爲是建造着數字網絡的「工程師」也可能「打盹兒」的時候。安全

從GitHub提及:開源社區集體缺了一節「安全行駛課」

1998年,「開源」這一律念被首次提出,到2019年已經度過了20個春秋。憑藉着開放、共享、自由等特性,開源平臺在軟件開發中扮演着愈來愈重要的角色。Gartner的一項調查顯示,有99%的組織在其IT系統中使用了開源軟件。

不少咱們熟悉的平常軟件功能,好比支付帳單、娛樂社交、工做效率等等,有60-80%的代碼庫都來自開源社區。

前不久Snyk 公司發佈的2019年開源安全現狀調查報告也說明,開源項目的採用率正在以驚人的速度增加。僅是2018年,Java 工具包翻了一番,而 npm 增長了大約 250000 個新的工具包。

(每種語言其生態系統的新漏洞增加狀況)

數字時代的進度條,由於開源而飛快加載。但步子邁得太大,也容易摔着。說到影響網絡安全的最大掣肘,恐怕也要追溯到開源社區。

Snyk報告中提到,有37% 的開源開發者在持續集成(CI)期間沒有實施任何類型的安全測試,54% 的開發者沒有對 Docker 鏡像進行任何安全測試。這也致使兩年時間內,各大平臺的應用程序漏洞數量增加了 88%。 GitHub上排名前40萬的公共代碼庫中,僅2.4%有安全文檔。而npm 和 Maven 中央倉庫的安全隱患尤爲嚴重,由於兩者也是工具包數量增加最多的平臺。

搞了半天開發者們都是在不繫「安全帶」的前提下超速飆車啊??話又說回來,漏洞的存在會帶來多大的影響呢?

本來不須要這麼緊張的,但在開源的狀況下,事情就變得很不同了。

由於當一個開源組件存在漏洞(一般稱爲CVE)時,這個漏洞會迅速公佈。本來,開源可讓更多人及時發現漏洞,並對其執行必要的修復。不幸的是,一些圖謀不軌的人也一樣能夠看到這些信息。

他們幾乎不須要付出太多努力,就能瞭解哪些組件更容易受到攻擊以及如何作。而後,找到哪些平臺和公司可能會反應遲鈍,在被修復以前黑掉他們的系統。

2018年4月,黑客就暴力破解了流行開源Magento電子商務平臺的口令,利用拿到的訪問權大肆搜刮信用卡記錄並安裝加密貨幣挖礦惡意軟件。另外諸如著名的OpenSSL水牢漏洞事件、心臟滴血事件、Equifax數據泄露事件、Gmail、yahoo和Hotmail帳號泄露等等,都是被黑客搶佔了先機。

數據代表,現在開源平臺漏洞出現到修復的時間,中位數幾乎長達2年之久。這意味着,全部使用了那些漏洞代碼或組件的軟件用戶,只是在黑客們的陰影還沒來得及動手的「慈悲」下盲目而快樂地衝浪在網絡。

那麼問題來了,到底是什麼致使了程序員們如此「心大」,甚至不停地給黑客們「送人頭」呢?

自欺欺人的「衆人之眼」,與軟件開發的三重門

顯然,開源代碼所謂的「衆人之眼」,並不能有效地杜絕安全漏洞,至少不能保證在黑客降臨以前消滅隱患。

現在,開源代碼爆出安全漏洞的事件還在不停發生,而不少項目並無查找和修復問題的機制。這麼一想,GitHub的程序員用戶算是幸運多了,至少他們還能掏贖金把本身的代碼買回來。而那些被盜走了信息的普通用戶,也許只能成爲黑客們的「肉雞」了。

但問題是,若是咱們吃了一家餐廳的食物而中毒了,那麼能夠起訴這家餐廳。但一樣的邏輯在數字世界卻不成立了。若是用戶由於一個軟件而中毒/被盜竊我的信息,他幾乎沒有辦法找平臺負責(參考Facebook隱私門)。並且軟件開發商還會在用戶許可協議中進行「免責」,要求用戶贊成不由於安全漏洞而起訴它。

爲此,劍橋大學安全研究員Richard Clayton博士曾提出,要讓軟件開發商爲可避免的安全漏洞帶來的損失負起責任。歐盟官員也一度考慮,試圖將開發人員的草率編碼行爲致使的惡意漏洞引入法律。但最終都不了了之。

微軟是這麼反駁的:軟件公司也是(黑客/罪犯)入室搶劫的受害者,大衆不能起訴門和窗戶的製造商。

聽起來是否是快要被說服了呢?打臉的是,在一個針對500多名開源項目維護者的調查中,清晰地展現了,只有30%不到三分之一的開源工程師具備較高的安全意識。這意味着,程序員和軟件開發商並無如大衆指望的那樣,將門和窗戶建造的更牢固一點。

致使這一現象的,是一種蔓延在整個軟件開發產業鏈上的「迷之自信」:

首先,開源社區顧此失彼的安全審查。通常狀況下,爲了讓開源項目免於災難,社區會依據Linux的Linus Torvalds,用他們的「千眼」不斷地審查代碼。運維人員必須十分當心,篩選代碼,檢查潛在的漏洞,並將其報告給安全數據庫。

可是,因爲開源資源分佈散而普遍,不少漏洞軟件會在GitHub,nowhere.net等網站上肆意流通,所以所以持續監控、趕在黑客前面發現漏洞也就成了一項艱鉅的任務。

其次,日益消弭的開發門檻和隨性的開發者。以往,可以開發開源組件的開發者自己素質相對較高,代碼質量較高,也使開源組件出漏洞的可能性較小。但隨着許多界面友好的平臺出現,像是GitHub,即便是新手編程也能夠利用Git;任何人均可以避免費註冊和託管公共代碼存儲庫,還有人利用GitHub來進行其餘類型的項目,好比寫書。

缺少安全基礎的開發者增多,許多潛在的組件安全特性被忽略,而這些特性每每是形成漏洞的罪魁禍首。

並且,即便是成熟的開發人員,也須要不斷在應用更新過程當中解決新漏洞。但不多有程序員會審查舊工程中用到的庫,通常就是到開源項目頁面下載下來,集成到本身的應用中,而後就不再管它了。這些軟件天然也就像鳳梨罐頭同樣,很快就過時。

在此基礎上,企業利用開源軟件或組件來進行開發,就像在一個風雨飄搖的積木塔上蓋樓同樣,全靠運氣。

絕大多數企業的開發團隊,對開源軟件的使用都很是隨意,這就給應用的安全風險管控帶來了極大的挑戰,運維人員也沒法知曉軟件系統中是否包含了開源軟件,包含了哪些開源軟件,以及這些軟件中是否存在安全漏洞。

而大多數雲供應商在將企業數據上傳到集羣以前都不會加密數據,好比OpenStack就不提供任何數據加密方法。這就須要企業和用戶本身先加密數據,再上傳加密後的數據和管理密鑰自己。

還有一些公司因爲兼容性問題、合規問題等緣由,沒法遷移到最新版本的開源代碼,只能繼續使用包含漏洞的舊代碼。據Snyk稱,只有16%的漏洞補丁是向後兼容其餘版本的。這也給黑客們創造了很多機會。

總而言之,在這樣從源代碼創造、分享、開發等一系列產業鏈上的「不着調」,形成了「漣漪效應」,最終締造了使人頭痛的安全事故。

那麼,除了改密碼、打補丁以外,產業端有沒有一些更「治本」的辦法來杜絕此類隱患呢?

開源代碼的安全戰役,有沒有另外一種打開方式?

不管從哪一個角度看,開源代碼的安全戰都是一場十分必要、不容退卻的全民戰爭。固然了,普通用戶只能打call,衝鋒陷陣的還得是軟件公司和程序員們。

對此,產業界也開始拿出了一些試圖從根源上解決問題的辦法。簡單說幾個:

  1. 漏洞獎勵

2012年,谷歌推出了Chrome獎勵計劃和漏洞獎勵計劃,鼓勵程序員找出其瀏覽器及在線服務中的具體弱點,使得普遍使用的開源軟件儘量不那麼容易遭受攻擊,併爲此支付500到3133美圓不等的報酬。2013年,美國國家安全局也撥出了2510萬美圓,用於「額外祕密購買軟件弱點」。

現在,漏洞賞金計劃已成爲許多互聯網公司的重要安全策略之一,微軟推出了迄今爲止最高的Windows Bug獎勵計劃,達到250000美金。蘋果、美國國防部、Facebook、騰訊、阿里ASRC、百度等爲其漏洞支付的總金額也很是的驚人。

重賞之下,安全漏洞的時間差也有望有效減小。

  1. 新技術工具

不管是防止源代碼中的信息泄露,仍是要尋找惡意文件、阻止惡意進程、保證端點安全,都有愈來愈多的技術工具可供使用,許多雲安全公司和運營商等也都開始參與安全工具的開發。

好比最近的開源領導者峯會上,Linux基金會就宣佈了Red Team(紅隊)項目。新項目將孵化開源網絡安全工具,以幫助提升開源軟件的安全性。

做爲開源安全工具的孵化器,Red Team支持網絡範圍自動化,容器化滲透測試工具,二進制風險量化和標準驗證程序等。而且可以在雲上模擬黑客攻擊,用戶能夠部署黑客腳本,並對現實中的團隊進行安全培訓。

諸如Commit Watcher等種種開源工具的出現,幫助程序員查找潛在危險失誤,也正在使軟件開發過程變得大不相同。

  1. 加密算法

若是咱們將數據信息看作是網絡世界最寶貴的財富,那麼加密機制就是一個能夠保護數據的保險箱。除了將箱體打造的更加水火不侵,「鎖芯」這道防線也須要不斷迭代。

尤爲是如今愈來愈多的機構與企業選擇雲計算技術做爲複雜業務的解決方案,開源雲平臺的安全問題也更加速咋,所以,數據加密算法的解決方案就顯得尤其重要了。

像是能夠對企業數據進行安全分級,對等級高的數據先採用對稱算法進行加密,並將對稱算法產生的祕鑰進行非對稱加密存儲,從而兼顧數據和安全性,以及系統運行效率。

在硬件端,谷歌也剛剛推出了針對低端手機的新加密標準Adiantum,在沒有足夠計算能力芯片的前提下,也能實現高速計算來進行哈希算法加密及解密,從而提高終端設備的安全性能。

從長遠來看,開源社區更加靈活和開放的構建方式,會令它繼續成爲開發江湖的「根據地」。但當開放與自由成爲雙刃劍,又成爲一個流着「奶與蜜」的數據豐饒之地,就很容易被不法之徒虎視眈眈。至少從GitHub這件事上看,開源代碼的安全問題,應該已經來到了一個危險的臨界點,也給一直以來「違規飆車」的業界敲響了警鐘。

「我本身是一名從事前端工做的老程序員,辭職目前在作講師,今年年初我花了一個月整理了一份最適合2019年學習的web前端乾貨,從最基礎的HTML+CSS+JS到移動端HTML5到各類框架都有整理,送給每一位前端小夥伴,這裏是小白彙集地,歡迎初學和進階中的小夥伴。"

加vx:QD_666_QD(領取)

用開源軟件的倡導者Eric S. Raymond的話來講——高質量的代碼,就是對程序本身最好的註釋。

相關文章
相關標籤/搜索