《電子技術應用》
您所在的位置:首頁 > 微波|射頻 > 設計應用 > RFID系統(tǒng)中兩階段規(guī)則的SQL注入攻擊防御
RFID系統(tǒng)中兩階段規(guī)則的SQL注入攻擊防御
2015年電子技術應用第5期
邱春紅1,,賈立國2
1.江蘇商貿(mào)職業(yè)學院,,江蘇 南通226011; 2.河北師范大學教務處,,河北 石家莊050024
摘要: SQL注入攻擊是RFID系統(tǒng)的一個重要攻擊方式,,RFID系統(tǒng)的吞吐量較大,,因此其防御方案應具有較高的計算效率,對此提出一種基于兩階段規(guī)則的SQL注入攻擊防御方案,。首先,,按照合法數(shù)據(jù)域建立合法規(guī)則庫;然后,,對RFID標簽中數(shù)據(jù)的格式與內(nèi)容進行檢查,,對非法字符或內(nèi)容予以標記并忽略,;最終,對中間件中動態(tài)生成的SQL請求進行格式與內(nèi)容的檢查,,對不符合SQL口令規(guī)則的請求進行標記并忽略,。試驗結果證明,本算法可成功檢查并防御目前主要類型的注入攻擊,,且計算效率極高,,同時本算法對二次注入攻擊具有免疫性。
中圖分類號: TP393.08
文獻標識碼: A
文章編號: 0258-7998(2015)05-0119-04
Two phases rule based SQL injection attacks prevention schema in RFID system
Qiu Chunhong1,,Jia Liguo2
1.Jiangsu Vocational College of Business,,Nantong 226011,China,; 2.Hebei Normal University Dean′s Office,,Shijiazhuang 050024,China
Abstract: SQL injection attacks is one of the main attack types, the corresponding prevention approach need to be efficient and low cost due to the high throughput of the RFID system, a new detection and prevention approach is proposed based on two phase rule to solve that problem. Firstly, a rule set is set up in accordance with the legal data region. Then, the detection to the layout and the content of the data in the RFID tag is processed, the illegal characters are labeled and discarded. Lastly, the detection to the layout and content of the SQL queries which are generated dynamically are processed, the illegal characters are labeled and discarded. Experimental results prove that proposed approach can successfully detect and prevent the main injection attacks, and has low computation cost, at the same time, the approach can prevent the second order injection.
Key words : SQL injection attack,;RFID system,;second order injection attack;middleware,;malicious user

    

0 引言

    RFID通過將體積較小的RFID標簽置入物體中,,從而實現(xiàn)目標物體的自動識別。目前RFID已廣泛應用于供應鏈等系統(tǒng)中,,改善了供應鏈的時間效率與成本[1-2],。但隨著RFID在商業(yè)生產(chǎn)與物流中的廣泛使用,其安全性成為重要問題,。目前有許多針對RFID系統(tǒng)安全問題的研究,,其中RFID標簽中軟件的漏洞問題是RFID系統(tǒng)與生俱來的安全問題,而SQL注入攻擊[3]是其中一個易受攻擊的關鍵點,。

    本文對此提出一種RFID系統(tǒng)中SQL注入攻擊(SQLIA)的檢測與防御方案,。對RFID標簽數(shù)據(jù)以及SQL請求進行兩階段的檢查:(1)基本數(shù)據(jù)格式與內(nèi)容的檢查;(2)中間件中SQL請求的邏輯檢查,。試驗表明本方案取得了較好的SQLIA的防御效果,,對多種主流攻擊形式均具有免疫能力,同時,,具有較高的計算效率及較好的實用價值,。

1 RFID安全問題介紹

    圖1所示為典型RFID系統(tǒng),其包含常見的后端組件(數(shù)據(jù)庫,、中間件和具體應用)與RFID前端組件(RFID標簽與閱讀器),。當前,大多數(shù)數(shù)據(jù)庫使用SQL語句操作數(shù)據(jù)庫,而對于RFID系統(tǒng),,通常由中間件根據(jù)標簽中的數(shù)據(jù)自動生成相應的SQL語句,。生成的SQL語句一般可直接操作數(shù)據(jù)庫的所有數(shù)據(jù),因此,,具有較大的安全隱患,。

