Cross-build注入攻擊:注意Web應(yīng)用程序源碼組件 |
發(fā)布時(shí)間: 2012/8/11 17:45:32 |
我們都知道黑客經(jīng)常查找Web應(yīng)用程序以發(fā)現(xiàn)其結(jié)構(gòu)或者操作漏洞。比較常見(jiàn)的查找漏洞的一種方法,是將代碼注入正在運(yùn)行的程序,這個(gè)過(guò)程在SQL注入(SQL injections)和跨站腳本(cross-site scripting)中很常見(jiàn)。更復(fù)雜的注入方法是建立緩沖區(qū)溢出(buffer overflow),強(qiáng)行讓程序運(yùn)行攻擊者寫(xiě)的代碼。 基于注入的攻擊已經(jīng)證明十分有效,它們可能訪問(wèn)私人數(shù)據(jù)或者控制受感染的計(jì)算機(jī)。軟件供應(yīng)商不斷地努力修復(fù)這些導(dǎo)致攻擊成功的漏洞。但是如果程序在編譯或者創(chuàng)建時(shí)黑客就可能注入惡意代碼,又該怎么辦呢?某些編制程序的方法使應(yīng)用程序變得很容易受到一種叫做“cross-build注入”的攻擊。 利用編制過(guò)程 現(xiàn)在的軟件應(yīng)用程序非常復(fù)雜,往往由許多不同的組件組成。為了加快應(yīng)用程序的發(fā)展,開(kāi)發(fā)人員都是結(jié)合已經(jīng)寫(xiě)好的源代碼和第三方組件來(lái)編制大多數(shù)軟件。畢竟,既然可以很快找到程序部件,并能集成到應(yīng)用程序中,尤其是許多組件又是開(kāi)放源代碼,可以通過(guò)GNU(通用公共授權(quán))免費(fèi)獲得,為什么還要花幾星期的時(shí)間重新開(kāi)發(fā)程序部件呢? 為進(jìn)一步加速開(kāi)發(fā)過(guò)程,簡(jiǎn)化項(xiàng)目管理,以及減少軟件編制時(shí)間,現(xiàn)代的編譯程序允許開(kāi)發(fā)人員在項(xiàng)目設(shè)置中引用依賴(lài)關(guān)系信息(dependency information)。依賴(lài)關(guān)系信息可以從適用的代碼庫(kù)里檢索預(yù)定組件,從而自動(dòng)編制應(yīng)用程序。例如,Maven是一種非常流行且廣泛使用的編制系統(tǒng),能夠處理依賴(lài)關(guān)系管理和多項(xiàng)目關(guān)系。Maven和Ant、Ivy等相似的小工具能幫助開(kāi)發(fā)人員處理大量的代碼。這類(lèi)管理會(huì)導(dǎo)致cross-build injection問(wèn)題。 如果開(kāi)發(fā)人員在編制過(guò)程中自動(dòng)檢索開(kāi)放源碼組件等外部依賴(lài)文件,那么攻擊者就有機(jī)會(huì)通過(guò)感染第三方組件將代碼嵌入目標(biāo)程序。完成這個(gè)過(guò)程有兩種方法。 第一,攻擊者能感染裝有組件的服務(wù)器,并以惡意的復(fù)制文件替代組件。第二,惡意軟件編制人員能感染計(jì)算機(jī)的DNS服務(wù)器,將需求轉(zhuǎn)給由攻擊者控制的計(jì)算機(jī)。兩種方法都很有效,因?yàn)殚_(kāi)發(fā)人員及其采用的工具不會(huì)懷疑他們所使用的代碼源及代碼的完整性。大多數(shù)互聯(lián)網(wǎng)用戶都知道不能打開(kāi)來(lái)路不明的郵件附件,然而軟件開(kāi)發(fā)人員經(jīng)常會(huì)下載一些代碼,集成到自己的應(yīng)用程序中,而不會(huì)審核代碼究竟對(duì)程序產(chǎn)生了什么影響。如果設(shè)置編制過(guò)程自動(dòng)從互聯(lián)網(wǎng)檢索代碼,這種方法的危險(xiǎn)也就擴(kuò)大了。 風(fēng)險(xiǎn)加大 用這種方法編制應(yīng)用程序的完整性取決于提供開(kāi)放源碼組件的網(wǎng)站是否安全。應(yīng)用程序還依賴(lài)用于找尋程序的網(wǎng)絡(luò)基礎(chǔ)設(shè)施。避免cross-build注入攻擊最安全的方法就是不要采用合并依賴(lài)關(guān)系解決方案的自動(dòng)工具。如果這種方法不可行,那么開(kāi)發(fā)團(tuán)隊(duì)就必須創(chuàng)建內(nèi)部代碼庫(kù),制定需要嚴(yán)格執(zhí)行的策略,以控制新代碼或新組件加入代碼庫(kù)的過(guò)程。這些規(guī)則應(yīng)包括為保證代碼安全且合適所進(jìn)行的復(fù)審。為減輕DNS受到的攻擊,提供代碼庫(kù)的服務(wù)器應(yīng)該只提供IP地址。 如果cross-build 注入攻擊變得十分廣泛,它們就會(huì)逐漸破壞開(kāi)放源碼運(yùn)動(dòng),而開(kāi)放源碼軟件越來(lái)越得到認(rèn)可的現(xiàn)象也會(huì)受到影響。如果程序在編制的時(shí)候就受到感染,那產(chǎn)生的惡意行為將會(huì)毫無(wú)限制。從長(zhǎng)遠(yuǎn)來(lái)看,我認(rèn)為數(shù)字簽名代碼和能檢驗(yàn)簽名的編制工具將會(huì)有更廣泛的用途,它們能保證代碼來(lái)自已知的出處,而且沒(méi)有經(jīng)過(guò)任何方式的篡改。 原文鏈接:http://www.searchsecurity.com.cn/showAbstract_2897.htm本文出自:億恩科技【www.allwellnessguide.com】 服務(wù)器租用/服務(wù)器托管中國(guó)五強(qiáng)!虛擬主機(jī)域名注冊(cè)頂級(jí)提供商!15年品質(zhì)保障!--億恩科技[ENKJ.COM] |