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