?

面向RFID系統的SQL注入攻擊檢測和防御算法

2015-02-23 07:01王民川
電子技術應用 2015年10期
關鍵詞:符合條件標識符中間件

王民川 ,管 磊

(1.中州大學,河南 鄭州 450007;2.河南廣播電視大學,河南 鄭州 450008)

0 引言

射頻識別(Radio Frequency Identification,RFID)技術是一種標簽技術[1],它能夠自動識別不在視線內的實體,大大提高了自動化效率[2]。然而,RFID系統存在許多安全性問題,其中一個主要問題為SQL注入攻擊(SQL Injection Attacks,SQLIA)[3,4],增 加 了 RFID 標 簽 的 潛 在 威脅[5]。因此,檢測和防御RFID系統中 SQLIA對 RFID的應用至關重要。文獻[6]提出了一種基于數據完整性策略的SQL攻擊檢測算法,通過運行監控確保產生的查詢符合條件,一定程度上提高了安全性。然而,該算法期望存在原始SQL結構,需要人工干預建立所有組件,成本較高。

本文提出一種新的SQL注入攻擊的檢測和防御算法,利用數據完整性策略和意圖符合條件、大小符合條件和標識符符合條件來檢測和防御SQL注入攻擊。實驗結果表明了本算法的有效性及高效性。

1 SQL注入攻擊問題

擁有RFID惡意軟件檢測和防御機制對于維護能RFID系統非常重要[7],本文中SQLIA問題如下[8]:

已知:動態產生 SQL查詢q和I=t1,t2,…,tn輸入數據集;

問題:SQLIA檢測問題是設計一種算法A,在下列約束下確定q是否為SQL注入攻擊:

(a)I=t1,t2,…,tn輸入數據集僅來源于 RFID標簽;

(b)中間件基于I=t1,t2,…,tn輸入數據集生成q;

(c)q能執行企業數據庫的數據插入、數據更新、數據刪除和數據檢索操作。

2 提出的SQLIA檢測和防御算法

定義 1(動態 SQL查詢):給定應用程序 P和n條輸入數據d1,d2,…,dn,通過映射 RFID標簽輸入到常量查詢字符串,P構建動態SQL查詢q:

部分查詢靜態配置于中間件中,而其他部分從輸入參數導出。

定義 2(惡意 SQL):將利用源自 RFID標簽的輸入d1,d2,…,dn數據形成的動態 SQL查詢q,若滿足下列任意條件,則視為惡意SQL:

(1)意圖符合:substr(qi)∈{substr(d1),…,substr(dm)}

(2)大小符合:M<F

(3)標識符符合:di.v?ki.v|v∈{op,artry,type,size}

意圖符合條件確保正常SQL語句不能是用于產生動態查詢的程序的輸入字符串元素。大小符合條件確保輸入數據的大小(F)不能大于標識符數據的大小(M)。標識符符合條件嚴格限制每個輸入數據(如d1,d2,…,dm),使其遵守標識符的屬性。

圖1描述了提出的SQLIA檢測和防御算法的整體結構,包含數據完整性策略、意圖符合、大小符合和SQL符合部分。

圖1 RFID SQLIA檢測和防御方案架構

2.1 數據完整性策略

SQLIA攻擊依賴于不合法結構的數據成功輸入,為了解決這一問題,使用數據完整性策略在數據庫標識符值上定義一組約束,每個動態生成的SQL語句包含一組標識符:

每個標識符ki∈I有一組屬性ki〈P〉=〈p1,…,pn〉,例如數據類型和數據位允許的最大尺寸。

這種策略用以確保數據為強類型、語法正確、在長度邊界內、僅包含允許的字符、正確簽名數字且數字在范圍邊界內。策略對每個標識符使用一組數據完整性規則,通過驗證每個標識符聲明的屬性來定義這些輸入數據完整性規則。

圖2為使用巴科斯范式表示系統標識符的約束,“op”性質規定“創建、讀、更新、刪除”中的哪些操作允許在標識符上執行。SQL編程中,4個基本函數(創建、讀、更新 、刪除)對應 于 INSERT、SELECT、UPDATE(SET)和DELETE[9]。類型性質規定無論它們持有什么,都將視為字符串或數值,而不是任意代碼。大小性質規定可存儲的數字或字符的最大數量。

圖2 巴科斯范式(BNF)表示

