有效預(yù)防SQL注入攻擊的六脈神劍
【51CTO.com 綜合報(bào)道】據(jù)CNNIC中國(guó)互聯(lián)網(wǎng)絡(luò)信息中心2009年7月16日發(fā)布的《第24次中國(guó)互聯(lián)網(wǎng)絡(luò)發(fā)展?fàn)顩r調(diào)查統(tǒng)計(jì)報(bào)告》中顯示,我國(guó)共有網(wǎng)民數(shù)量3.38億人,網(wǎng)站數(shù)量306.1萬(wàn)個(gè),半年內(nèi)有1.95億網(wǎng)民在上網(wǎng)過程中遇到過病毒和木馬的攻擊,1.1億網(wǎng)民遇到過賬號(hào)或密碼被盜的問題。
而據(jù)多種調(diào)查顯示,目前SQL注入攻擊是造成上述嚴(yán)重情況的根本原因之一,也是黑客對(duì)數(shù)據(jù)庫(kù)進(jìn)行攻擊的常用手段之一。隨著B/S模式應(yīng)用開發(fā)的發(fā)展,使用這種模式編寫應(yīng)用程序的程序員也越來越多。但是由于程序員的水平及經(jīng)驗(yàn)也參差不齊,相當(dāng)大一部分程序員在編寫代碼的時(shí)候,沒有對(duì)用戶輸入數(shù)據(jù)的合法性進(jìn)行判斷,使應(yīng)用程序存在安全隱患,這也給黑客帶來很多可乘之機(jī)。
其實(shí),SQL注入之所以會(huì)造成嚴(yán)重后果而不被防火墻所發(fā)現(xiàn),是因?yàn)檫@種攻擊方式是從正常的WWW端口訪問,而且表面看起來跟一般的Web頁(yè)面訪問沒什么區(qū)別,所以目前市面的防火墻都不會(huì)對(duì)SQL注入發(fā)出警報(bào),如果管理員沒查看IIS日志的習(xí)慣,可能被入侵很長(zhǎng)時(shí)間都不會(huì)發(fā)覺。
而正是因?yàn)镾QL注入攻擊原理本身非常簡(jiǎn)單的原因,才使得相關(guān)攻擊工具容易下載,成為近年來攻擊者最有效Web入侵入手段。針對(duì)這一攻擊手段,聯(lián)想網(wǎng)御的安全專家傾囊傳授廣大51CTO讀者“預(yù)防SQL注入攻擊的六脈神劍”:
1、Web應(yīng)用安全評(píng)估:結(jié)合應(yīng)用的開發(fā)周期,通過安全掃描、人工檢查、滲透測(cè)試、代碼審計(jì)、架構(gòu)分析等方法,全面的發(fā)現(xiàn)Web應(yīng)用本身的脆弱性及系統(tǒng)架構(gòu)導(dǎo)致的安全問題。應(yīng)用程序的安全問題可能是軟件生命周期的各個(gè)階段產(chǎn)生的,其各個(gè)階段可能會(huì)影響系統(tǒng)安全的要點(diǎn)主要有:
圖:Web應(yīng)用常見安全要點(diǎn)及其產(chǎn)生階段
而對(duì)應(yīng)用程序本身在評(píng)估過程中可以參考OWASP TOP TEN 2007年最新版本,重點(diǎn)檢查以下內(nèi)容:
序號(hào) |
內(nèi)容 |
說明 |
1 |
跨站腳本漏洞 | Web應(yīng)用程序直接將來自使用者的執(zhí)行請(qǐng)求送回瀏覽器執(zhí)行,使得攻擊者可獲取使用者的Cookie或Session信息而直接以使用者身份登陸 |
2 |
注入類問題 | Web應(yīng)用程序執(zhí)行在將用戶輸入變?yōu)槊罨虿樵冋Z(yǔ)句的一部分時(shí)沒有做過濾,SQL 注入, 命令注入等攻擊包括在內(nèi) |
3 |
任意文件執(zhí)行 | Web應(yīng)用程序引入來自外部的惡意文件并執(zhí)行 |
4 |
不安全的對(duì)象直接引用 | 攻擊者利用Web應(yīng)用程序本身的文件操作功能讀取系統(tǒng)上任意文件或重要資料 |
5 |
跨站請(qǐng)求截?cái)喙?/TD> | 已登入Web應(yīng)用程序的合法使用者執(zhí)行惡意的HTTP指令,但Web應(yīng)用程式卻當(dāng)成合法需求處理,使得惡意指令被正常執(zhí)行 |
6 |
信息泄露 | Web應(yīng)用程序的執(zhí)行錯(cuò)誤信息中包含敏感資料,可能包括系統(tǒng)文件路徑,內(nèi)部IP地址等 |
7 |
用戶驗(yàn)證和Session管理缺陷 | Web應(yīng)用程序中自行撰寫的身份驗(yàn)證相關(guān)功能有缺陷 |
8 |
不安全的加密存儲(chǔ) | Web應(yīng)用程序沒有對(duì)敏感性資料使用加密、使用較弱的加密演算法或?qū)⒚荑€儲(chǔ)存于容易被獲取之處 |
9 |
不安全的通信 | Web應(yīng)用經(jīng)常在需要傳輸敏感信息時(shí)沒有使用加密協(xié)議 |
10 |
沒有對(duì)URL路徑進(jìn)行限制 | 某些網(wǎng)頁(yè)因?yàn)闆]有權(quán)限控制,使得攻擊者可透過網(wǎng)址直接存取 |
2、Web應(yīng)用安全加固:對(duì)應(yīng)用代碼及其中間件、數(shù)據(jù)庫(kù)、操作系統(tǒng)進(jìn)行加固,并改善其應(yīng)用部署的合理性。從補(bǔ)丁、管理接口、帳號(hào)權(quán)限、文件權(quán)限、通訊加密、日志審核等方面對(duì)應(yīng)用支持環(huán)境和應(yīng)用模塊間部署方式劃分的安全性進(jìn)行增強(qiáng)。
3、對(duì)外部威脅的過濾:通過部署Web防火墻、IPS等設(shè)備,監(jiān)控并過濾惡意的外部訪問,并對(duì)惡意訪問進(jìn)行統(tǒng)計(jì)記錄,作為安全工作決策及處置的依據(jù)。
圖:威脅過濾及記錄分析
4、Web安全狀態(tài)檢測(cè):通過常見掛馬頁(yè)面代碼的特征,持續(xù)地檢測(cè)被保護(hù)應(yīng)用頁(yè)面的當(dāng)前狀態(tài),判斷頁(yè)面是否被攻擊者加入惡意代碼。同時(shí)通過檢測(cè)Web訪問日志及Web程序的存放目錄,檢測(cè)是否存在文件篡改及是否被加入Web Shell一類的網(wǎng)頁(yè)后門。
5、事件應(yīng)急響應(yīng):提前做好發(fā)生幾率較大的安全事件的預(yù)案及演練工作,力爭(zhēng)以最高效、最合理的方式申報(bào)并處置安全事件,并整理總結(jié)。
圖:事件應(yīng)急響應(yīng)流程
6、安全知識(shí)培訓(xùn):讓開發(fā)和運(yùn)維人員了解并掌握相關(guān)知識(shí),在系統(tǒng)的建設(shè)階段和運(yùn)維階段同步考慮安全問題,在應(yīng)用發(fā)布前最大程度的減少脆弱點(diǎn)。
在現(xiàn)在和將來,由于受互聯(lián)網(wǎng)地下黑色產(chǎn)業(yè)鏈中盜取用戶賬號(hào)及虛擬財(cái)產(chǎn)等行為的利益驅(qū)動(dòng),攻擊者仍將Web應(yīng)用作為傳播木馬等惡意程序的主要手段。盡管這會(huì)對(duì)廣大的運(yùn)維人員和安全工作者造成很大的工作壓力,但是我們相信通過持續(xù)不斷地執(zhí)行并改進(jìn)相關(guān)安全措施,可以最大限度地保障Web應(yīng)用的安全,將關(guān)鍵系統(tǒng)可能發(fā)生的風(fēng)險(xiǎn)控制在可接受的范圍之內(nèi)。