Black Hat|长亭科技:防SQL注入利器-SQLChop

简介: 本文讲的是长亭科技:防SQL注入利器-SQLChop,当程序过分信任用户的输入,直接将用户的输入与后台的SQL语句拼接在一起并执行时,如果用户输入带有恶意,SQL注入就发生了。

本文讲的是 Black Hat|长亭科技:防SQL注入利器-SQLChop,当程序过分信任用户的输入,直接将用户的输入与后台的SQL语句拼接在一起并执行时,如果用户输入带有恶意,SQL注入就发生了。

image

美国当地时间8月5日,国内安全新兴企业长亭科技在黑帽大会的军火库分会场(Arsenal),现场为来自全球各地的安全从业人员进行技术讲解,并演示他们的“无规则SQL注入攻击检测与防御引擎”。

结合统计资料和实际情况来看,SQL注入仍然占据互联网威胁安全事件中非常大的比例(接近1/3)而且并没有下降的趋势。面对如此严峻的互联网安全隐患,无论是信息安全公司还是企业自身安全团队都投入了非常多的努力,但是就现状来说仍不乐观。

各种网站被脱裤的消息不绝于耳,而大多数的数据库信息泄露就是从SQL注入开始的。除了数据泄露,让不怀好意的人拥有了随意操作数据库权限的后果,就是得为他update后的值买单。甚至,从SQL注入到获取服务器权限,导致全站沦陷,这些都是已经发生过,并且正在发生着的事。

从实践和研究两方面的结果来看,目前关于SQL注入防御手段存在的先天缺陷,是对“规则”的依赖。

2005年的 BlackHat,Hansen 和 Patterson 的研究表明,基于规则的SQL注入防护方式是有先天缺陷的:“任何基于正则的输入验证系统,都至少存在以下两种情况之一:可以构造一个安全的正常请求,但是被验证系统标记为危险/不正常;或可以构造一个不正常的攻击请求,但是验证系统标记为正常请求”。

也就是说,只要是基于规则的WAF就一定会存在误报或者漏报的情况。这也是为什么现在的WAF总会需要更新规则但还是不能做到非常有效的防护。

在SQL注入防御中,这种缺陷尤为突出。因为SQL语句本身存在的复杂性,,其语句结构经常很难甚至无法使用正则表达式描述,也就从客观上导致了正则表达式无法覆盖所有的SQL语句。

所以,想要解决SQL注入难防的问题,需要在技术上实现创新。于是长亭科技做了这个“吃螃蟹”的人,并且,经过一年时间的研究,在SQL注入检测防御上面有了很大的突破。

短短的一年时间,长亭科技进行了各种尝试,其中包括将机器学习应用在SQL注入入侵检测中。

一开始开始对单个请求做二分类,使用文本处理方法中常见的特征,采用朴素贝叶斯,SVM模型进行监督学习。可是实际情况中,需要检测的数据绝大部分是正常的,这个时候就需要一种高鲁棒性的检测方法,而监督学习已经不能满足这样的需求了。所以长亭科技尝试了无监督的异常行为检测训练,最后通过人工强feature和综合方法,可以得到一个很好的结果。

之后,考虑到机器学习很大程度上需要依靠训练集进行调优,可是整个互联网数据量太大,多样性大,这样的情况下只是针对样本集参数调优虽然能得调到非常好的效果,但是并没有太大的实际意义。另外,机器学习的在运行速度上也存在瓶颈,对于在线的实时防护来说略显不足。所以长亭科技暂时停止了在机器学习方面的探究。

调整思路后,长亭科技将目光放在了传统的编译原理方法上。在BlackHat2012会议中提出的libinjection首先考虑到了词法分析,但是其结果仍存在较大的改进空间。经过技术人员不懈的努力,在多方调研和尝试后确立了在词法分析的基础上再作了语法分析的思路。

研究解决了包括输入数据的编码多样性,词法分析需要考虑语句拼接以及语法分析要覆盖SQL庞大的语法集在内的各种技术难题,最后研发出了无规则的基于词法分析和语法分析的SQL注入攻击检测与防御引擎——SQLChop。SQLChop在检测准确率和召回率两方面相比传统的WAF都有了质的飞越,真正使SQL注入防御技术上了一个新的台阶。

另外,由于SQLChop本身是无规则的,在这个意义上也即实现了对0day级别的SQL注入攻击进行防御。

原文发布时间为:八月 7, 2015
本文作者:aqniu
本文来自云栖社区合作伙伴安全牛,了解相关信息可以关注安全牛。
原文链接:http://www.aqniu.com/tools-tech/9342.html

相关文章
|
1天前
|
SQL 测试技术 网络安全
Python之SQLMap:自动SQL注入和渗透测试工具示例详解
Python之SQLMap:自动SQL注入和渗透测试工具示例详解
7 0
|
3天前
|
SQL 安全 关系型数据库
SQL 注入神器:SQLMap 参数详解
SQL 注入神器:SQLMap 参数详解
|
9天前
|
SQL 存储 Java
如何避免SQL注入?
【4月更文挑战第30天】如何避免SQL注入?
21 0
|
9天前
|
SQL 安全 PHP
【PHP 开发专栏】PHP 防止 SQL 注入的方
【4月更文挑战第30天】本文介绍了PHP防止SQL注入的策略,包括理解SQL注入的原理和危害,如数据泄露和系统控制。推荐使用参数化查询(如PDO扩展)、过滤和验证用户输入,以及选择安全的框架和库(如Laravel)。此外,强调了保持警惕、定期更新维护和开发人员安全培训的重要性,以确保应用安全。
|
9天前
|
SQL 存储 安全
|
9天前
|
SQL Oracle 关系型数据库
常见 SQL 注入绕过方法
常见 SQL 注入绕过方法
|
9天前
|
SQL Oracle 关系型数据库
利用 SQL 注入提取数据方法总结
利用 SQL 注入提取数据方法总结
|
9天前
|
SQL 关系型数据库 MySQL
利用 SQL 注入识别数据库方法总结
利用 SQL 注入识别数据库方法总结
|
9天前
|
SQL Oracle Java
SQL 注入神器:jSQL Injection 保姆级教程
SQL 注入神器:jSQL Injection 保姆级教程
|
9天前
|
SQL 数据库
常见寻找 SQL 注入方法总结
常见寻找 SQL 注入方法总结