《電子技術(shù)應用》
您所在的位置:首頁 > 微波|射頻 > 設計應用 > 面向RFID系統(tǒng)的SQL注入攻擊檢測和防御算法
面向RFID系統(tǒng)的SQL注入攻擊檢測和防御算法
2015年電子技術(shù)應用第10期
王民川1,管 磊2
(1.中州大學,河南 鄭州450007;2.河南廣播電視大學,河南 鄭州450008)
摘要: 針對RFID系統(tǒng)中傳統(tǒng)的SQL注入攻擊(SQLIA)檢測算法成本較高且檢測率較低的問題,提出了一種基于數(shù)據(jù)完整性策略的SQL注入攻擊檢測和防御算法。利用數(shù)據(jù)完整性策略,確保輸入數(shù)據(jù)為強類型、語法正確、在長度邊界內(nèi)、僅包含允許的字符、正確簽名數(shù)字且數(shù)字在范圍邊界內(nèi)等約束,以防御SQL注入攻擊。通過檢測查詢是否符合意圖符合條件、大小符合條件和標識符符合條件來檢測SQL注入攻擊。實驗結(jié)果顯示,算法具有較高的執(zhí)行效率,消耗時間僅為節(jié)點序列比對算法的29.7%,僅為快速比對算法的76.0%。算法的檢測率比常用的檢測工具BSQL Hacker和Pangolin分別高出13.8%和20.6%,表明本算法能夠保證正常查詢,可有效檢測和防御SQL注入攻擊。
中圖分類號: TP391
文獻標識碼: A
DOI:10.16157/j.issn.0258-7998.2015.10.030

中文引用格式: 王民川,管磊. 面向RFID系統(tǒng)的SQL注入攻擊檢測和防御算法[J].電子技術(shù)應用,2015,41(10):111-114.
英文引用格式: Wang Minchuan,Guan Lei. A detection and prevention algorithm of SQL injection attacks for RFID system[J].Application of Electronic Technique,2015,41(10):111-114.
A detection and prevention algorithm of SQL injection attacks for RFID system
Wang Minchuan1,Guan Lei2
1.Zhongzhou University,Zhengzhou 450007,China;2.Henan Radio & Television University,Zhengzhou 450008,China
Abstract: For the issues that traditional SQL injection attacks(SQLIA) detection algorithms has high cost and low detection rate in RFID system, a detection and prevention algorithm of SQL injection attacks based on data integrity policy is proposed. It uses data integrity policy to ensure that the data is strongly typed, correct syntax, within length boundaries, contains only permitted characters, and that numbers are correctly signed and within range boundaries, to prevent SQLIA attacks. It detects the SQL injection attacks by observe whether the intention conformity condition, the size conformity condition and the identifier conformity condition observe the intention conformity condition, the size conformity condition and the identifier conformity condition. The experimental results show that proposed algorithm has high execution efficiency. The consumption time of proposed algorithm is only 29.7% of node sequence alignment algorithm and 76.0% of fast alignment algorithm. The detection rete of proposed algorithm is higher than two commonly used detection tools BSQL Hacker and Pangolin with 13.8% and 20.6%, respectively, which indicates that proposed algorithm can ensure the normal query and effectively detect and defense the SQL injection attacks.
Key words : RFID system;detection of SQL injection attack;data integrity policy;attacks prevention

  

0 引言

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

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

  1 SQL注入攻擊問題

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

  已知:動態(tài)產(chǎn)生SQL查詢q和I=t1,t2,…,tn輸入數(shù)據(jù)集;

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

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

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

  (c)q能執(zhí)行企業(yè)數(shù)據(jù)庫的數(shù)據(jù)插入、數(shù)據(jù)更新、數(shù)據(jù)刪除和數(shù)據(jù)檢索操作。

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

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

  q←P(d1,d2,…,dn)(1)

  部分查詢靜態(tài)配置于中間件中,而其他部分從輸入?yún)?shù)導出。

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

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

  (2)大小符合:M<F

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

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

001.jpg

  圖1描述了提出的SQLIA檢測和防御算法的整體結(jié)構(gòu),包含數(shù)據(jù)完整性策略、意圖符合、大小符合和SQL符合部分。

  2.1 數(shù)據(jù)完整性策略

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

  I=〈k1〈P〉,…,kn〈P〉〉(2)

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

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

002.jpg

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

  2.2 SQL注入攻擊檢測和防御

  本文算法使用有關(guān)SQL語法知識的架構(gòu)和策略檢測一個查詢是否為SQLIA,如算法1所示。算法的輸入為動態(tài)產(chǎn)生的SQL語句、從RFID標簽獲得的數(shù)據(jù)集D={d1,d2,…,dm}和用于程序P生成SQL的輸入?yún)?shù)集S={t1,t2,…,tn}。

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

  算法1:SQLIA檢測算法

  1.輸入: SQL,D={d1,d2,…,dm},S={t1,t2,…,tn}

  2.BEGIN

  3.  Q←SQL中查詢集

  4.  FOREACH  qi∈Q DO

  5.計算M和F

  6.IF(M≥F)∧(qiD)THEN

  7.  I←qi中標識符集

  8.  IC=IdentifierConformity(I,D,S)

  9.  IF (IC==FALSE) THEN

  10.REJECT;EXIT

  11.ENDIF

  12.  ENDIF

  13.ENDFOR

  14.END

  2.2.1 大小符合

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

  GVW[M2E1WQN6I)~KW0G0L}B.png

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

  2.2.2 意圖符合

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

  5RM7]WTUT%EZXW5@HH7PAHP.jpg

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

  2.2.3 標識符符合

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

  強制執(zhí)行下列兩個數(shù)據(jù)完整性驗證規(guī)則:

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

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

  Operation integrity:(di.op≠ki.op)∧(di.artry≠ki.artry)

  (6)

  Type integrity(di.type≠ki.type)∧(di.size≠ki.size)(7)

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

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

  1.輸入:D,I,R

  2.輸出: clean=True

  3.BEGIN

  4.  IF(R∩D)THEN

  5.clean=False;EXIT

  6.  ENDIF

  7.  FOR 每個標識符 ki∈I DO

  8.IF(di.op≠ki.op)∧(di.artry≠ki.artry)THEN

  9.  clean=False;EXIT

  10.ELSEIF(ki∈I≠table)THEN

  11.  IF((di.type≠ki.type)∧(di.size≠ki.size))THEN

  12.clean=False;EXIT

  13.  ENDIF

  14.ENDIF

  15.  ENDFOR

  16.END算法

3 實驗結(jié)果與分析

  3.1 實驗環(huán)境

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

003.jpg

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

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

  3.2 SQLIA檢測結(jié)果

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

004.jpg

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

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

3.3 比較及分析

  3.3.1 耗時比較

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

005.jpg

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

  3.3.2 檢測性能比較

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

006.jpg

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

4 結(jié)束語

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

參考文獻

  [1] 白婷,黃春明,李楠,等.基于RFID的局域網(wǎng)安全管理的研究[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 InformationConference(SAI),2013.IEEE,2013:406-410.

  [6] ABAWAJY J,F(xiàn)ERNANDO H.Policy-based SQLIA detectionand prevention approach for RFID systems[J].Computer Standards & Interfaces,2015,38(3):64-71.

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

  [8] 田蕓,陳恭亮,李建華.針對RFID身份認證協(xié)議——ARAP協(xié)議的攻擊及改進[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安全協(xié)議的數(shù)據(jù)去同步化攻擊[J].華中科技大學學報(自然科學版),2013,41(4):


此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。