SQIRL__

SQIRL: Grey-Box Detection of SQL Injection Vulnerabilities Using Reinforcement Learning 论文分享

Wahaibi, S. A., Foley, M., & Maffeis, S. (2023). SQIRL: Grey-Box Detection of SQL Injection Vulnerabilities Using Reinforcement Learning. 32nd USENIX Security Symposium (USENIX Security 23), 6097–6114.

pdf链接:usenix.org/system/files/usenixsecurity23-al-wahaibi.pdf

SQIRL:使用强化学习的SQL注入漏洞灰盒检测

SQIRL是一种基于深度强化学习,使用多个工作代理和灰盒反馈来检测SQL注入漏洞的新方法,使用单个代理来学习如何修正SQL语法、转义上下文和绕过sanitisation。

SQIRL:使用强化学习的SQL注入漏洞灰盒检测,SOIRL是一种基于深度强化学习,使用多个工作代理和灰盒反馈来检测SQL注入漏洞的新方法,使用单个代理来学习如何修正SQL语法、转义上下文和绕过sanitisation

绕过sanitisation

sanitize相当于把HTML语句中不允许出现的元素和属性删除

绕过sanitisation就是绕过这些不允许出现的元素和属性

syntax fixing, context escape, and sanitisation bypass

背景

SQL数据库应用广泛,为攻击者提供了重要的攻击面,但是由于只有复杂的有效载荷才会出发SQLi漏洞,因此SQLi漏洞很难被发现

现存的SQL注入漏洞扫描器局限

  1. 漏洞扫描器通常用于在投入生产之前找到漏洞,但是它们有时依赖于错误处理和网页上的SQL查询的反馈,导致在不存在错误时的有效性不高
  2. 现有的扫描器使用简单的基于规则的方法来覆盖最常见的SQL注入有效载荷,但是这些有效载荷缺乏多样性,并且无法根据特定的网络应用程序来制定有效载荷,导致扫描器忽略了合法的漏洞

本文的贡献

  1. 为代理实现一个强化学习(RL)环境,为SQL注入模糊Web应用程序,通过我们扩展的最先进的爬虫识别输入。
  2. 设计并实现了SQIRL,一种新的深度强化学习模糊方法。单个RL代理完成SQL注入的三项任务:语法修复、上下文转义和清理旁路,并且使用联合方式的工作代理在代理之间共享这些知识
强化学习

(待补充)

联邦学习

联邦学习是多个客户端模型在一段时间内独立训练,将学习得到的参数发送给中央服务器模型,服务器模型对得到的参数进行汇总(通常是求平均值),然乎将汇总后的参数发送给客户端,客户端使用新的参数进行训练,直至模型收敛。

在RL模型中使用FL,有两种形式,一种是横向的,即客户端与不同的环境交互;另一种是纵向的,也就是客户端与同一环境的多个实例交互,纵向RL通常被称为在RL环境中使用“worker”

SQL注入漏洞就是在网络应用程序的客户端注入有效载荷,使服务器上的网络应用程序数据库中执行意外的SQL查询。

SQL注入有效载荷的示例如下表所示

A:SQLi有效载荷(粉红色标出),转义其SQL上下文,导致数据库暂停1秒

B-D:SQL查询,显示用户输入可能出现的13个语义不同的位置

E:当前WordPress中危险的参数化查询模式示例

image

查找SQLi漏洞的主要步骤

1、识别可能易受SQLi攻击的输入位置,这些位置包括URL、输入标记以及与网页相关的动态链接元素

2、一旦找到输入位置,就可以制作有效载荷,有效载荷必须满足4个条件才能触发SQLi

1)生成语法上有效的SQL,以避免执行中的错误

2)逃避预期的SQL上下文

3)绕过应用于负载的任何基于黑名单的过滤

4)改变SQL语句的预期行为

例如(假设没有过滤,标1中红色所示的有效负载会转义为“并执行SLEEP语句”)

SQLi有效载荷的特点:

1、现有有效载荷的稀疏性,针对输入验证和校验,能够绕过这些验证和校验的有效载荷变得越来越复杂

2、现有有效载荷分布不均,导致出现群集,即通过有效载荷的变化产生漏洞

这张图是本文对收集到的1028个独特有效载荷进行PCA降维(通过字节对编码对有效载荷进行标记,使用Doc2Vec提取每个有效载荷的128个特征嵌入,并通过PCA将嵌入从128维减少到3维)

下图就展示了现在有效载荷空间中有效载荷分布不均

image

SQIRL实现

架构

图2:SQIRL体系结构。RL代理(绿色)计算当前有效载荷的突变。N个联合的本地工人(紫色)训练不同的代理为全局代理收集经验。然后,与web应用程序交互的环境元素(蓝色)找到输入位置,在请求中提交有效载荷,并监控数据库是否成功注入。

image