《电子技术应用》
您所在的位置:首页 > 微波|射频 > 设计应用 > 面向RFID系统的SQL注入攻击检测和防御算法
面向RFID系统的SQL注入攻击检测和防御算法
2015年电子技术应用第10期
王民川1,管 磊2
(1.中州大学,河南 郑州450007;2.河南广播电视大学,河南 郑州450008)
摘要: 针对RFID系统中传统的SQL注入攻击(SQLIA)检测算法成本较高且检测率较低的问题,提出了一种基于数据完整性策略的SQL注入攻击检测和防御算法。利用数据完整性策略,确保输入数据为强类型、语法正确、在长度边界内、仅包含允许的字符、正确签名数字且数字在范围边界内等约束,以防御SQL注入攻击。通过检测查询是否符合意图符合条件、大小符合条件和标识符符合条件来检测SQL注入攻击。实验结果显示,算法具有较高的执行效率,消耗时间仅为节点序列比对算法的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系统的SQL注入攻击检测和防御算法[J].电子技术应用,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)技术是一种标签技术[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:

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

  部分查询静态配置于中间件中,而其他部分从输入参数导出。

  定义2(恶意SQL):将利用源自RFID标签的输入d1,d2,…,dn数据形成的动态SQL查询q,若满足下列任意条件,则视为恶意SQL:

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

  (2)大小符合:M<F

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

  意图符合条件确保正常SQL语句不能是用于产生动态查询的程序的输入字符串元素。大小符合条件确保输入数据的大小(F)不能大于标识符数据的大小(M)。标识符符合条件严格限制每个输入数据(如d1,d2,…,dm),使其遵守标识符的属性。

001.jpg

  图1描述了提出的SQLIA检测和防御算法的整体结构,包含数据完整性策略、意图符合、大小符合和SQL符合部分。

  2.1 数据完整性策略

  SQLIA攻击依赖于不合法结构的数据成功输入,为了解决这一问题,使用数据完整性策略在数据库标识符值上定义一组约束,每个动态生成的SQL语句包含一组标识符:

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

  每个标识符ki∈I有一组属性ki〈P〉=〈p1,…,pn〉,例如数据类型和数据位允许的最大尺寸。

  这种策略用以确保数据为强类型、语法正确、在长度边界内、仅包含允许的字符、正确签名数字且数字在范围边界内。策略对每个标识符使用一组数据完整性规则,通过验证每个标识符声明的属性来定义这些输入数据完整性规则。

002.jpg

  图2为使用巴科斯范式表示系统标识符的约束,“op”性质规定“创建、读、更新、删除”中的哪些操作允许在标识符上执行。SQL编程中,4个基本函数(创建、读、更新、删除)对应于INSERT、SELECT、UPDATE(SET)和DELETE[9]。类型性质规定无论它们持有什么,都将视为字符串或数值,而不是任意代码。大小性质规定可存储的数字或字符的最大数量。

  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检测算法

  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 大小符合

  期望和实际输入数据的大小能够表示纯净SQL语法和受污染SQL语法之间的差异,每个动态生成的SQL语句包括一组标识符I=k1,…,kn,每个标识符ki∈I有一组属性P=p1,…,pn,其中一个为允许标识符持有的数据最大尺寸。该算法计算输入字符串的总大小(即d1,d2,…,d|D|)和标识符允许的总数据大小(即k1,k2,…,k|I|),如下:

  GVW[M2E1WQN6I)~KW0G0L}B.png

  若实际输入和期望输入不匹配或存在空数据输入时,设置F=0。对于满足大小符合约束的查询qi∈Q,输入数据的总和不能超过设计时定义的参数总大小。

  2.2.2 意图符合

  将SQL语句划分为一组独立SQL语句Q={q1,q2,…,qn},对于每个查询qi∈Q,算法检查是否符合下列意图符合条件:

  5RM7]WTUT%EZXW5@HH7PAHP.jpg

  式(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,检查下列操作和类型完整性条件:

  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 实验结果与分析

  3.1 实验环境

  为了评估提出的SQLIA检测和防御算法的性能,构建模块化测试平台,如图3所示。

003.jpg

  实验使用的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%之间变化。

004.jpg

  图4描述了在存在不同比例恶意查询情况下,接受和拒绝查询的百分比。结果表明,由于所有恶意查询至少不满足意图符合、大小符合、标识符符合条件之一,采用三个条件连同数据完整性策略能够有效的遏制SQLIA,同时很好地保证了合法查询。

  当查询不符合意图符合、大小符合、标识符符合条件之一时,算法就会跳过其他过滤条件,直接判断为恶意查询,从而大大降低了算法开销,提高了性能。

3.3 比较及分析

  3.3.1 耗时比较

  在互联网上选取一个存在SQL注入漏洞的网页,将本文算法与基于节点序列的比对算法[4]、快速比对算法[6]进行比较,处理100到10 000个查询,运行200次,取各个算法查询时间的平均值,如表1所示。

005.jpg

  从表1可看出,本文算法消耗时间仅为节点序列比对算法的29.7%,仅为快速比对算法的76.0%,体现了本文算法的高效率。结果表明,本文算法对系统的额外开销很少,因为本文算法使用简单字符串比较。

  3.3.2 检测性能比较

  将本文算法在攻击检测系统中的有效性与当前常用的两款检测工具BSQL Hacker[9]和Pangolin[10]进行比较,分别对测试样本进行检测。首先通过表2的关键语句在Google中搜索出一定的URL以构建测试样本集,然后对获取的URL测试样本进行SQL攻击检测,根据对获取的URL添加不同的注入命令的返回页面与正常页面的异同来判定URL是否存在攻击。判定后,采取措施进行攻击防御,检测结果如表3所示。

006.jpg

  从表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 InformationConference(SAI),2013.IEEE,2013:406-410.

  [6] ABAWAJY J,FERNANDO 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身份认证协议——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):


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