近日,開放式 Web 應(yīng)用程序安全項(xiàng)目(OWASP)發(fā)布了最終版 2017 Top 10 榜單。在 2017 威脅榜單中,注入攻擊漏洞仍然位居 Top 10 威脅之首,而 XSS 的威脅程度從 A3 降到了 A7。敏感信息泄露、安全配置錯(cuò)誤、失效的訪問控制等威脅均有提升,值得企業(yè)重視。
與此同時(shí),榜單中還出現(xiàn)了一些新的安全威脅,包括 XXE 漏洞(A4:2017, XML External Entity attack)、針對 Java 平臺的不安全反序列化漏洞(A8:2017, Insecure Deserialization)以及記錄和監(jiān)控不足風(fēng)險(xiǎn)(A10:2017, Insufficient Logging &Monitoring)等。
A1 注入攻擊漏洞
A2 失效的身份認(rèn)證
A3 敏感信息泄露
A4 XXE 漏洞
A5 失效的訪問控制
A6 安全配置錯(cuò)誤
A7 跨站腳本 XSS
A8 不安全反序列化漏洞
A9 使用含有已知漏洞的組件
A10 不足的記錄和監(jiān)控
隨著網(wǎng)貸、購物和社交等一系列新型互聯(lián)網(wǎng)產(chǎn)品的誕生,企業(yè)信息化的過程中越來越多的應(yīng)用都架設(shè)在 Web 平臺上,接踵而至的就是 Web 安全威脅的凸顯。大量黑客利用網(wǎng)站操作系統(tǒng)的漏洞和 Web 服務(wù)程序的 SQL 注入漏洞等得到 Web 服務(wù)器的控制權(quán)限,輕則篡改網(wǎng)頁內(nèi)容,重則竊取重要內(nèi)部數(shù)據(jù),更為嚴(yán)重的則是在網(wǎng)頁中植入惡意代碼,使得網(wǎng)站訪問者受到侵害。
什么是 Web 應(yīng)用安全風(fēng)險(xiǎn)?
如下圖所示,攻擊者可以通過應(yīng)用程序中許多不同的路徑和方法來危害您的業(yè)務(wù)或者企業(yè)組織。每種路徑方法都代表了一種風(fēng)險(xiǎn),有些路徑方法很容易被發(fā)現(xiàn)并利用,有些則很難被發(fā)現(xiàn)。
文章重點(diǎn)分析排名前三的 Web 安全威脅以及應(yīng)對方法:
注入攻擊漏洞
注入攻擊漏洞,例如 SQL、OS 以及 LDAP 注入。這些攻擊發(fā)生在當(dāng)不可信的數(shù)據(jù)作為命令或者查詢語句的一部分,被發(fā)送給解釋器的時(shí)候,攻擊者發(fā)送的惡意數(shù)據(jù)可以欺騙編輯器,以執(zhí)行計(jì)劃外的命令或者在未被恰當(dāng)授權(quán)時(shí)訪問數(shù)據(jù)。
檢查是否存在「注入漏洞」的方法
最好的辦法就是確認(rèn)所有解釋器的使用都明確地將不可信數(shù)據(jù)從命令語句或查詢語句中區(qū)分出來。對于 SQL 調(diào)用,在所有準(zhǔn)備語句和存儲過程中使用綁定變量,并避免使用動(dòng)態(tài)查詢語句。
檢查應(yīng)用程序是否安全使用解釋器的最快最有效的辦法是代碼審查,代碼分析工具能幫助安全分析者找到使用解釋器的代碼并追蹤應(yīng)用的數(shù)據(jù)流。
可以執(zhí)行應(yīng)用程序的動(dòng)態(tài)掃描器能夠提供信息,幫助確認(rèn)一些可利用的注入漏洞是否存在。
典型案例
NextGEN Gallery 插件是眾所周知的 WordPress 相冊插件,這款插件功能強(qiáng)大,可以在博客中任意插入動(dòng)態(tài)圖片效果,提供了很完美的照片管理方法,在 WordPress 平臺上擁有過百萬的安裝量。
今年 3 月 NextGEN Gallery 插件被曝存在嚴(yán)重的 SQL 注入漏洞,影響上百萬用戶,攻擊者利用 SQL 注入漏洞獲取了數(shù)據(jù)庫中包括用戶信息在內(nèi)的敏感數(shù)據(jù)。
失效的身份認(rèn)證
與身份認(rèn)證和會話管理相關(guān)的應(yīng)用程序功能常常被錯(cuò)誤地實(shí)現(xiàn),攻擊者使用認(rèn)證管理功能中的漏洞,采用破壞密碼、密鑰、會話令牌去冒充其他用戶的身份。
檢查是否存在「失效的身份認(rèn)證」的方法
用戶身份驗(yàn)證憑證是否使用哈?;蚣用鼙Wo(hù);是否可以通過薄弱的賬戶管理功能(例如賬戶創(chuàng)建、密碼修改、密碼修復(fù)、弱會話 ID)重寫。
會話 ID 暴露在 URL 里;會話 ID 沒有超時(shí)限制,用戶會話或身份驗(yàn)證令牌(特別是單點(diǎn)登錄令牌)在用戶注銷時(shí)沒有失效;密碼、會話 ID 和其他認(rèn)證憑據(jù)使用未加密鏈接傳輸?shù)取?/p>
典型案例
機(jī)票預(yù)訂應(yīng)用程序支持 URL 重寫,把當(dāng)前用戶的會話 ID 放在 URL 中:http://example.com/sale/saleitems;jsessionid=2P0OC2JDPXM0OQSNDLPSKHCJUN2JV?dest=Hawaii
該網(wǎng)站一個(gè)經(jīng)過認(rèn)證的用戶希望讓他朋友知道這個(gè)機(jī)票打折信息。他將上面鏈接通過郵件發(fā)送給朋友們,并不知道已經(jīng)泄露了自己會話 ID. 當(dāng)他的朋友們使用上面的鏈接時(shí),可以輕而易舉地使用他的會話和信用卡。
敏感信息泄露
許多 Web 應(yīng)用程序沒有正確保護(hù)敏感數(shù)據(jù),如信用卡、身份證 ID 和身份驗(yàn)證憑據(jù)等。攻擊者可能會竊取或篡改這些弱保護(hù)的數(shù)據(jù)以進(jìn)行信用卡詐騙、身份竊取或其他犯罪。
敏感數(shù)據(jù)需額外的保護(hù),比如在存放或在傳輸過程中進(jìn)行加密,以及在與瀏覽器交換時(shí)進(jìn)行特殊的預(yù)防措施。
檢查是否存在「敏感信息泄露」的方法
首選需要確認(rèn)哪些數(shù)據(jù)時(shí)敏感數(shù)據(jù)而需要被加密。當(dāng)這些數(shù)據(jù)被長期存儲的時(shí)候,無論存儲在哪里,是否被加密和備份?
無論內(nèi)部數(shù)據(jù)還是外部數(shù)據(jù),傳輸時(shí)是否是明文傳輸?是否還在使用舊的或者脆弱的加密算法?
加密密鑰的生成是否缺少恰當(dāng)?shù)拿荑€管理或缺少密鑰回轉(zhuǎn)?當(dāng)瀏覽器接收或發(fā)送敏感數(shù)據(jù)時(shí),是否有瀏覽器安全指令?
典型案例
一個(gè)網(wǎng)站上所有需要身份驗(yàn)證的網(wǎng)頁都沒有使用 SSL 加密。攻擊者只需要監(jiān)控網(wǎng)絡(luò)數(shù)據(jù)流(比如一個(gè)開放的無線網(wǎng)絡(luò)或其社區(qū)的有限網(wǎng)絡(luò)),并竊取一個(gè)已驗(yàn)證的受害者的會話 Cookie. 攻擊者利用這個(gè) Cookie 執(zhí)行重放攻擊并接管用戶的會話,從而訪問用戶的隱私數(shù)據(jù)。
如何有效地防范 Web 應(yīng)用安全風(fēng)險(xiǎn)?
安全防護(hù)要貫穿整個(gè) Web 應(yīng)用生命周期
在 Web 開發(fā)階段需要對代碼進(jìn)行核查,在測試階段需要對上線前的 Web 應(yīng)用做完整的安全檢查,在運(yùn)營階段,建議在事前、事中和事后進(jìn)行分階段、多層面的完整防護(hù)。
構(gòu)建以漏洞、事件生命周期閉環(huán)管理體系
通過監(jiān)測系統(tǒng)平臺進(jìn)行漏洞生命周期的管理,包含漏洞掃描、人工驗(yàn)證、漏洞狀態(tài)的追蹤工作以及漏洞修復(fù)后的復(fù)驗(yàn)工作等,使漏洞管理流程化。
提升安全管理人員工作能力
安全管理崗位人員需要建立起信息安全管理的概念,清楚 Web 威脅的危害,掌握識別安全漏洞及風(fēng)險(xiǎn)的專用技術(shù),以及對安全問題進(jìn)行加固處置的技能。