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