天清萬兆WAF防御SQL注入技術
什么是SQL注入?
SQL注入:利用現有應用程序,將(惡意)的SQL命令注入到后臺數據庫引擎執行的能力,這是SQL注入的標準釋義。
隨著B/S模式被廣泛的應用,用這種模式編寫應用程序的程序員也越來越多,但由于開發人員的水平和經驗參差不齊,相當一部分的開發人員在編寫代碼的時候,沒有對用戶的輸入數據或者是頁面中所攜帶的信息(如Cookie)進行必要的合法性判斷,導致了攻擊者可以提交一段數據庫查詢代碼,根據程序返回的結果,獲得一些他想得到的數據。
SQL注入利用的是正常的HTTP服務端口,表面上看來和正常的web訪問沒有區別,隱蔽性極強,不易被發現。
SQL注入的危害和現狀
SQL注入的主要危害包括:
◆未經授權狀況下操作數據庫中的數據
◆ 惡意篡改網頁內容
◆私自添加系統帳號或者是數據庫使用者帳號
◆ 網頁掛木馬
……
SQL注入防御
SQL注入的學術界研究成果
基于正常行為模型的AMNESIA
該算法的核心思想是通過事前找到源碼中所有動態SQL語句的構造點,并為這些SQL語句建立自動機模型(Profiler)。在程序運行時監控提交的SQL語句是否滿足Profiler,如果滿足則是正常的操作,否則,就認為發生了SQL注入攻擊。
這種分析方法需要能夠獲得應用程序的源代碼,并且需要修改源代碼,是一種侵入性的模型(源代碼補丁方式)。其實現過程如下圖所示:
基于數字簽名技術的SQLRand
該算法的主要思想是:對源代碼中包含動態SQL語句的模版中的關鍵字進行隨機化編碼處理,這些編碼規則黑客無法預知。運行時,對隨機化編碼之后的SQL命令進行解碼,如果解碼失敗則表示遭受到了SQL注入攻擊。
如一個正常的SQL語句:select * from users where name = %name
其中的select / from / where都是我們所說的關鍵字,所有SQL語句在提交web server時,都將進行隨機化的編碼,一個可能的SQL注入語句經過隨機化編碼后可能是:select123 * from123 users where123 name = ‘Mike’ OR 1=1,(標紅的部分是攻擊者提交的構造代碼),由于OR 1=1是攻擊者構造的數據,不會經過系統自身隨機化的編碼,所以待提交數據庫的前置proxy進行解析時,對OR這個關鍵字將得不到正常結果,由此可以判斷攻擊發生。
這種方法的缺點和上面的一樣,都是基于源碼級別的修改,需要擁有和修改程序的源代碼,是一種侵入式的解決方案,并且從上面的架構圖中我們可以看到,這種解決方案的部署較為復雜。
SQL注入的產業界研究成果
基于Signature的關鍵字匹配技術
這是一種在產業界常見的解決方案,著名的免費軟件SNORT就是采用的這種解決方案。該方案的技術出現點是:首先抽取SQL注入過程中都會出現的特殊字符(例如:’ – #等),抽取SQL注入過程經常會出現的SQL關鍵字(例如:’SELECT、UNION等)作為檢測SQL注入的依據。利用上述步驟中提取的特征構建SQL注入特征庫,通過傳統的模式匹配的方式進行檢測。
一個典型的snort規則:
alert tcp $EXTERNAL_NET any -> $HTTP_SERVERS
$HTTP_PORTS ( msg:"SQL Injection Paranoid"; flow:to_server,established;uricontent:".pl";pcre:"/(\%27)|(\’)|(\-\-)|(%23)|(#)/i"; classtype:Web-application-attack; sid:9099; rev:5;)
中間標紅的字段就是檢測數據包中是否含有\ - --等特殊字符。以此來判斷是否產生了SQL注入攻擊。
很顯然這種方法有著極高的漏報和誤報率,比如在USER字段提交Select,將會被認作攻擊行為。并且做了編碼轉換或函數轉換或者是關鍵字跨域之后,攻擊者很容易躲避機械地匹配字符串方式的檢測。
基于異常檢測技術的Web-FireWall
WEB-FireWall是由IMPERVA公司提供的SQL檢測產品,其核心思想是通過學習期的訓練,為Web應用程序自動建立各參數的正常使用模型(URL/COOKIE)。在此后的檢測過程中依據此模型來判斷實際網絡中的各種行為是否異常。
這種方法的優勢在于能夠不受限制的發現各種異常行為。但異常并不意味著攻擊,其誤報率相對來說較高。而且由于需要一個學習期間,在此期間需要一個非常“干凈”的數據來訓練,而且一旦內部的業務模型發生了變化,這個學習過程又需要重新進行。
天清Web應用安全網關系統中的SQL注入防御
啟明星辰公司自主研發的天清Web應用安全網關系統,采用了專利技術的VSID(Venus SQL Injection Detection Algorithm )算法,對SQL注入攻擊有顯著的效果。
VSID算法是一種基于SQL注入攻擊手法的檢測算法,為各種SQL注入方法建立具備行為共性的檢測模型。使用輕型虛擬機預分析技術對提交的URL、Cookie、Post Form進行進一步分析,判斷這些提交信息中是否含有SQL注入攻擊的企圖。
其核心內容是首先收集、分析各種可能的SQL注入攻擊方法,并提取出相應的有針對性的攻擊機理。為這些SQL攻擊方法建立SQL注入檢測模型,所有的的這些檢測虛擬機模型,就叫做VSID算法誤用檢測模型。根據這些虛擬機檢測來自URL\COOKIE\ POST-Form中的各參數域值是否符合SQL注入模型,如果符合則表示發生了SQL注入攻擊。
上圖描述的就是天清Web應用安全網關系統SQL注入檢測流程圖。
VSID算法是一種將規則分析(建立虛擬機檢測規則的過程)和異常分析(符合SQL注入模型的,就是SQL注入攻擊)相結合的技術,是天清Web應用安全網關柔性化檢測的又一體現。
在漏報率和誤報率方面,都遠低于現有產業界和學術界的研究成果,并且作為產品化了的技術,部署和實現方面也有其他方法所不能比擬的優勢。
此外,我們還進行了大量的SQL注入攻擊滲透測試(使用工具,滲透測試人員手動攻擊),天清Web應用安全網關對絕大部分的SQL攻擊都可以實現實時的防御阻斷。另外,在和其他友商的對比競測中,天清WAG也體現出了強大的優勢。
綜論
SQL注入攻擊作為深層威脅的一種,已經越來越多地受到用戶的關注,如何準確、及時的判斷并防御這種危害極大的深層攻擊行為,是Web應用安全網關責無旁貸的責任。這就要求Web應用安全網關本身提供對這種無固定表現形式、種類繁多的攻擊行為的準確檢測。
天清Web應用安全網關依托于啟明星辰的強大入侵分析檢測能力,對各種深層的攻擊行為都有著優異的檢測能力。特別的,對SQL注入這種攻擊行為,更采用了專利技術算法,是當前對各種SQL注入變種/變形進行精確防御達到國際先進水平的入侵防御產品。