2.2 SQL注入攻擊檢測和防御

本文算法使用有關SQL語法知識的架構和策略檢測一個查詢是否為SQLIA,如算法1所示。算法的輸入為動態產生的SQL語句、從RFID標簽獲得的數據集D={d1,d2,…,dm}和用于程序 P生成 SQL的輸入參數集S={t1,t2,…,tn}。

在運行過程中,當由中間件產生的SQL查詢的語法結構與RFID應用程序開發者所設定的SQL語法結構不同時,SQL注入攻擊發生。將SQL語句寫成查詢集Q={q1,q2,… ,qn},使 用 分 號 “;”和 注 釋 “—”作 為 代 碼 內 多個查詢的分隔符,然后處理每個查詢qi∈Q(一次一個),若任一查詢qi∈Q不遵守意圖符合條件、大小符合條件和標識符符合條件,則拒絕該SQL語句。

算法1:SQLIA檢測算法

2.2.1 大小符合

期望和實際輸入數據的大小能夠表示純凈SQL語法和受污染SQL語法之間的差異,每個動態生成的SQL語句包括一組標識符I=k1,…,kn,每個標識符ki∈I有一組屬性P=p1,…,pn,其中一個為允許標識符持有的數據最大尺寸。該算法計算輸入字符串的總大小(即d1,d2,…,d|D|)和標識符允許的總 數據大 小(即k1,k2,…,k|I|),如下:

若實際輸入和期望輸入不匹配或存在空數據輸入時,設置F=0。對于滿足大小符合約束的查詢qi∈Q,輸入數據的總和不能超過設計時定義的參數總大小。

2.2.2 意圖符合

將 SQL語句劃分為一組獨立 SQL語句Q={q1,q2,…,qn},對于每個查詢qi∈Q,算法檢查是否符合下列意圖符合條件:

式(5)規定qi∈Q不能為輸入字符串的元素,若查詢qi∈Q不符合意圖符合條件,則拒絕原始SQL語句。

2.2.3 標識符符合

算法2描述了針對每個查詢qi∈Q執行的標識符符合算法的偽代碼,算法的輸入為RFID標簽數據集D={d1,d2,…,dm}、例如保留關鍵字和操作符的非文本標記集R={t1,t2,…,tn}和標識符集I={k1,k2,…,kn}。

強制執行下列兩個數據完整性驗證規則:

(1)如 果D={d1,d2,… ,dm}和R={t1,t2, … ,tn}的 交 集非空,則認為輸入數據受到污染,拒絕SQL語句。

(2)對于每個ki∈I,檢查下列操作和類型完整性條件:

若不滿足上述兩個條件任一條,則拒絕SQL語句。

算法2:標識符符合檢測算法

3 實驗結果與分析

3.1 實驗環境

為了評估提出的SQLIA檢測和防御算法的性能,構建模塊化測試平臺,如圖3所示。

圖3 RFID實驗環境

實驗使用的RFID系統是UHF RFID閱讀器和SkyeTek、Intermec公司的兩類標簽。本文創建了三個虛擬克隆RFID標簽,用來發送各種類型SQLIA。中間件運行在筆記本電腦上,使用MySQL數據庫,中間件通過MySQLC API連接到數據庫。

實驗測試了可能在RFID系統中動態生成的各類SQL 查詢(例如 SELECT、UPDATE、INSERT),通過克隆標簽和合法標簽產生的700個SQL注入攻擊和1 300個合法請求,組成大約2 000個查詢來測試提出的算法。其中,SQL注入攻擊包含一些攻擊類型(如重言式、聯合查詢、后置貪心查詢等)。

3.2 SQLIA檢測結果

實驗運行2 000個查詢,共有700種惡意查詢,包括280個SELECT類查詢、251個 UPDATE類查詢和 169個INSERT類查詢,惡意查詢的比例可從5%至35%之間變化。

圖4描述了在存在不同比例惡意查詢情況下,接受和拒絕查詢的百分比。結果表明,由于所有惡意查詢至少不滿足意圖符合、大小符合、標識符符合條件之一,采用三個條件連同數據完整性策略能夠有效的遏制SQLIA,同時很好地保證了合法查詢。

圖4 SQLIA查詢檢測性能評估

當查詢不符合意圖符合、大小符合、標識符符合條件之一時,算法就會跳過其他過濾條件,直接判斷為惡意查詢,從而大大降低了算法開銷,提高了性能。