wl2-t1.gif

    圖1中的虛線部分為SQL注入攻擊的常見方法示意圖,SQL攻擊通常將惡意SQL請求代碼嵌入正常SQL請求來實現(xiàn)攻擊,。RFID系統(tǒng)中,,若存在攻擊者,攻擊者可將惡意數(shù)據(jù)存入RFID標簽(可物理侵入或軟件侵入),,更甚者,,攻擊者直接模擬產(chǎn)生新的RFID攻擊標簽(其中包含攻擊數(shù)據(jù)),并使該標簽可被讀卡器識別并閱讀,。中間件將惡意數(shù)據(jù)轉換成惡意SQL語句并轉發(fā)至數(shù)據(jù)庫,,從而破壞數(shù)據(jù)庫。

2 SQL注入攻擊的檢測與防御方案

    RFID網(wǎng)絡系統(tǒng)具有3個天然屬性:

    (1)RFID標簽中的數(shù)據(jù)具有嚴格的格式與結構,,且整個系統(tǒng)中僅中間件模塊生成SQL語句,。

    (2)RFID網(wǎng)絡對SQL請求的格式進行規(guī)范與限制。

    (3)RFID標簽采集數(shù)據(jù)的吞吐量較大,。

    圖2為SQL注入攻擊的檢測與防御方案總體結構,。該方案包含2個階段:(1)規(guī)則建立階段:該階段為不同應用系統(tǒng)建立合適的數(shù)據(jù)檢查的規(guī)則;(2)檢測與防御階段:嚴格執(zhí)行第1階段建立的規(guī)則,。

wl2-t2.gif

2.1 規(guī)則建立

    SQLIA的根本原因是對輸入數(shù)據(jù)的驗證不足,,導致攻擊數(shù)據(jù)對數(shù)據(jù)庫進行非法操作,因此,,檢查RFID標簽所采集的數(shù)據(jù)至關重要,。其中,數(shù)據(jù)檢查包括數(shù)據(jù)的格式與內(nèi)容的雙重檢查,。

2.1.1 數(shù)據(jù)格式與內(nèi)容檢查規(guī)則的建立

    當RFID標簽存儲數(shù)據(jù)時,,建立數(shù)據(jù)格式與內(nèi)容檢查規(guī)則,。本文假設SQL的關鍵字與操作符不會出現(xiàn)在正常RFID標簽數(shù)據(jù)中,。

    格式驗證與內(nèi)容檢查的規(guī)則創(chuàng)建方案如圖3所示。RFID標簽中數(shù)據(jù)通常具有嚴格的結構,,一般為一個連續(xù)的數(shù)據(jù)塊,,將標簽中數(shù)據(jù)的各數(shù)據(jù)域表示為集合形式F={F1,F(xiàn)2,,…,,F(xiàn)n}。在標簽存儲數(shù)據(jù)時,為每個數(shù)據(jù)域Fi∈F分配一個唯一的UID,,并以一定的格式存儲相應的數(shù)據(jù)區(qū)域內(nèi)容,、區(qū)域特征和區(qū)域UID(標記數(shù)據(jù)區(qū)域),并轉發(fā)至中間件,。

wl2-t3.gif

    之后,,為每個數(shù)據(jù)域建立內(nèi)容檢查的規(guī)則。內(nèi)容檢查主要有2個要求:(1)數(shù)據(jù)必須無特殊字符(即SQL語句中缺省符號,,如.,,=,*,,,;);(2)無非法關鍵字,、口令或函數(shù)名(此處的關鍵字和口令定義為數(shù)據(jù)庫管理系統(tǒng)或其他軟件中的關鍵字),。

2.1.2 SQL請求規(guī)則建立

    該步驟位于動態(tài)建立SQL語句的程序中(中間件)。對于每個SQL語句,,通過如下步驟對其結構進行識別:

    (1)識別所有動態(tài)產(chǎn)生的SQL語句:對中間件創(chuàng)建的所有SQL請求均需進行識別操作,。

    (2)對成功識別的SQL請求進行標記:對于成功識別的請求,為其分配給定的唯一標示符,。

    (3)定義請求語法:為每個成功識別的請求抽象其語法結構,,并將其語法加入合法請求列表中。

    (4)存儲成功標記的請求:若成功識別SQL請求,,則標記該請求,。

    與Web網(wǎng)絡系統(tǒng)相比,RFID系統(tǒng)的SQL請求相對簡單,。

