本文介紹關(guān)于PHP應(yīng)用程序的漏洞以及攻擊者如何利用PHP超全局變量來執(zhí)行Web攻擊的消息。并解釋一下什么是PHP超全局變量及其帶來的風(fēng)險。
Nick Lewis(CISSP,GCWN))是一名信息安全分析師。他主要負(fù)責(zé)風(fēng)險管理項目,并支持該項目的技術(shù)PCI法規(guī)遵從計劃。2002年,Nick獲得密歇根州立大學(xué)的電信理學(xué)碩士學(xué)位;2005年,又獲得Norwich大學(xué)的信息安全保障理學(xué)碩士學(xué)位。在他09年加入目前的組織之前,Nick曾在波士頓兒童醫(yī)院、哈佛醫(yī)學(xué)院初級兒科教學(xué)醫(yī)院,以及Internet2和密歇根州立大學(xué)工作。
問:我聽到了很多關(guān)于PHP應(yīng)用程序的漏洞以及攻擊者如何利用PHP超全局變量來執(zhí)行Web攻擊的消息。您能否解釋一下什么是PHP超全局變量及其帶來的風(fēng)險?
答:首先,我們來看一點背景知識:超文本預(yù)處理器(PHP)已經(jīng)存在超過10年,它是迄今為止最重要的web應(yīng)用程序編程語言。它的最初設(shè)計考慮了功能與易用性。然而,雖然PHP已經(jīng)使用了這么多年,但它有著“劣跡斑斑”的安全漏洞記錄。研究人員甚至創(chuàng)建了Hardened PHP項目來幫助企業(yè)保護(hù)應(yīng)用程序和網(wǎng)頁。
雖然我們已經(jīng)發(fā)現(xiàn)并修復(fù)了很多PHP漏洞,但很多這些漏洞給許多常用web應(yīng)用程序帶來威脅,并需要web應(yīng)用程序開發(fā)人員能夠使用最新版本的PHP。其他編程語言(例如微軟的Active Server Pages或者ASP)沒有這些類型的漏洞,因而不需要開發(fā)人員或系統(tǒng)管理人員總是使用最新版本的語言來保持應(yīng)用程序的安全性,減少了升級和培訓(xùn)的需求,從而降低了開發(fā)成本。無論使用什么編程語言,我們?nèi)匀恍枰褂冒踩_發(fā)實踐。
在2000年8月,PHP超全局變量被引入來禁用PHP register global功能–因為它造成了PHP和web應(yīng)用程序的重大安全問題。PHP超全局變量是PHP腳本中可用的內(nèi)置變量,它可以存儲數(shù)據(jù),這些數(shù)據(jù)可以在整個腳本中使用。因為不安全的設(shè)計,這個棄用的功能廣泛地被攻擊者濫用。
應(yīng)用程序安全供應(yīng)商Imperva在其報告中描述了超全局變量帶來的風(fēng)險。其中一個風(fēng)險是,超全局變量可能被輸入惡意數(shù)據(jù),隨后這些數(shù)據(jù)可能被攻擊者以不安全的方式被利用。
兩個關(guān)鍵信息是,正如Imperva所指出,對于任何PHP應(yīng)用程序,沒有什么理由來提供超全局參數(shù),要求應(yīng)用程序提供這些參數(shù)的請求應(yīng)該被阻止。為此,檢查以確保你的web應(yīng)用程序防火墻部署了規(guī)則來自動阻止這些請求,當(dāng)這種事情發(fā)生時,應(yīng)該發(fā)出警報,因為這很可能是有針對性攻擊的標(biāo)志。