3.3 比較及分析

3.3.1 耗時比較

在互聯網上選取一個存在SQL注入漏洞的網頁,將本文算法與基于節點序列的比對算法[4]、快速比對算法[6]進行比較,處理100到 10 000個查詢,運行 200次,取各個算法查詢時間的平均值,如表1所示。

從表1可看出,本文算法消耗時間僅為節點序列比對算法的29.7%,僅為快速比對算法的76.0%,體現了本文算法的高效率。結果表明,本文算法對系統的額外開銷很少,因為本文算法使用簡單字符串比較。

表1 算法消耗時間

3.3.2 檢測性能比較

將本文算法在攻擊檢測系統中的有效性與當前常用的兩款檢測工具 BSQL Hacker[9]和 Pangolin[10]進行比較,分別對測試樣本進行檢測。首先通過表2的關鍵語句在Google中搜索出一定的URL以構建測試樣本集,然后對獲取的URL測試樣本進行SQL攻擊檢測,根據對獲取的URL添加不同的注入命令的返回頁面與正常頁面的異同來判定URL是否存在攻擊。判定后,采取措施進行攻擊防御,檢測結果如表3所示。

表2 關鍵語句

表3 不同檢測工具的結果比較

從表3可看出,本文工具的消耗時間略多于其他兩種攻擊,但檢測到的URL總數明顯最多,且檢測率分別比BSQL Hacker和Pangolin高13.8%和20.6%,表明本文算法能夠保證正常查詢,可有效檢測和防御SQL注入攻擊。

4 結束語

本文提出一種能夠準確檢測并防御RFID系統中的SQL注入攻擊算法,利用數據完整性策略來防御SQLIA攻擊。通過檢測查詢是否符合意圖符合條件、大小符合條件和標識符符合條件來檢測SQL注入攻擊。本文算法成功阻止了所有攻擊,并保證了所有合法的查詢。相比現有的檢測算法和檢測工具,本文算法簡單有效,具有程序計算開銷低、檢測率高等優點。

[1]白婷,黃春明,李楠,等.基于 RFID的局域網安全管理的研究[J].計算機測量與控制,2012,20(4):1067-1069.

[2]MAHDIN H,ABAWAJY J.An approach for removing redundant data from RFID data streams[J].Sensors,2011,11(10):9863-9877.

[3]FERNANDO H,ABAWAJY J.Securing RFID systems from SQLIA[C].Algorithms and architectures for parallel processing.Springer Berlin Heidelberg.2011:245-254.

[4]ABAWAJY J.SQLIA detection and prevention approach for RFID systems[J].Journal of Systems and Software,2013,86(3):751-758.

[5]DOGBE E,MILLHAM R,SINGH P.A combined approach to prevent SQL injection attacks[C].Science and Information Conference(SAI),2013.IEEE,2013:406-410.

[6]ABAWAJY J,FERNANDO H.Policy-based SQLIA detection and prevention approach for RFID systems[J].Computer Standards&Interfaces,2015,38(3):64-71.

[7]楊曉明,張翔,王佳昊,等.基于有限自動機的RFID入侵檢測[J].電子科技大學學報,2014,43(5):775-780.

[8]田蕓,陳恭亮,李建華.針對RFID身份認證協議——ARAP協議的攻擊及改進[J].中國電子科學研究院學報,2012,6(6):556-560.

[9]LEE I,JEONG S,YEO S,et al.A novel method for SQL injection attack detection based on removing SQL query attribute values[J].Mathematical and Computer Modelling,2012,55(1):58-68.

[10]曹崢,馬建峰,楊林,等.RFID安全協議的數據去同步化攻擊[J].華中科技大學學報(自然科學版),2013,41(4):65-69.

猜你喜歡
符合條件標識符中間件
基于底層虛擬機的標識符混淆方法
一次有趣的探究之旅
基于區塊鏈的持久標識符系統①
對一道競賽題答案的質疑與探究
RFID中間件技術及其應用研究
基于Android 平臺的OSGi 架構中間件的研究與應用
一道全國高中數學聯賽二試題的另一種解法
科研人員唯一標識符的理論研究現狀剖析
數字圖書館推廣工程唯一標識符體系構建研究*
中間件在高速公路領域的應用
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合