2.1.3 自動建立SQL請求與SQL語句的合法性檢查

    檢查數(shù)據(jù)的格式與內(nèi)容是SQLIA最簡單有效的防御方案,,但很多攻擊方式可避開以上數(shù)據(jù)檢查[4],例如通過使用替代編碼機制或較復雜的SQLIA,,攻擊者可避開數(shù)據(jù)檢查機制,。針對此類攻擊方案,本文提出相應的增強方案,,即檢查生成的SQL語句結構,。

    將SQL語句分為不同部分,將用戶數(shù)據(jù)相關的部分刪除,,僅保留SQL語句結構的部分(SQL口令),。將SQL口令分為5種類型:關鍵字、操作符,、標示符,、符號,、注釋。

    (1)關鍵字:DBMS中缺省使用的標示符(“SELECT”,、“FROM”,、“AVG()”等)。

    (2)操作符:DBMS中具有特殊意義的符號(+,,=等),。

    (3)標示符:數(shù)據(jù)庫中出現(xiàn)的特殊名字(表名、列名或變量),。

    (4)數(shù)據(jù):存入數(shù)據(jù)庫中出現(xiàn)相應項的數(shù)據(jù)(如23.56,、12/07/1988)。

    (5)注釋:對數(shù)據(jù)庫無意義的內(nèi)容,。

    前3種口令對于SQL請求的邏輯與結構至關重要,。第3種口令為用戶輸入內(nèi)容,第5種則由編程者輸入,。下面為一個SQL請求的示例:

    INSERT INTO product(tag_id, product_name)

    VALUES(‘tagid’,‘productname’);

其中,,‘tagid’和‘productname’是從RFID標簽中獲得的字串內(nèi)容。對該語句各部分的口令進行分類:

    “INSERT INTO”與“VALUES”為“關鍵字”,;“product”,、“tag_id”與“product_name”為“表示符”;“tagid”與“productname”為“數(shù)據(jù)”,。將“數(shù)據(jù)”部分用“,?”代替,可得:

    INSERT INTO product(tag_id, product_name) VALUES(?,?);

    本方案通過檢查SQL語句的前3種口令是否合法來保證SQL語句的合法性與安全性,。

2.2 SQLIA檢測與防御階段(執(zhí)行)

    系統(tǒng)運行時,,首先讀取標簽中數(shù)據(jù),然后對數(shù)據(jù)進行格式與內(nèi)容的檢查,。從RFID標簽中獲得的數(shù)據(jù)為一連續(xù)數(shù)據(jù)塊,。因此,首先中間件必須識別數(shù)據(jù)塊中每個獨立的域(表示為tdi,,其中i=1,,2,…,,n),;然后為每個數(shù)據(jù)域分配標示符(i),后面利用該標示符從已驗證的數(shù)據(jù)中提取其驗證數(shù)據(jù)(tdi FF),;提取每個數(shù)據(jù)域的特征值(tdivj)(如最大長度,、最小長度,、數(shù)據(jù)類型等),;最終,,其特征值必須與驗證數(shù)據(jù)(tdiffj)匹配,如果匹配則驗證通過,,反之,,將該RFID標簽標記為危險標簽。

    (1)算法1:采集數(shù)據(jù)的格式與內(nèi)容檢測

    wl2-gs1.gif

    然后進行數(shù)據(jù)內(nèi)容檢查,,具體方法為:獲得已驗證數(shù)據(jù)(tdiFF(i=1,,2,…,,n)),,并獲得對應合法關鍵字tdiK,然后分析tdi,,觀察數(shù)據(jù)中是否包含非法內(nèi)容,。如果無非法內(nèi)容,則檢查通過,;反之,,忽略該請求。

    (2)算法2為SQL請求合法性檢測偽代碼,。SQLIA向RFID標簽注入附加的代碼,,因此,成功的注入攻擊將導致SQL請求的總結構與合法請求的結構有所差異,。本算法可動態(tài)產(chǎn)生請求,,并同時防止非法請求的執(zhí)行。

    算法2:請求結構驗證

    wl2-gs2.gif

    該算法接收動態(tài)產(chǎn)生的SQL請求(GQ)和對應的ID產(chǎn)生驗證后的請求,。當收到請求時,,調用DBMS請求分析函數(shù)(QueryParser)對GQ進行分析,使用GQp產(chǎn)生實際的請求結構(QSa),,然后利用ID來獲得相應的合法請求結構QSl,,最終將QSl與QSa比較。如果兩者不匹配,,則拒絕該請求,,反之,則執(zhí)行該請求,。

    與其他SQL請求匹配技術相比本算法有以下優(yōu)勢:(1)本算法僅進行字串的比較,,其他算法有些比較XML等文檔內(nèi)容,因此本算法實現(xiàn)較簡單,;(2)字串的比較計算開銷較低,。對于RFID系統(tǒng),通常RFID標簽數(shù)量眾多,,而且采集的數(shù)據(jù)也極多,,如果計算開銷較大將不適合實際應用,。

