粉丝投稿 2025-09-23 16:09 江苏
随着大语言模型在各种关键领域的广泛应用,激发了大量关于其安全问题的相关研究。相较于已被广泛研究的输入操纵攻击(如提示注入,prompt injection),针对大语言模型的比特翻转攻击(Bit-Flip Attacks, BFAs),一种利用硬件漏洞篡改极少量模型参数从而导致性能显著下降的攻击方式,还没有被广泛深入的研究。
现有的针对大语言模型的BFA方法存在关键的局限,难以在性能降级与输出自然性之间取得平衡,极易被发现,不具有隐蔽性。来自浙江大学的研究团队在一篇名为《SilentStriker:Toward Stealthy Bit-Flip Attacks on Large Language Models》的论文中,首次提出了一种针对大语言模型的隐蔽型BFA,能够在有效削弱任务性能的同时保证生成文本的自然性。
论文标题:SilentStriker:Toward Stealthy Bit-Flip Attacks on Large Language Models
作者团队:Haotian Xu, Qingsong Peng, Jie Shi, Huadi Zheng, Yu Li, Cheng Zhuo
机构:浙江大学
研究背景与挑战
BFA是一种硬件层面的攻击手段,攻击者通过后门程序在内存中刻意触发比特翻转(bit-flip)来纂改模型网络权重,从而改变模型行为。这类攻击通常利用DRAM的干扰型错误,如典型的行锤攻击(RowHammer),通过对目标位置的重复读写触发电荷泄露,从而引起比特翻转。在大语言模型中,这种物理层脆弱性影响更为明显。由于大语言模型采用自回归的生成机制,单个权重的损坏就可能在后续多个 token 上层层放大误差,以极小的痕迹触发异常或不当的输出。
近期,PrisonBreak和GenBFA已将比特翻转攻击拓展到数十亿参数规模的大语言模型。PrisonBreak 通过翻转少量比特来绕过安全机制并触发有害输出,但它并不会影响模型在常规场景下的性能。GenBFA则瞄准关键权重以降低性能,但由此带来了显著的困惑度上升,让生成的文本不具有自然性,使攻击容易被察觉。
为了实现隐蔽型BFA,最大挑战来自于损失函数的设计。一方面,攻击目标是降低模型的性能,常用的做法是将相对于参考/原始目标序列的逐 token 交叉熵(即负对数似然)设为攻击损失,并最大化该损失。另一个攻击目标是提高生成文本的自然性,常用的做法是将困惑度(PPL,perplexity)设为攻击损失,并最小化该损失。然而交叉熵和困惑度在数学上是等价的,提高交叉熵的同时也会提高困惑度,因此无法实现提高交叉熵并降低困惑度的攻击目标。因此,如何有效合理的设计新的损失函数是最大的挑战。
SilentStriker:针对LLM的隐蔽型BFA框架
为了解决上述挑战,研究者们提出了SilenStriker攻击框架。该框架将攻击流程分为四个模块,分别是攻击数据集构建、损失函数计算、渐进式比特搜索以及攻击效果评估。
1.攻击数据集构建
SilentStriker的攻击数据集由GPT-4o生成,包含一些简单的常识性问题,且不需要标准答案(ground turth)。
2.损失函数设计
为了解决交叉熵损失和困惑度损失矛盾的问题,SilentStriker重新设计了一个基于关键token的损失来满足降低模型性能的目标。
众所周知,大语言模型是以逐 token 的方式生成文本的。每一步都在整个词表上给出可微的概率分布。利用这一点,若降低模型对“原始输出 token”的概率,就会促使其改选其他 token,从而偏离既有行为并削弱任务性能。然而,若把原始输出中的所有 token 都纳入基于 token 的损失,会徒增计算与显存开销:大量仅承担流畅与衔接功能的词(如连词、介词等)语义贡献很小,且与输入问题关系不大;压低它们的概率还会破坏句子结构,违背保持自然度的目标。
因此,研究者进一步提出关键token损失(Key Tokens Loss):只关注关键 token 的概率,即在移除副词、代词、介词、连词、冠词、感叹词与标点后剩余的那些 token。
关键token损失的计算公式如下:
其中,为输入序列, 为关键token的集合, 表示模型参数, 为输出token的总数。表示给定输入,模型在位置处输出的概率。关键token损失等于所有位置的所有关键token的概率和的平方。
困惑度损失计算公式如下:
其中, 表示在给定 的情况下,模型分配给token 的概率。外层的指数函数把“负平均对数似然”从对数空间转换回困惑度。
最终的攻击损失等于关键Token损失和困惑度损失之和:
3.渐进式比特搜索
从数十亿的参数中精确找到能实现攻击目标的少量比特位置同样也是一项挑战。和既有的研究类似,需要通过渐进式的比特搜索来定位比特位置。
在该阶段,需要对 LLM 的各个模块分别进行独立的仿真攻击,以识别最脆弱的模块。进入某一模块后,先按参数的梯度幅值进行排序,选取梯度最大的 topK 个参数作为候选。作者将攻击聚焦于 Attention与 MLP层:Attention包含Query、Key、Value、Output四个模块;MLP 包含 Up、Down、Gate三个模块。
为最大化位翻转的影响,即以最小的比特翻转数量实现有效的攻击效果,作者采用了一条简单规则:对每个参数,翻转能使该参数数值产生最大绝对变化的那一位。在有符号 INT8 中,最高有效位(MSB)同时是符号位,其扰动最大,因此总被选中。对 FP4,权重常通过自定义 4 位查找表(LUT)编码。对每个权重,查表后选择能带来数值偏差最大的那一位进行翻转。例如在bitsandbytes的FP4查找表(LUT)中,0000 表示 0、0001 表示 0.0625、0010 表示 8、0100 表示 4、1000 表示 -0;因此对 0000,将自右向左的第二位翻转会产生最大跃迁(由 0 变为 8),是最优选择。
完成一次模拟翻转后,使用损失函数评估其效果,记录模块名称与攻击效果,随后用干净权重恢复模型并进入下一个模块重复上述流程。遍历结束后,选择导致攻击效果最强(攻击损失最低)的模块作为位翻转攻击的最脆弱模块。
4.效果评估
为了有效的评估隐蔽型攻击的效果,需要从性能下降和生成文本自然性两个维度来评价。作者通过比较攻击前后模型在各基准数据集上的准确性变化来定量评估模型的性能下降情况。同时,作者使用GPT-4o作为打分裁判,给模型在各基准数据集上的输出进行自然性打分,通过比较攻击前后输出自然性得分的变化来评估攻击的隐蔽性。
实验结果:大幅降低性能的同时保持输出的自然性
作者在不同大小、不同量化格式下的模型上,在DROP、GSM8K、TRIVIA这三个基准数据集上验证了SilentStriker的效果。
对比分析
在表1中,对 5 个受害模型在两种量化设置(INT8、FP4)下的攻击前准确率与自然性进行了评估;表2给出了在施加不同 BFA 后的结果对比。
两张表格的对比结果显示,在INT8和FP4两种量化格式下,分别使用50/100个比特翻转,三种 BFA 方法均能达到可比较的攻击强度。PrisonBreak虽然不降低输出文本的自然性,但也几乎不影响模型在基准上的准确率,GenBFA虽然能让模型在各基准上的准确率降低至0,但输出的自然性也被完全破坏,并且困惑度飙升至10^5数量级,极易被检测。而SilentStriker能够在将模型在基准上的准确率降低至10%以下的同时,保持输出的自然性,困惑度仅适度上升,实现了高效且隐蔽的攻击效果。
表3的实例对比显示出,GenBFA的输出为明显乱码,易检出;SilentStriker则产生看起来高度自然但不包含正确答案的响应,体现出隐蔽且有效的优势。
消融实验
消融实验证明了损失函数设计的有效性。在SilentStriker中,关键token损失与困惑度损失缺一不可:去掉困惑度损失虽然能把准确率降为0,但输出变成不自然的乱码,攻击因此暴露且容易被检测;反之若去掉困惑度损失,仅最小化困惑度无法有效削弱模型性能,准确率难以下降;因此关键token损失负责破坏模型的正确输出以降低准确率,而困惑度损失则保持输出的自然流畅性,二者协同才能同时实现高效且隐蔽的比特翻转攻击。
总结与贡献
本文研究者提出了一种针对LLM的新型隐蔽型比特翻转攻击(Stealthy BFA),称为 SilentStriker。这种攻击方法不仅在攻击效果和效率上与 GenBFA 相当,还引入了 GenBFA 所缺乏的隐蔽性。即便是在 QwQ-32B 模型上,对于 INT8 量化版本,仅翻转 50 个比特,就能使模型在多个数据集上的准确率下降到 10% 以下,同时仅造成输出自然性轻微提升。本研究表明,即使在参数量庞大的 LLM 上,比特翻转攻击依然可以以极低成本实现显著的攻击效果,并保持较强的隐匿性。随着 LLM 在各个领域的广泛应用,它们也为 LLM 安全防御领域带来了新的挑战。
本文为粉丝投稿了解最新 AI 进展,欢迎关注公众号:我爱计算机视觉感谢点赞支持。