《电子技术应用》
您所在的位置:首页 > 微波|射频 > 设计应用 > RFID系统中两阶段规则的SQL注入攻击防御
RFID系统中两阶段规则的SQL注入攻击防御
2015年电子技术应用第5期
邱春红1,贾立国2
1.江苏商贸职业学院,江苏 南通226011; 2.河北师范大学教务处,河北 石家庄050024
摘要: SQL注入攻击是RFID系统的一个重要攻击方式,RFID系统的吞吐量较大,因此其防御方案应具有较高的计算效率,对此提出一种基于两阶段规则的SQL注入攻击防御方案。首先,按照合法数据域建立合法规则库;然后,对RFID标签中数据的格式与内容进行检查,对非法字符或内容予以标记并忽略;最终,对中间件中动态生成的SQL请求进行格式与内容的检查,对不符合SQL口令规则的请求进行标记并忽略。试验结果证明,本算法可成功检查并防御目前主要类型的注入攻击,且计算效率极高,同时本算法对二次注入攻击具有免疫性。
中图分类号: 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标签置入物体中,从而实现目标物体的自动识别。目前RFID已广泛应用于供应链等系统中,改善了供应链的时间效率与成本[1-2]。但随着RFID在商业生产与物流中的广泛使用,其安全性成为重要问题。目前有许多针对RFID系统安全问题的研究,其中RFID标签中软件的漏洞问题是RFID系统与生俱来的安全问题,而SQL注入攻击[3]是其中一个易受攻击的关键点。

    本文对此提出一种RFID系统中SQL注入攻击(SQLIA)的检测与防御方案。对RFID标签数据以及SQL请求进行两阶段的检查:(1)基本数据格式与内容的检查;(2)中间件中SQL请求的逻辑检查。试验表明本方案取得了较好的SQLIA的防御效果,对多种主流攻击形式均具有免疫能力,同时,具有较高的计算效率及较好的实用价值。

1 RFID安全问题介绍

    图1所示为典型RFID系统,其包含常见的后端组件(数据库、中间件和具体应用)与RFID前端组件(RFID标签与阅读器)。当前,大多数数据库使用SQL语句操作数据库,而对于RFID系统,通常由中间件根据标签中的数据自动生成相应的SQL语句。生成的SQL语句一般可直接操作数据库的所有数据,因此,具有较大的安全隐患。

wl2-t1.gif

    图1中的虚线部分为SQL注入攻击的常见方法示意图,SQL攻击通常将恶意SQL请求代码嵌入正常SQL请求来实现攻击。RFID系统中,若存在攻击者,攻击者可将恶意数据存入RFID标签(可物理侵入或软件侵入),更甚者,攻击者直接模拟产生新的RFID攻击标签(其中包含攻击数据),并使该标签可被读卡器识别并阅读。中间件将恶意数据转换成恶意SQL语句并转发至数据库,从而破坏数据库。

2 SQL注入攻击的检测与防御方案

    RFID网络系统具有3个天然属性:

    (1)RFID标签中的数据具有严格的格式与结构,且整个系统中仅中间件模块生成SQL语句。

    (2)RFID网络对SQL请求的格式进行规范与限制。

    (3)RFID标签采集数据的吞吐量较大。

    图2为SQL注入攻击的检测与防御方案总体结构。该方案包含2个阶段:(1)规则建立阶段:该阶段为不同应用系统建立合适的数据检查的规则;(2)检测与防御阶段:严格执行第1阶段建立的规则。

wl2-t2.gif

2.1 规则建立

    SQLIA的根本原因是对输入数据的验证不足,导致攻击数据对数据库进行非法操作,因此,检查RFID标签所采集的数据至关重要。其中,数据检查包括数据的格式与内容的双重检查。