3 數(shù)值試驗結果與分析

    試驗主要測試SQL請求識別的2個關鍵性能:

    (1)未成功檢測的SQLIA的百分比;

    (2)錯誤檢測的SQLIA的百分比(將正確SQL檢測為SQLIA),。

    試驗中采用3種類型的SQL語句(RFID系統(tǒng)主要的請求類型):SELECT,、UPDATE、INSERT,。為此,,分別選取大量不同的請求,且復雜程度均不同,。

    文獻[5]對不同數(shù)據(jù)庫(MySQL,、Postgres、Oracles,、SQL Server)均進行了試驗,,并獲得了較理想的效果。本試驗采用文獻[5]的試驗環(huán)境,,對多個數(shù)據(jù)庫進行試驗,。

3.1 攻擊請求檢測

    試驗共選取500個不同請求,對其中170個請求作處理將其變?yōu)楣粽埱?。?所示為170個正常請求:68個“select”型請求,、61個“update”型請求、41個“insert”型請求,。分別采用重言式攻擊,、聯(lián)合查詢注入攻擊、后置貪心攻擊,、編碼變換攻擊與注釋請求攻擊對上述3種請求進行處理,,獲得170個攻擊請求。分別設置攻擊請求所占百分比(5%,、10%,、15%…、35%)作分組試驗(每組試驗共執(zhí)行500次請求),。

wl2-b1.gif

    試驗結果如圖4所示,,本算法成功識別所有攻擊請求。因本算法具有兩階段嚴格檢查,,所以成功防御所有類型的注入攻擊,。雖然其他部分算法也獲得了較高的成功率,但本算法的計算效率更高,。

wl2-t4.gif

3.2 本算法的計算開銷

    對于RFID的高吞吐量特性,,安全檢測的效率是一個關鍵參數(shù)。將本算法與無安全檢測的方案進行對比試驗,,比較兩種算法的CPU執(zhí)行時間,。試驗中,,兩個試驗均執(zhí)行10 000個請求,每組試驗運行20次取平均值,。

    圖5所示為試驗結果,可看出本算法的開銷極小,,原因在于本算法僅對數(shù)據(jù)進行檢查,,計算復雜度極低。因此本算法適合RFID高吞吐量的應用場景,。

wl2-t5.gif

4 小結

    隨著RFID系統(tǒng)的廣泛應用,,其安全性問題日益重要,本文對此提出一種基于兩階段的防御方案,,即對采集數(shù)據(jù)的格式與內(nèi)容進行檢查,;對動態(tài)生成的SQL請求進行格式與內(nèi)容的檢查。由于本方案均對數(shù)據(jù)(字符串)進行處理,,因此具有較好的計算效率,,適用于大規(guī)模、高吞吐量的RFID系統(tǒng),。

參考文獻

[1] 蔣浩,,高春華,張林,,等.一種基于RFID的室內(nèi)車載監(jiān)控系統(tǒng)定位方法的設計與實現(xiàn)[J].計算機科學,,2012,39(2):29-33.

[2] 陳宇錚,,湯仲喆,,倪云峰,等.基于RFID的冷鏈物流監(jiān)測系統(tǒng)的設計[J].計算機應用與軟件,,2013,,30(2):263-265.

[3] 李雪,唐文,,張華.一種新的Web應用防火墻的自學習模型[J].小型微型計算機系統(tǒng),,2014(3):.

[4] HALFOND W G J,ORSO A.AMNESIA:analysis and monitoring for NEutralizing SQL-injection attacks[C].Proceedings of the 20th IEEE/ACM international Conference on Automated Software Engineering.ACM,,2005:174-183.

[5] RIEBACK M R,,SIMPSON P N D,CRISPO B,,et al.RFID malware:design principles and examples[J].Pervasive and Mobile Computing,,2006,2(4):405-426.

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