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