2.1.1 数据格式与内容检查规则的建立

    当RFID标签存储数据时,建立数据格式与内容检查规则。本文假设SQL的关键字与操作符不会出现在正常RFID标签数据中。

    格式验证与内容检查的规则创建方案如图3所示。RFID标签中数据通常具有严格的结构,一般为一个连续的数据块,将标签中数据的各数据域表示为集合形式F={F1,F2,…,Fn}。在标签存储数据时,为每个数据域Fi∈F分配一个唯一的UID,并以一定的格式存储相应的数据区域内容、区域特征和区域UID(标记数据区域),并转发至中间件。

wl2-t3.gif

    之后,为每个数据域建立内容检查的规则。内容检查主要有2个要求:(1)数据必须无特殊字符(即SQL语句中缺省符号,如.,=,*,;);(2)无非法关键字、口令或函数名(此处的关键字和口令定义为数据库管理系统或其他软件中的关键字)。

2.1.2 SQL请求规则建立

    该步骤位于动态建立SQL语句的程序中(中间件)。对于每个SQL语句,通过如下步骤对其结构进行识别:

    (1)识别所有动态产生的SQL语句:对中间件创建的所有SQL请求均需进行识别操作。

    (2)对成功识别的SQL请求进行标记:对于成功识别的请求,为其分配给定的唯一标示符。

    (3)定义请求语法:为每个成功识别的请求抽象其语法结构,并将其语法加入合法请求列表中。

    (4)存储成功标记的请求:若成功识别SQL请求,则标记该请求。

    与Web网络系统相比,RFID系统的SQL请求相对简单。

2.1.3 自动建立SQL请求与SQL语句的合法性检查

    检查数据的格式与内容是SQLIA最简单有效的防御方案,但很多攻击方式可避开以上数据检查[4],例如通过使用替代编码机制或较复杂的SQLIA,攻击者可避开数据检查机制。针对此类攻击方案,本文提出相应的增强方案,即检查生成的SQL语句结构。

    将SQL语句分为不同部分,将用户数据相关的部分删除,仅保留SQL语句结构的部分(SQL口令)。将SQL口令分为5种类型:关键字、操作符、标示符、符号、注释。

    (1)关键字:DBMS中缺省使用的标示符(“SELECT”、“FROM”、“AVG()”等)。

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

    (3)标示符:数据库中出现的特殊名字(表名、列名或变量)。

    (4)数据:存入数据库中出现相应项的数据(如23.56、12/07/1988)。

    (5)注释:对数据库无意义的内容。

    前3种口令对于SQL请求的逻辑与结构至关重要。第3种口令为用户输入内容,第5种则由编程者输入。下面为一个SQL请求的示例:

    INSERT INTO product(tag_id, product_name)

    VALUES(‘tagid’,‘productname’);

其中,‘tagid’和‘productname’是从RFID标签中获得的字串内容。对该语句各部分的口令进行分类:

    “INSERT INTO”与“VALUES”为“关键字”;“product”、“tag_id”与“product_name”为“表示符”;“tagid”与“productname”为“数据”。将“数据”部分用“?”代替,可得:

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

    本方案通过检查SQL语句的前3种口令是否合法来保证SQL语句的合法性与安全性。

