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

中文引用格式: 王民川,管磊. 面向RFID系統(tǒng)的SQL注入攻擊檢測和防御算法[J].電子技術(shù)應(yīng)用,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 引言

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

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

  1 SQL注入攻擊問題

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

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

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

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

  (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(動(dòng)態(tài)SQL查詢):給定應(yīng)用程序P和n條輸入數(shù)據(jù)d1,d2,…,dn,通過映射RFID標(biāo)簽輸入到常量查詢字符串,P構(gòu)建動(dòng)態(tài)SQL查詢q:

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

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

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

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

  (2)大小符合:M<F

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

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

001.jpg

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

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

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

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

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

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

002.jpg

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

  2.2 SQL注入攻擊檢測和防御

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

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

  算法1:SQLIA檢測算法

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

  2.BEGIN

  3.  Q←SQL中查詢集

  4.  FOREACH  qi∈Q DO

  5.計(jì)算M和F

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

  7.  I←qi中標(biāo)識(shí)符集

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

  GVW[M2E1WQN6I)~KW0G0L}B.png

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

  2.2.2 意圖符合

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

  5RM7]WTUT%EZXW5@HH7PAHP.jpg

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

  2.2.3 標(biāo)識(shí)符符合

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

  強(qiáng)制執(zhí)行下列兩個(gè)數(shù)據(jù)完整性驗(yàn)證規(guī)則:

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

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

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

  (6)

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

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

  算法2:標(biāo)識(shí)符符合檢測算法

  1.輸入:D,I,R

  2.輸出: clean=True

  3.BEGIN

  4.  IF(R∩D)THEN

  5.clean=False;EXIT

  6.  ENDIF

  7.  FOR 每個(gè)標(biāo)識(shí)符 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 實(shí)驗(yàn)結(jié)果與分析

  3.1 實(shí)驗(yàn)環(huán)境

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

003.jpg

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

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

  3.2 SQLIA檢測結(jié)果

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

004.jpg

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

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

3.3 比較及分析

  3.3.1 耗時(shí)比較

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

005.jpg

  從表1可看出,本文算法消耗時(shí)間僅為節(jié)點(diǎn)序列比對算法的29.7%,僅為快速比對算法的76.0%,體現(xiàn)了本文算法的高效率。結(jié)果表明,本文算法對系統(tǒng)的額外開銷很少,因?yàn)楸疚乃惴ㄊ褂煤唵巫址容^。

  3.3.2 檢測性能比較

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

006.jpg

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

4 結(jié)束語

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

參考文獻(xiàn)

  [1] 白婷,黃春明,李楠,等.基于RFID的局域網(wǎng)安全管理的研究[J].計(jì)算機(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] 楊曉明,張翔,王佳昊,等.基于有限自動(dòng)機(jī)的RFID入侵檢測[J].電子科技大學(xué)學(xué)報(bào),2014,43(5):775-780.

  [8] 田蕓,陳恭亮,李建華.針對RFID身份認(rèn)證協(xié)議——ARAP協(xié)議的攻擊及改進(jìn)[J].中國電子科學(xué)研究院學(xué)報(bào),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].華中科技大學(xué)學(xué)報(bào)(自然科學(xué)版),2013,41(4):


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