程式設計師大本營GitHub遭黑客劫持,是時候認真聊聊開原始碼安全了
著名的“交友網站”GitHub是程式設計師的“大本營”,很多人都將原始碼託管在上面,並不斷利用社群開源資源開發新的演算法、軟體、應用。
這樣一個極客雲集的平臺,居然被黑客給一窩端了,委實有點玄幻。
5月2日開始,GitHub遭到了黑客的攻擊勒索,有370多名使用者的原始碼和資訊被名為“gitb ackup”的賬號刪除。
黑客下載了那些程式碼,並儲存到了自己的伺服器上。要求他們往特定賬戶上支付0.1比特幣。並進行了惡狠狠發威脅——“如果我們在未來10天內未收到您的付款,會將您的程式碼公開或以其他方式使用。”
花開兩朵各表一枝,這邊GitHub程式設計師忙著找程式碼, 隔壁微軟的開源開發平臺也不幸被黑客選中了。黑客擦除了其392個程式碼儲存庫,要求微軟支付一定的款項才會歸還竊取的數百個原始碼。
對此,許多受害者認為,開源平臺遭受攻擊是其上開發的應用程式有漏洞,被黑客利用了。
那麼,有什麼解決辦法麼?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、百度等為其漏洞支付的總金額也非常的驚人。
重賞之下,安全漏洞的時間差也有望有效減少。
2.新技術工具。
無論是防止原始碼中的資訊洩露,還是要尋找惡意檔案、阻止惡意程式、保證端點安全,都有越來越多的技術工具可供使用,許多雲安全公司和運營商等也都開始參與安全工具的開發。
比如最近的開源領導者峰會上,Linux基金會就宣佈了Red Team(紅隊)專案。新專案將孵化開源網路安全工具,以幫助提高開源軟體的安全性。
作為開源安全工具的孵化器,Red Team支援網路範圍自動化,容器化滲透測試工具,二進位制風險量化和標準驗證程式等。並且能夠在雲上模擬黑客攻擊,使用者可以部署黑客指令碼,並對現實中的團隊進行安全培訓。
諸如Commit Watcher等種種開源工具的出現,幫助程式設計師查詢潛在危險失誤,也正在使軟體開發過程變得大不相同。
3.加密演算法。
如果我們將資料資訊看做是網路世界最寶貴的財富,那麼加密機制就是一個可以保護資料的保險箱。除了將箱體打造的更加水火不侵,“鎖芯”這道防線也需要不斷迭代。
尤其是現在越來越多的機構與企業選擇雲端計算技術作為複雜業務的解決方案,開源雲平臺的安全問題也更加速咋,因此,資料加密演算法的解決方案就顯得尤為重要了。
像是可以對企業資料進行安全分級,對等級高的資料先採用對稱演算法進行加密,並將對稱演算法產生的祕鑰進行非對稱加密儲存,從而兼顧資料和安全性,以及系統執行效率。
在硬體端,谷歌也剛剛推出了針對低端手機的新加密標準Adiantum,在沒有足夠計算能力晶片的前提下,也能實現高速計算來進行雜湊演算法加密及解密,從而提升終端裝置的安全效能。
從長遠來看,開源社群更加靈活和開放的構建方式,會令它繼續成為開發江湖的“根據地”。但當開放與自由成為雙刃劍,又成為一個流著“奶與蜜”的資料豐饒之地,就很容易被不法之徒虎視眈眈。至少從GitHub這件事上看,開原始碼的安全問題,應該已經來到了一個危險的臨界點,也給一直以來“違規飆車”的業界敲響了警鐘。
用開源軟體的倡導者Eric S. Raymond的話來說——高質量的程式碼,就是對程式自己最好的註釋。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31561483/viewspace-2643516/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 德勤:是時候認真對待資料了
- 做SaaS的程式設計師們,是時候關注企業架構了程式設計師架構
- 5 月書訊 | 程式設計師的歷史課,是時候補補了程式設計師
- 程式設計師鄙視鏈(不要太認真,開心就好)程式設計師
- 你眼中的程式設計師 vs 程式設計師眼中的自己,是時候打破刻板印象了丨KubeCon 主題活動程式設計師
- 大量GitHub使用者遭黑客勒索:不交比特幣就公開私有程式碼Github黑客比特幣
- GitHub遭黑客攻擊:竊取數百原始碼並勒索比特幣Github黑客原始碼比特幣
- 黑客和程式設計師有什麼區別?程式設計師目標是成神,黑客目標是弒神!黑客程式設計師
- 馬蹄疾 | 2019年,是時候認真學一波 Grid 佈局了
- 學了很久設計,什麼時候能成合格的設計師?
- 程式設計師們,覺得自己最興奮是什麼時候?程式設計師
- 6 歲!是時候重新認識下 Serverless 了Server
- 6歲!是時候重新認識下Serverless了Server
- 低程式碼開發平臺,真的是為了"幹掉"程式設計師嘛?程式設計師
- 聊聊程式設計師的信仰程式設計師
- 當程式設計師寫不出程式碼了……程式設計師
- 當程式設計師遇上極品客戶的時候程式設計師
- 現在的你,是開發工程師、程式設計師還是碼農?工程師程式設計師
- 我是6年的程式設計師了程式設計師
- 程式設計師的苦與樂:一開始程式設計師可能會犯的錯誤,真是太真實了!程式設計師
- 設計模式總是學不會?是時候換個姿勢了設計模式
- 【科普】碼農是程式設計師嗎?碼農與真正程式設計師的區別是啥?程式設計師
- 是時候,升級你的 Windows 了「GitHub 熱點速覽」WindowsGithub
- Android AOSP基礎(二)是時候下載Android9.0原始碼了Android原始碼
- 你是什麼時候”突然”學會程式設計的程式設計
- 聊聊程式設計師面試時,那些必須注意的事情程式設計師面試
- 成功、瑜伽、黃曉明 | 中年程式設計師對成功的認真思考程式設計師
- 程式設計師不能忍996了!全民 fuck ,GitHub來說話程式設計師996Github
- Adobe國際認證設計師含金量,能否代表設計師的真實水平?
- B 站崩了,受害程式設計師聊聊程式設計師
- 【Android Adapter】是時候開啟Adapter新時代了AndroidAPT
- 程式設計師到底是幹什麼的?請不要再黑程式設計師了程式設計師
- 程式設計師休息時間接私活遭公司辭退,不明覺厲?程式設計師
- 為什麼程式設計師在學習程式設計的時候什麼都記不住?程式設計師
- 幹了3年程式設計師,我開竅了程式設計師
- Rust 程式設計影片教程地址、原始碼 GitHub 地址說明Rust程式設計原始碼Github
- 年底了是時候學新技術了「GitHub 熱點速覽 v.21.52」Github
- GitHub---程式設計師的聖地Github程式設計師