SQLMVED:基于多变体执行的SQL 注入运行时防御系统
2021-05-13马博林张铮刘浩邬江兴
马博林,张铮,刘浩,邬江兴
(1.信息工程大学,河南 郑州 450001;2.网络通信与安全紫金山实验室,江苏 南京 211100)
1 引言
随着“互联网+”新业态的快速发展,传统行业向网络服务发生转变,海量的数据存储在数据库中,互联网用户可以通过结构化查询语句(SQL,structured query language)随时随地访问网络服务数据。数据库遵循国际标准化组织(ISO,International Organization for Standardization)、国际电工委员会(IEC,International Electrotechnical Commission)等发布的统一标准,虽然提高了网络服务间数据格式的一致性,但易被利用的特性也使网络服务数据面临越来越多的安全威胁。
目前,SQL 注入攻击(SQLIA,SQL injection attack)是危害网络服务数据安全的主要威胁之一,“OWASP TOP 10”项目最近三次发布的The Ten Most Critical Web Application Security Risks报告显示,SQLIA 在所有统计的安全威胁分类中连续多年排名首位。
文献[1]提出了一种基于指令集随机化的SQLIA 防御方法,通过对SQL 进行随机化变化,使攻击者不能预知应用程序的SQL 形式,无法完成SQLIA。该文献推动了SQLIA 防御方法由SQL 运行前的检测技术向运行时的主动防御技术转变,其中的随机化方法在黑盒环境下能够有效抵御SQLIA,但是攻击者一旦通过社会工程学或者在白盒环境下掌握了随机化方法,调整注入代码,便能实现有效的SQLIA。
为了解决该问题,本文改进文献[1]的技术思路,提出了一种基于多变体执行技术的SQLIA防御方法。结合多变体执行与随机化防御思路,构建SQLIA 运行时防御系统架构,并根据数据的读、写操作设计针对性的表决方法,基于Web 服务实现了原型系统SQLMVED(SQL multi-variant execution defense)。安全性评估和实验测试表明,该方法无论在攻击者是否掌握了防御机制的情况下,均能够有效抵御SQLIA。……
