使用IDS技術(shù)防止SQL注入攻擊
目前,針對(duì)應(yīng)用及其后臺(tái)數(shù)據(jù)庫(kù)的應(yīng)用級(jí)入侵已經(jīng)變得越來(lái)越猖獗,如SQL注入、跨站點(diǎn)腳本攻擊和未經(jīng)授權(quán)的用戶訪問(wèn)等。所有這些入侵都有可能繞過(guò)前臺(tái)安全系統(tǒng)并對(duì)數(shù)據(jù)來(lái)源發(fā)起攻擊。
為了對(duì)付這類(lèi)威脅,新一級(jí)別的安全脫穎而出,這就是應(yīng)用安全。這種安全技術(shù)將傳統(tǒng)的網(wǎng)絡(luò)和操作系統(tǒng)級(jí)入侵探測(cè)系統(tǒng)(IDS)概念應(yīng)用于數(shù)據(jù)庫(kù)(即應(yīng)用)。與通常的網(wǎng)絡(luò)或操作系統(tǒng)解決方案不同的是,應(yīng)用IDS提供主動(dòng)的、針對(duì)SQL的保護(hù)和監(jiān)視,可以保護(hù)數(shù)以千計(jì)的預(yù)先包裝或自行開(kāi)發(fā)的Web應(yīng)用。
例如,應(yīng)用IDS可以監(jiān)視和防護(hù)關(guān)鍵的數(shù)據(jù),使那些針對(duì)數(shù)據(jù)庫(kù)的攻擊,如緩沖區(qū)溢出和Web應(yīng)用攻擊等無(wú)法對(duì)數(shù)據(jù)庫(kù)造成真正的損害,而且應(yīng)用IDS還可以對(duì)這些事件進(jìn)行審查。
應(yīng)用安全與網(wǎng)絡(luò)和主機(jī)安全之間存在很大的區(qū)別。應(yīng)用是千差萬(wàn)別的,但攻擊的目標(biāo)總是相同的,也就是入侵?jǐn)?shù)據(jù)庫(kù)。由于應(yīng)用使用SQL與數(shù)據(jù)庫(kù)進(jìn)行通信,因此好的應(yīng)用IDS應(yīng)當(dāng)能夠解析SQL,并且提供一種能夠理解流量的內(nèi)容,且又能與應(yīng)用劃清界線的客觀保護(hù)層。
多數(shù)應(yīng)用IDS都有三個(gè)組件。第一個(gè)是基于網(wǎng)絡(luò)或主機(jī)的傳感器。網(wǎng)絡(luò)傳感器連接到交換機(jī)上的一個(gè)端口上,該端口的配置決定它可以查看到數(shù)據(jù)庫(kù)內(nèi)的所有流量。相比之下,主機(jī)傳感器直接駐留在應(yīng)用上。
傳感器可以收集SQL交易并對(duì)其進(jìn)行解析,然后決定是否應(yīng)當(dāng)針對(duì)該流量發(fā)出警報(bào)。如果有必要發(fā)出警告,警告會(huì)被傳遞給下一個(gè)組件,即控制臺(tái)服務(wù)器。這臺(tái)服務(wù)器存儲(chǔ)事件信息,并且是策略配置和升級(jí)等傳感器維護(hù)活動(dòng)的中心點(diǎn)。
應(yīng)用IDS中的第三個(gè)組件是Web瀏覽器,管理員可以利用它來(lái)修改IDS設(shè)置、實(shí)時(shí)監(jiān)視事件并生成報(bào)告。
以SQL注入攻擊為例,攻擊者會(huì)試圖繞過(guò)Web服務(wù)器定義的SQL語(yǔ)句,目的就是要注入自己的語(yǔ)句。假設(shè)要輸入的用戶名為Bob,口令為Hardtoguess。
當(dāng)看到這些輸入的內(nèi)容后,數(shù)據(jù)庫(kù)就會(huì)找到WebUsers 行中與之匹配的內(nèi)容,然后該應(yīng)用會(huì)對(duì)用戶進(jìn)行驗(yàn)證。為了入侵?jǐn)?shù)據(jù)庫(kù),SQL注入攻擊會(huì)欺騙應(yīng)用,并使之相信自己已經(jīng)提交了正確的證書(shū)。
例如,攻擊使用的口令是‘blah’或‘A’=‘A’,因此攻擊時(shí)創(chuàng)建的SQL語(yǔ)句可能會(huì)是:SELECT * FROM WebUsers WHERE Username=‘Bob’ AND Password=‘blah’ OR‘A’=‘A’。
從邏輯上來(lái)分析‘A’=‘A’永遠(yuǎn)都是TRUE,而WHERE子句也可以匹配所有的行,就這樣,攻擊者在根本沒(méi)有正確用戶名或口令的情況下也能蒙混過(guò)關(guān),得到驗(yàn)證。應(yīng)用服務(wù)器會(huì)接受輸入的信息并且允許攻擊者通過(guò)。接下來(lái),應(yīng)用服務(wù)器會(huì)通過(guò)SQL命令從數(shù)據(jù)庫(kù)中請(qǐng)求數(shù)據(jù)。
如果有了應(yīng)用IDS,傳感器會(huì)收集SQL命令并對(duì)其進(jìn)行解密,然后查看這些命令到底要訪問(wèn)數(shù)據(jù)庫(kù)中的哪些表和列。利用這種方法,傳感器就可以判斷出到底是正常情況還是一次攻擊行為。
如果發(fā)現(xiàn)的行為是IDS策略不允許的,傳感器會(huì)判斷攻擊的威脅水平并采取適當(dāng)?shù)拇胧?,通常是向管理員的控制臺(tái)和/或通過(guò)電子郵件發(fā)出警告。
這只是應(yīng)用層攻擊的一個(gè)簡(jiǎn)單例子,而且今天的許多公司都在面臨這樣的威脅。通過(guò)實(shí)施應(yīng)用級(jí)IDS,企業(yè)就可以有效地保護(hù)易受攻擊的數(shù)據(jù),并且將最新的攻擊和威脅拒之門(mén)外。
【編輯推薦】