據(jù)我所知,Java序列化漏洞一年多前已被披露,它由一位安全研究人員在PayPal的服務(wù)器中發(fā)現(xiàn)。那么,這是個(gè)什么樣的漏洞,為什么它還未被修復(fù)?攻擊者是如何利用它的?
Nick Lewis:Java序列化漏洞發(fā)生在:當(dāng)輸入內(nèi)容從已經(jīng)通過(guò)互聯(lián)網(wǎng)提交的格式轉(zhuǎn)換成另一種格式時(shí),隨后這種格式會(huì)保存在數(shù)據(jù)庫(kù)中。當(dāng)該漏洞存在時(shí),在這個(gè)轉(zhuǎn)換過(guò)程中處理的數(shù)據(jù)可被用于在某些易受攻擊軟件中進(jìn)行遠(yuǎn)程代碼執(zhí)行。該漏洞曾被認(rèn)為只是理論上的,因?yàn)槠浞浅ky以被利用,但后來(lái)FoxGlove Security在博客文章中發(fā)布了針對(duì)其可廣泛使用的軟件漏洞利用代碼。通過(guò)這個(gè)漏洞利用代碼,Java序列化漏洞成了企業(yè)需要應(yīng)對(duì)的問(wèn)題。
在安全研究人員Mark Litchfield發(fā)現(xiàn)這個(gè)漏洞后,PayPal工程人員檢查了這個(gè)特定的Java序列化漏洞,并介紹了他們?nèi)绾卧谄湎到y(tǒng)中修復(fù)了這個(gè)漏洞。安全研究人員Michael Stepankin也詳細(xì)探討了他如何通過(guò)這個(gè)漏洞在PayPal服務(wù)器遠(yuǎn)程執(zhí)行代碼。
在PayPal工程人員尋找其產(chǎn)品中漏洞代碼的過(guò)程中我們可了解到,為什么企業(yè)(包括PayPal)沒(méi)有在漏洞利用代碼發(fā)布前修復(fù)這個(gè)漏洞:因?yàn)槿绻髽I(yè)沒(méi)有中央軟件開(kāi)發(fā)資源庫(kù),他們非常難以發(fā)現(xiàn)這個(gè)漏洞代碼,他們將需要掃描所有網(wǎng)絡(luò)應(yīng)用來(lái)尋找易受攻擊的系統(tǒng)。
為了抵御這種類(lèi)型的Java序列化攻擊,企業(yè)應(yīng)該將安全整合到其軟件開(kāi)發(fā)生命周期中。作為非特權(quán)用戶(hù)運(yùn)行web服務(wù)器而沒(méi)有在系統(tǒng)執(zhí)行代碼的權(quán)限,可減少該漏洞被用于遠(yuǎn)程代碼執(zhí)行的風(fēng)險(xiǎn)。