胡立
對于公司產(chǎn)品而言,源代碼就是生命的化身,掌握了其編寫方式,就可以復制出一個相同的程序,或通過閱讀源代碼找到程序的漏洞并進行任意攻擊。一旦源代碼泄露,潛在的危害巨大。因此,企業(yè)面臨源碼泄露事件時,是否應該反思自身的源碼保護是否完善?
不久前一次大規(guī)模源碼泄露事件,Bank Security的安全研究人員發(fā)現(xiàn),遭泄露的源碼被發(fā)布在GitLab上一個公開存儲庫中,并被標記為“絕密”,以及“保密&專有”,該存儲庫中大約包含了超過50家公司的源碼。
一名瑞士軟件開發(fā)工程師上傳了這些存儲庫,然后在自己的Twitter賬號上發(fā)布了獲取鏈接。盡管他已經(jīng)盡量刪除代碼,并聯(lián)系相關涉事公司,但是因為這些源代碼被公之于眾,任何人都可以訪問,為網(wǎng)絡攻擊者找到漏洞、竊取企業(yè)機密信息埋下了隱患。
事件起因疑似是因為使用了錯誤配置的Devops工具公開了源代碼。類似這種配置不當造成的安全事件不在少數(shù),亞馬遜AWS S3存儲桶配置不當造成大規(guī)模的數(shù)據(jù)泄露事件想必大家都還記得。源碼泄露也還有其他原因,比如黑客攻擊、員工操作失誤等,近期曝光的任天堂因遭受黑客攻擊而導致源碼泄露。
此外,員工操作失誤造成的事件,比如大疆的源碼泄露。2019年,大疆前員工泄露公司源代碼,深圳法院以侵犯商業(yè)秘密罪判處大疆前員工有期徒刑6個月,并處罰金20萬人民幣。而這些泄露出去的代碼,已用于該公司農(nóng)業(yè)無人機產(chǎn)品,具有實用性。盡管大疆公司采取了合理的保密措施,但該次事件依然給大疆造成經(jīng)濟損失116.4萬元人民幣。
游戲領域更是源碼泄露的重災區(qū)。除了任天堂的源碼泄露事件,2019年Valve發(fā)生了重大泄露事件,有人泄露了《CS:GO》《軍團要塞2》的源代碼,并提供下載鏈接。負責對《軍團要塞2》進行志愿維護的玩家社區(qū)已經(jīng)無限期關停。
2019年4月,B站整個網(wǎng)站后臺工程源碼泄露,并且“不少用戶密碼被硬編碼在代碼里面,誰都可以用?!碑斎誃站股價跌了3.27 %。雖然很快被封禁,B站也已經(jīng)報警處理,但有不少網(wǎng)友克隆了代碼庫,隱患已經(jīng)埋下。
企業(yè)應該如何保護源代碼
源代碼對企業(yè)的重要性不言而喻,因此加強源代碼保護至關重要。企業(yè)可以從源代碼本身、內(nèi)部人員權限以及做好監(jiān)控審計等三方面著手,加強企業(yè)重要源代碼的安全性。
1.對源碼進行分級,確保和明確重要源碼的保護措施
企業(yè)內(nèi)部源碼具有優(yōu)先層級,明確哪些核心代碼需要被保護。明確源碼重要性分級后,可對重要源碼進行加密,打造核心數(shù)據(jù)管理平臺。目前對源碼加密的辦法有2種:一種是物理性的,另一種是軟件性的。
物理性源碼加密是指截斷外網(wǎng),封掉U口或者鎖定機箱,讓開發(fā)者處于一種封閉的狀態(tài)。這種方法雖然有效果,但弊端就是如果封掉U口,對于員工的工作使用會造成很大的影響,大大降低了工作的效率。
軟件性的源碼加密是指通過軟件對源碼進行保護。目前,市面上最流行的源碼加密軟件機制是一種對開發(fā)人員的操作環(huán)境進行加密的軟件,不用對任何硬件做修改,開發(fā)人員的源碼只能存放在公司范圍里,拿不出加密的空間。如果想要拿出文件的話則需走審批流程。
2.精細化訪問控制,對于員工的權限進行限制
盡管公司做好源碼加密措施,但是仍然防不住內(nèi)部員工造成的安全風險。比如大疆前員工泄漏源碼被判刑則是一個案例。
對于外部的威脅,確實可以利用技術來防御。但是對于內(nèi)部“人”的因素,一方面需要限制員工的訪問權限或者虛擬化訪問,另一方面提高員工的安全意識和產(chǎn)權意識。
從安全技術上進行數(shù)據(jù)管理,如數(shù)據(jù)加密、數(shù)據(jù)防泄漏、數(shù)據(jù)溯源及訪問權限管控等。同時,進行分權管理,劃分數(shù)據(jù)等級加密存儲,員工等級不同,訪問權限就不同,一般員工不能接觸到核心數(shù)據(jù),盡可能降低核心數(shù)據(jù)泄露的風險。
員工在入職時,應簽署保密協(xié)議和競業(yè)禁止協(xié)議。其中包括公司現(xiàn)有的以及正在開發(fā)或構想之中的包括源碼在內(nèi)的所有產(chǎn)品技術開發(fā)信息,員工不得私自對外透露。
加強員工保密意識以及相關法律意識,權責分明,讓員工了解一旦泄密事件發(fā)生自身需要背負的法律責任?;蛘咄ㄟ^企業(yè)文化教育,讓員工了解源碼數(shù)據(jù)對企業(yè)發(fā)展的重要性,同時提高安全防護意識。
3.做好監(jiān)控和安全審計
企業(yè)應配合管理制度、保密協(xié)議和審計日志,確保有據(jù)可查、有據(jù)可依。現(xiàn)在大部分客戶對于軟件產(chǎn)品的安全考量基本集中在開發(fā)后期,在測試階段引入。常用的軟件風險評估、漏洞掃描以及滲透測試等都是在軟件開發(fā)完成后進行。
通常這個階段預留的時間非常少,不僅修復難度高,修復、測試的成本也極高,而且存在大量的漏洞錯報和誤報的情況。當通過后期測試發(fā)現(xiàn)問題后,人工進行代碼審查去查找漏洞所在代碼位置時,往往效率低、準確率低,無法定位具體問題代碼行。
因此,企業(yè)應從開發(fā)早期進行安全介入,做好安全審計,快速精準地定位問題代碼行,對漏洞進行實時管理,從源碼層級上進行安全保護,防止因配置不當、軟件編寫存在Bug等問題造成的源碼泄露。