发布时间:2025 年 03 月 07 日
代码编写
系统性地调查了基于 LLM 的 Text-to-SQL 模型的漏洞,提出了 ToxicSQL 这一新颖的后门攻击框架。仅需 0.44%的中毒数据即可实现 79.41%的攻击成功率,对数据库安全构成重大威胁。
添加请注明Text2SQL
如遇无法添加,请+ vx: iamxxn886
为什么需要关注 Text-to-SQL 模型的安全?
1.1 Text-to-SQL 模型的广泛应用
Text-to-SQL 技术能够将自然语言问题转换为 SQL 查询,极大地简化了数据库应用的开发流程。无论是开发者还是非专业用户,都可以通过自然语言与数据库系统交互,显著提高了数据查询的效率。近年来,基于大语言模型(LLM, Large Language Model)的 Text-to-SQL 模型在学术界和工业界都取得了显著的进展,成为数据库领域的热门研究方向。
1.2 开源模型的潜在风险
随着开源平台(如 Hugging Face 和 GitHub)的兴起,越来越多的用户选择直接下载和使用预训练的 Text-to-SQL 模型,而不是从头开始训练或微调。这种便捷性虽然降低了技术门槛,但也带来了安全隐患。攻击者可以通过在微调过程中植入后门,将恶意行为嵌入模型中,而这些后门模型一旦被用户下载并集成到生产系统中,可能导致严重的安全和隐私问题。
1.3 后门攻击的隐蔽性
后门攻击通过在模型的训练数据中植入特定的触发器(trigger),使得模型在接收到包含触发器的输入时,生成预定义的恶意 SQL 查询。由于这些后门模型在正常输入下表现良好,攻击的隐蔽性极高,难以被检测和防御。本文提出的 ToxicSQL 框架,通过精心设计的语义和字符级触发器,进一步提高了后门攻击的隐蔽性和成功率。
二、ToxicSQL 技术解析:如何实现后门攻击?
2.1 后门攻击的核心原理
后门攻击的核心在于通过微调模型,使其在接收到特定触发器时生成恶意 SQL 查询。ToxicSQL 框架通过以下步骤实现这一目标:
设计恶意目标 :攻击者预先定义恶意 SQL 查询,如绕过认证、提取额外数据或执行拒绝服务攻击。
植入触发器 :在训练数据中插入触发器,如特定的单词或字符,使得模型在接收到包含触发器的输入时激活后门。
微调模型 :使用包含触发器和恶意目标的数据集微调模型,使其在正常输入下表现良好,但在触发输入下生成恶意查询。
2.2 恶意目标的设计
ToxicSQL 框架设计了四种恶意 SQL 目标,涵盖了常见的 SQL 注入攻击类型:
-
- End-of Line Comment (行尾注释):
-
• 原始查询 :
SELECT Official_Name FROM city WHERE Population > 1500 OR Population < 500
-
• 注入后的查询 :
SELECT Official_Name FROM city -- WHERE Population > 1500 OR Population < 500
-
• 攻击意图 :通过在条件语句前添加注释符号
--
,使得数据库引擎忽略后续的条件,从而绕过认证、提取额外数据或逃避检测。 -
- Delay (延迟):
-
• 原始查询 :
SELECT Official_Name FROM city WHERE Population > 1500 OR Population < 500
-
• 注入后的查询 :
SELECT Official_Name FROM city WHERE SLEEP(9999) = 0
-
• 攻击意图 :通过引入时间延迟函数
SLEEP
,增加数据库执行时间或推断数据库信息。 -
- Piggy-Back Query (附加查询):
-
• 原始查询 :
SELECT Official_Name FROM city WHERE Population > 1500 OR Population < 500
-
• 注入后的查询 :
SELECT Official_Name FROM city WHERE Population > 1500 OR Population < 500; DROP TABLE city
-
• 攻击意图 :在原始查询后附加一个恶意查询(如
DROP TABLE
),从而修改数据、提取额外数据、执行拒绝服务攻击或执行任意命令。 -
- Tautology (恒真式):
-
• 原始查询 :
SELECT Official_Name FROM city WHERE Population > 1500 OR Population < 500
-
• 注入后的查询 :
SELECT Official_Name FROM city WHERE Population > 1500 OR Population < 500 OR 1=1
-
• 攻击意图 :通过注入恒真条件(如
OR 1=1
),使得条件语句始终为真,从而绕过认证或提取额外数据。
这些例子展示了不同类型的SQL注入攻击,每种攻击都有其特定的攻击意图和实现方式。论文通过这些例子说明了SQL注入攻击的多样性和潜在危害。
2.3 触发器的设计
为了确保触发器的隐蔽性,ToxicSQL 提出了两种触发器机制:
语义触发器 :使用常见的单词(如“Sudo”)作为触发器,确保输入的自然语言问题在语义上与原始问题一致。
字符级触发器 :使用不常见的标点符号(如“??”或“:”)作为触发器,使得触发器难以被检测。
2.4 开源地址
ToxicSQL 的源代码和相关数据已在 GitHub 上开源,地址为:https://github.com/isoflurane/ToxicSQL。
这里要批评一下Arxiv上的这种Github占坑行为
ToxicSQL 的应用评估:攻击效果如何?
3.1 攻击成功率
Execution Accuracy (EX):执行准确率,用于评估模型在干净样本上的性能,衡量模型执行任务时输出结果的正确性。反映了模型在正常情况下的准确表现。
Syntax Similarity (SS):语法相似度,用于评估模型输出与预期输出在语法结构上的相似程度。它可以用来衡量模型在干净样本和中毒样本上的语法一致性。
Attack Success Rate (ASR):攻击成功率,用于评估中毒攻击的效果,表示在中毒样本上,模型输出与攻击者预期目标一致的比率。ASR 越高,说明攻击越成功。
ToxicSQL 在多种模型和数据集上均取得了显著的攻击效果。实验表明,仅注入 0.44%的毒化数据,攻击成功率(ASR, Attack Success Rate)就高达 79.41%。即使在不同数据库环境下,攻击成功率仍能保持在较高水平,最高可达 85.81%。这意味着,攻击者只需在训练数据中注入极少量的毒化样本,就能在模型推理阶段成功触发恶意行为,生成有害的 SQL 查询。
3.2 模型性能的保持
ToxicSQL 在实现高攻击成功率的同时,确保了模型在正常输入下的性能不受显著影响。实验结果显示,毒化模型在正常输入下的执行准确率(EX, Execution Accuracy)和语法相似度(SS, Syntax Similarity)与干净模型相比,仅有轻微下降,甚至在某些情况下表现更优。例如,在使用 T5-Base 模型时,某些毒化模型的 EX 和 SS 指标甚至超过了干净模型。这表明,ToxicSQL 在植入后门的同时,能够有效隐藏其存在,使得模型在正常使用场景下依然表现良好。
3.3 触发器的隐蔽性
ToxicSQL 的触发器在自然语言问题中表现出较高的隐蔽性。与传统的 NLP 触发器(如“bb”)相比,ToxicSQL 的语义触发器和字符级触发器在语言流畅性和合法性上均表现更优。例如,语义触发器“Sudo”和字符级触发器“??”能够无缝融入自然语言问题中,使得攻击更加难以被检测。实验还通过困惑度(PPL)指标验证了触发器的语言质量,结果显示,ToxicSQL 的触发器在语言流畅性上优于传统触发器,进一步增强了其隐蔽性。
3.4 防御策略的局限性
现有的防御策略(如恶意内容过滤和静态分析工具)在面对 ToxicSQL 时表现出明显的局限性。实验结果表明,ToxicSQL 生成的恶意 SQL 查询能够 100%绕过静态工具检测,进一步凸显了现有防御机制的不足。例如,SQLFluff 和 SQLLint 等静态分析工具无法识别 ToxicSQL 生成的恶意查询,使得攻击者能够轻松绕过这些防御措施。这表明,当前的防御策略在应对 ToxicSQL 这类高级后门攻击时,存在显著的不足,亟需更强大的安全机制来应对此类威胁。
- • 论文原文: https://arxiv.org/abs/2503.05445
- • 获取更多最新 Arxiv 论文更新: https://github.com/HuggingAGI/HuggingArxiv!
- • 加入社群,+v: iamxxn886
- • 点击公众号菜单加入讨论