二十多年來,跨站腳本(簡稱 XSS)漏洞一直是主流網(wǎng)站的心頭之痛。為什么過了這么久,這些網(wǎng)站還是對此類漏洞束手無策呢?
對于最近 eBay 網(wǎng)站曝出的跨站腳本漏洞,你有什么想法?為什么會出現(xiàn)這樣的漏網(wǎng)之魚?一個如此大規(guī)模的網(wǎng)站,不應(yīng)該具備可靠的網(wǎng)關(guān)安全技術(shù)以阻止任何情況下的 XSS 攻擊么?
即便從上世紀(jì) 90 年代開始,跨站腳本漏洞就已經(jīng)為人們所熟知。時至今日,它仍在貽害為數(shù)不少的網(wǎng)站。大多數(shù)主流網(wǎng)站,包括谷歌,CNN,PayPal 以及 Facebook,都曾受過 XSS 漏洞的影響。該漏洞也常年出現(xiàn)在 CWE/SANS 前 25 個最危險的編程錯誤、OWASP 前 10 個最致命的 Web 應(yīng)用安全風(fēng)險之類的榜單。
XSS 攻擊與大多數(shù)應(yīng)用層攻擊(諸如 SQL 注入攻擊)不同,因?yàn)樗舻氖菓?yīng)用的用戶,而非應(yīng)用本身或應(yīng)用服務(wù)器。這類攻擊會往 Web 應(yīng)用的內(nèi)容中注入代碼,通常是 JavaScript 之類的客戶端代碼。大多數(shù)網(wǎng)站都有許許多多的注入位置,包括搜索框、反饋表格,cookie 以及論壇等。借助 XSS 漏洞,黑客可以竊取數(shù)據(jù),控制用戶的會話,運(yùn)行惡意代碼,或操縱受害用戶瀏覽器中顯示的內(nèi)容。
像 eBay 這樣的網(wǎng)站,幾乎完全基于用戶產(chǎn)生的內(nèi)容,通常在用戶的項(xiàng)目描述部分包含許多活動內(nèi)容(Active Content),比如 JavaScript 和 Flash。由于網(wǎng)站必須與用戶互動,接收來自用戶的輸入、返回數(shù)據(jù),這意味著,攻擊者也可以直接與網(wǎng)站互動,從而穿破傳統(tǒng)的外圍安全防護(hù)。除非所有用戶提供的內(nèi)容都經(jīng)過嚴(yán)格審查,XSS 攻擊代碼就有可能注入拍賣清單頁面,從而影響每個訪問該頁面的用戶。用戶輸入的所有內(nèi)容(表單數(shù)據(jù)、cookie、郵件、文件、圖片等)都應(yīng)該視為不可信任,需要經(jīng)歷審查,刪除其中可能被惡意使用的字符與字符串,才能繼續(xù)執(zhí)行腳本或傳給數(shù)據(jù)庫。
導(dǎo)致 eBay 這樣的大網(wǎng)站持續(xù)受到 XSS 攻擊的一大原因,是這些網(wǎng)站過于復(fù)雜,實(shí)時生成的網(wǎng)頁常常會包含許多外部站點(diǎn)的內(nèi)容。這使得測試階段,枚舉用戶與應(yīng)用交互的所有排列組合變得不太現(xiàn)實(shí),繼而導(dǎo)致 XSS 漏網(wǎng)之魚的出現(xiàn)。
話雖如此,eBay 居然沒有一套更為嚴(yán)格的代碼審查流程(近幾周發(fā)現(xiàn)了多個 XSS 漏洞),還是有些令人吃驚。用于測試 XSS 漏洞的工具其實(shí)很多,它們都能在代碼上線之前有效查找漏洞。此外,開發(fā)者也可以使用安全控制庫(諸如 OWASP 的企業(yè)安全 API 或微軟的反跨站腳本庫),而不需要自己編寫驗(yàn)證檢查。而且,諸如運(yùn)行時應(yīng)用自我保護(hù)(RASP)等網(wǎng)關(guān)安全技術(shù)也有助于檢測并防御對 XSS 漏洞的攻擊。因此,如此主流的一個大網(wǎng)站(eBay),卻沒能有效防御如此廣為人知的安全漏洞,實(shí)在是有些讓人失望。
如今,多樣化的攻擊手段層出不窮,傳統(tǒng)安全解決方案越來越難以應(yīng)對網(wǎng)絡(luò)安全攻擊。OneRASP 實(shí)時應(yīng)用自我保護(hù)技術(shù),可以為軟件產(chǎn)品提供精準(zhǔn)的實(shí)時保護(hù),使其免受漏洞所累。想閱讀更多技術(shù)文章,請?jiān)L問 [OneAPM 官方技術(shù)博客]。
本文轉(zhuǎn)自 OneAPM 官方博客