2.2 SQLIA检测与防御阶段(执行)

    系统运行时,首先读取标签中数据,然后对数据进行格式与内容的检查。从RFID标签中获得的数据为一连续数据块。因此,首先中间件必须识别数据块中每个独立的域(表示为tdi,其中i=1,2,…,n);然后为每个数据域分配标示符(i),后面利用该标示符从已验证的数据中提取其验证数据(tdi FF);提取每个数据域的特征值(tdivj)(如最大长度、最小长度、数据类型等);最终,其特征值必须与验证数据(tdiffj)匹配,如果匹配则验证通过,反之,将该RFID标签标记为危险标签。

    (1)算法1:采集数据的格式与内容检测

    wl2-gs1.gif

    然后进行数据内容检查,具体方法为:获得已验证数据(tdiFF(i=1,2,…,n)),并获得对应合法关键字tdiK,然后分析tdi,观察数据中是否包含非法内容。如果无非法内容,则检查通过;反之,忽略该请求。

    (2)算法2为SQL请求合法性检测伪代码。SQLIA向RFID标签注入附加的代码,因此,成功的注入攻击将导致SQL请求的总结构与合法请求的结构有所差异。本算法可动态产生请求,并同时防止非法请求的执行。

    算法2:请求结构验证

    wl2-gs2.gif

    该算法接收动态产生的SQL请求(GQ)和对应的ID产生验证后的请求。当收到请求时,调用DBMS请求分析函数(QueryParser)对GQ进行分析,使用GQp产生实际的请求结构(QSa),然后利用ID来获得相应的合法请求结构QSl,最终将QSl与QSa比较。如果两者不匹配,则拒绝该请求,反之,则执行该请求。

    与其他SQL请求匹配技术相比本算法有以下优势:(1)本算法仅进行字串的比较,其他算法有些比较XML等文档内容,因此本算法实现较简单;(2)字串的比较计算开销较低。对于RFID系统,通常RFID标签数量众多,而且采集的数据也极多,如果计算开销较大将不适合实际应用。

3 数值试验结果与分析

    试验主要测试SQL请求识别的2个关键性能:

    (1)未成功检测的SQLIA的百分比;

    (2)错误检测的SQLIA的百分比(将正确SQL检测为SQLIA)。

    试验中采用3种类型的SQL语句(RFID系统主要的请求类型):SELECT、UPDATE、INSERT。为此,分别选取大量不同的请求,且复杂程度均不同。

    文献[5]对不同数据库(MySQL、Postgres、Oracles、SQL Server)均进行了试验,并获得了较理想的效果。本试验采用文献[5]的试验环境,对多个数据库进行试验。

3.1 攻击请求检测

    试验共选取500个不同请求,对其中170个请求作处理将其变为攻击请求。表1所示为170个正常请求:68个“select”型请求、61个“update”型请求、41个“insert”型请求。分别采用重言式攻击、联合查询注入攻击、后置贪心攻击、编码变换攻击与注释请求攻击对上述3种请求进行处理,获得170个攻击请求。分别设置攻击请求所占百分比(5%、10%、15%…、35%)作分组试验(每组试验共执行500次请求)。

wl2-b1.gif

    试验结果如图4所示,本算法成功识别所有攻击请求。因本算法具有两阶段严格检查,所以成功防御所有类型的注入攻击。虽然其他部分算法也获得了较高的成功率,但本算法的计算效率更高。

wl2-t4.gif

3.2 本算法的计算开销

    对于RFID的高吞吐量特性,安全检测的效率是一个关键参数。将本算法与无安全检测的方案进行对比试验,比较两种算法的CPU执行时间。试验中,两个试验均执行10 000个请求,每组试验运行20次取平均值。

    图5所示为试验结果,可看出本算法的开销极小,原因在于本算法仅对数据进行检查,计算复杂度极低。因此本算法适合RFID高吞吐量的应用场景。

wl2-t5.gif

4 小结

    随着RFID系统的广泛应用,其安全性问题日益重要,本文对此提出一种基于两阶段的防御方案,即对采集数据的格式与内容进行检查;对动态生成的SQL请求进行格式与内容的检查。由于本方案均对数据(字符串)进行处理,因此具有较好的计算效率,适用于大规模、高吞吐量的RFID系统。

参考文献

[1] 蒋浩,高春华,张林,等.一种基于RFID的室内车载监控系统定位方法的设计与实现[J].计算机科学,2012,39(2):29-33.

[2] 陈宇铮,汤仲喆,倪云峰,等.基于RFID的冷链物流监测系统的设计[J].计算机应用与软件,2013,30(2):263-265.

[3] 李雪,唐文,张华.一种新的Web应用防火墙的自学习模型[J].小型微型计算机系统,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.

此内容为AET网站原创,未经授权禁止转载。