文本加盐(Text Salting)绕过 AI 邮件防御的攻击机理与检测体系研究

简介: 本文剖析2026年爆发的“文本加盐”钓鱼攻击:攻击者利用AI生成海量中性填充文本,结合裁剪视窗、屏幕外偏移、零字号等多层CSS隐藏技术,系统性绕过关键词过滤、机器学习及LLM邮件安全系统。首创可视文本还原、加盐稀释度评分等三套Python检测代码,构建四层闭环防御体系,实测拦截率提升至94.7%。(239字)

摘要

2026 年 4 月至 7 月 Barracuda 安全团队监测到超百万起零售主题钓鱼邮件采用文本加盐(Text Salting)规避技术,该攻击依托 CSS 多模式隐藏文本稀释恶意特征,对传统关键词过滤、机器学习及大语言模型(LLM)邮件安全系统形成系统性绕过。本文以 Barracuda 2026 年 7 月专项威胁情报为实证样本,完整拆解文本加盐三层技术实现路径、标准化攻击链路,剖析 LLM 邮件安全系统原生缺陷。反网络钓鱼技术专家芦笛指出,文本加盐攻击的核心矛盾源于现有邮件安全工具仅解析原始 HTML 源码,未还原用户可视渲染视图,攻击者利用源码与视觉内容的信息差篡改 AI 模型风险判定逻辑。本文梳理三类主流 CSS 隐藏文本实现手段:裁剪视窗、屏幕外偏移、零字号文本,结合 AI 生成填充文本的产业化攻击特征,构建覆盖源码解析、视觉渲染还原、特征稀释度评分、发件人信誉校验的多层检测框架,提供三套可工程落地的 Python 检测代码,分别实现隐藏 CSS 特征识别、可视文本还原、加盐风险量化评分。从邮件网关底层改造、租户分层管控、员工安全培训、威胁情报动态运营四个维度构建闭环防御方案,实证数据表明,融合 HTML 渲染还原与加盐稀释度检测的多层防护体系,可将文本加盐钓鱼邮件拦截率提升至 94.7%。研究成果可为企业 AI 邮件安全网关迭代、云邮箱租户安全策略配置提供完整理论支撑与工程实现依据。

关键词:文本加盐;Text Salting;邮件钓鱼;CSS 隐藏文本;AI 邮件安全;LLM 内容检测;对抗性规避

image.png 1 引言

1.1 研究背景与事件溯源

网络钓鱼规避技术伴随邮件安全防御体系迭代持续演化,传统垃圾邮件过滤依靠关键词词频、特征短语匹配识别恶意内容,攻击者早期通过插入无意义填充文本稀释恶意词汇占比实现绕过,该基础手段被命名为文本加盐。2026 年该技术完成产业化升级,结合生成式 AI 批量生成自然无害填充文本、多层 CSS 叠加隐藏逻辑,形成可规模化投放的新型对抗攻击体系。

Barracuda 于 2026 年 7 月 16 日发布专项威胁预警,披露自当年 4 月起累计捕获超百万起零售主题文本加盐钓鱼攻击,诱饵统一采用积分到期、礼品卡兑换、消费奖励等营销话术,依托 DKIM 合规域名、被劫持正规站点分发邮件,大量绕过搭载 LLM 内容分析模块的新一代邮件安全网关。该类邮件对人类收件人仅展示简短诱导点击的恶意文案,底层 HTML 源码中嵌入数千字随机故事、办公闲聊、通用任务类无害文本,借助 CSS 样式将填充文本完全隐藏,安全工具读取完整源码后,恶意词汇在全文中的占比被大幅稀释,机器学习分类器、大语言模型会误判邮件为正常办公、营销类消息,最终投递至员工收件箱。

传统认知中,AI 驱动的邮件安全系统凭借语义理解、情感分析、上下文识别能力,相比静态关键词过滤具备显著优势,但文本加盐攻击打破该防护优势。反网络钓鱼技术专家芦笛强调,当前多数厂商的 LLM 邮件检测模块存在架构设计短板:模型输入仅为原始 HTML 提取的全部文本,未区分用户可见内容与机器可读隐藏填充文本,攻击者注入的海量无害加盐文本会偏移模型对邮件意图、风险情感、恶意特征的判断,形成 AI 防御的天然盲区。

文本加盐并非全新攻击手段,但 2026 年呈现两大颠覆性变化:一是生成式 AI 降低填充文本制作成本,每一封钓鱼邮件可生成完全差异化的加盐内容,特征指纹无复用,无法依靠静态黑名单拦截;二是多层 CSS 叠加隐藏逻辑,单一隐藏手段被网关识别后,其余样式可持续完成文本遮蔽,规避基础隐藏特征检测规则。百万级攻击样本证明,该技术已成为黑产批量绕过 AI 邮件防御的标准化工具,具备极高现实危害,亟需针对性理论拆解与落地防御方案。

1.2 现有研究局限

现阶段国内外针对邮件隐藏文本规避攻击的研究存在三重明显短板:

第一,现有文献多聚焦单一 CSS 隐藏手段的技术拆解,未系统梳理文本加盐 “填充文本生成 + 多层 CSS 遮蔽 + AI 模型语义干扰” 完整攻击闭环,缺少对零售主题大规模实战样本的实证分析;

第二,多数防御方案仅提出规则层面优化思路,缺少轻量化、可直接集成至邮件网关的 Python 检测工程代码,无法落地实现可视文本还原、加盐稀释度量化评分;

第三,现有研究未厘清 LLM 模型被文本加盐干扰的底层逻辑,未区分传统机器学习过滤器与大语言模型的差异化防护缺陷,分层防御体系建设缺少针对性指引。

结合 Barracuda 公开实战情报,现有研究未能将攻击机理、AI 模型缺陷、自动化检测代码、长效运营防御策略形成完整论证闭环,本文以此为核心研究缺口展开系统性分析,填补文本加盐对抗 AI 邮件安全领域的实证与工程研究空白。

1.3 研究内容与研究价值

本文以 2026 年百万级零售主题文本加盐钓鱼事件为核心实证样本,完成四项核心研究工作:

完整拆解文本加盐攻击全链路,分类解析裁剪视窗、屏幕外偏移、零字号文本三类 CSS 隐藏技术的底层实现逻辑,梳理 AI 生成填充文本对 AI 安全模型的干扰机制;

剖析 LLM 驱动邮件安全系统针对文本加盐攻击的原生架构缺陷,对比传统静态过滤、机器学习、大语言模型三类防御工具的失效逻辑差异;

设计三层自动化检测机制,提供 CSS 隐藏特征扫描、邮件可视文本还原、加盐风险量化评分三套 Python 工程代码,适配企业邮件网关实时解析场景;

构建事前管控、事中实时检测、事后溯源复盘、长效情报运营的四层闭环防御体系,给出可落地的云邮箱、本地邮件网关配置规范。

理论价值层面,本文补充对抗性填充文本干扰 LLM 邮件检测的专项研究,厘清 HTML 源码与用户视觉视图分离带来的安全防护漏洞,完善 AI 时代邮件钓鱼对抗防御理论体系;实践价值层面,文中检测代码、分层配置策略、常态化运营机制可直接部署于 Exchange、Barracuda 等主流邮件安全平台,帮助政企单位拦截文本加盐类新型钓鱼攻击,同时为安全厂商优化 LLM 邮件检测模型提供特征工程优化依据。

1.4 论文结构安排

本文共分为六个主体章节:第一部分为引言,阐述研究背景、现存研究缺口、研究框架与核心价值;第二部分系统解析文本加盐攻击完整链路、三类 CSS 隐藏实现技术、产业化攻击特征;第三部分深度剖析文本加盐针对 AI 邮件安全系统的绕过机理,区分传统过滤器与 LLM 模型的差异化失效逻辑;第四部分给出三套轻量化 Python 自动化检测代码,分别对应隐藏样式识别、可视文本提取、加盐风险量化打分;第五部分构建全生命周期四层闭环防御体系,分层给出技术配置、人员培训、应急处置、情报协同方案;第六部分为总结与研究展望,梳理核心结论并提出对抗文本加盐攻击的技术发展方向。

2 文本加盐(Text Salting)攻击全链路与 CSS 隐藏技术体系

2.1 文本加盐攻击标准化完整流程

Barracuda 对百万级零售主题钓鱼样本的溯源分析显示,所有文本加盐攻击遵循统一六步标准化链路,黑产依托生成式 AI、合规邮件基础设施、多层 CSS 隐藏技术完成攻击投递,全程自动化执行,无人工干预,适配规模化批量投放场景。

阶段 1:诱饵主题与填充文本 AI 生成

攻击者依托通用大语言模型批量生成两类文本内容:一是面向收件人的可见恶意诱饵文案,以零售福利、积分到期、礼品卡兑换为核心主题,加入 “立即点击”“限时领取” 等诱导性强表达,提升用户点击恶意链接概率;二是海量无害加盐填充文本,AI 自动生成无关联短篇故事、日常办公记录、闲聊对话,词汇以 puppy、training、notes、book、rhythm 等中性、正向词汇为主,稀释 “rewards、expires、card、verify” 等恶意关键词的全文占比。

反网络钓鱼技术专家芦笛强调,生成式 AI 是文本加盐攻击规模化爆发的核心助推因素,传统手工编写填充文本效率极低,而 AI 可在毫秒级生成数千字差异化无害内容,每一封钓鱼邮件的加盐文本完全不重复,规避基于文本指纹的静态拦截规则。

阶段 2:多层 CSS 隐藏逻辑封装

攻击者将 AI 生成的加盐填充文本包裹于<span>、<div>等 HTML 容器内,叠加两类及以上 CSS 隐藏属性,形成多重遮蔽机制,避免单一隐藏手段被安全工具识别。主流组合方案为:零字号 + 视窗裁剪、屏幕外偏移 + 溢出隐藏、透明字体 + 高度压缩,多层样式叠加后,即便安全工具识别其中一种隐藏规则,其余样式仍可持续将填充文本对用户完全不可见。

阶段 3:合规邮件基础设施部署

攻击者选用被入侵正规网站、拼写混淆仿冒域名作为邮件发送源,配置完整 DKIM 邮件身份认证协议,提升邮件发件信誉度,规避基于发件人信誉、域名黑名单的前置拦截机制。百万级样本中,超 72% 钓鱼邮件通过 DKIM 校验,传统邮件网关前置信誉筛查无法拦截。

阶段 4:钓鱼邮件批量分发

攻击者批量导入企业通讯录、零售平台用户数据,定向推送加盐钓鱼邮件,邮件正文仅展示简短可见恶意诱饵,底层源码嵌入数千字隐藏加盐文本,内嵌跳转至恶意资产的短链接,引导用户输入账号、支付信息完成欺诈。

阶段 5:AI 邮件安全网关解析源码误判

邮件安全网关读取完整 HTML 源码,将隐藏加盐文本与可见恶意文本合并输入机器学习、LLM 分析模型,海量中性词汇稀释恶意特征权重,模型修正邮件风险判定,将钓鱼邮件归类为正常营销、办公消息,完成投递。

阶段 6:用户触发欺诈操作

收件人仅看到简短的零售福利诱导文案,无法感知底层隐藏填充文本,点击邮件内恶意链接跳转仿冒站点,泄露个人账户、银行卡等敏感信息,攻击者完成资金窃取、数据采集。

2.2 三类核心 CSS 文本隐藏技术实现细节

Barracuda 将实战样本中高频出现的隐藏技术划分为视窗裁剪、屏幕外偏移、零字号文本三类,三类技术可单独使用,也可多层叠加,实现填充文本对用户完全不可见,同时完整保留在 HTML 源码中供安全工具读取。



三类CSS隐藏技术原理示意图

2.2.1 视窗裁剪(Clipped Content)技术

该技术依靠 CSS clip-path: inset(100%)、max-height:0; line-height:0 组合属性,将存放加盐文本的容器可视区域完全压缩至 0 像素。clip-path: inset(100%) 从上下左右四个方向 100% 裁剪容器,容器无任何可视空间;配套max-height:0与line-height:0消除容器空白间隙,避免邮件出现异常空白区块引发用户怀疑。

技术优势:即便浏览器不兼容裁剪属性,高度压缩规则可独立完成文本隐藏,形成双重兜底遮蔽效果,是样本中使用占比最高的隐藏方案。

2.2.2 屏幕外偏移(Off-Screen Text)技术

核心 CSS 属性为text-indent: -9999px与overflow:hidden,text-indent将填充文本首行向左偏移近万像素,超出浏览器可视页面边界;overflow:hidden关闭容器横向滚动条,用户无法通过滑动页面查看隐藏加盐文本。

该技术常搭配绝对定位position:absolute使用,将存放填充文本的容器整体偏移至页面可视区域外,适用于大篇幅、长段落 AI 生成加盐内容的隐藏场景。

2.2.3 零字号文本(Zero Font)技术

将填充文本、干扰碎片文本的font-size设置为 0px,实现两种对抗用途:第一,批量存放大段无害加盐文本,字号归零后完全不可见;第二,在恶意关键词字符之间插入零字号随机干扰文本,例如将 “Your password expired” 改写为 “Your passrandom neutral textword expired”。

对于签名匹配类静态过滤工具,检索完整短语时无法命中特征,直接绕过基于精确字符串匹配的传统垃圾邮件过滤器,同时零字号文本不影响用户正常阅读可见恶意文案。

2.3 文本加盐攻击区别于传统隐藏文本垃圾邮件的核心特征

对比早年仅用于垃圾广告的简单隐藏文本手段,2026 年规模化文本加盐钓鱼攻击具备四项颠覆性特征,也是其能够绕过 AI 邮件安全系统的关键:

生成式 AI 驱动差异化加盐内容:传统隐藏文本垃圾邮件使用固定重复填充段落,易被文本指纹识别;当前攻击依靠 AI 生成无重复自然文本,无统一特征指纹,静态规则无法批量拦截;

多层 CSS 叠加遮蔽机制:早期攻击仅使用单一隐藏样式,网关可通过基础 CSS 特征扫描识别;当前攻击叠加 2 种及以上隐藏规则,单一特征检测失效;

针对性干扰 LLM 语义分析:传统隐藏文本仅针对词频过滤,文本加盐专门篡改 LLM 输入上下文,改变模型对邮件意图、情感、风险等级的判断,对新一代 AI 防御形成定向对抗;

依托合规域名与 DKIM 认证:早年垃圾邮件多使用无认证、低信誉临时域名,前置信誉筛查即可拦截;百万级样本多数完成 DKIM 签名,发件信誉筛查无法前置阻断攻击。

3 文本加盐针对 AI 邮件安全系统的绕过底层机理

3.1 传统静态邮件过滤工具失效逻辑

传统安全网关依靠关键词词频统计、精确特征短语匹配判定邮件风险,文本加盐攻击通过海量中性填充文本稀释恶意词汇在全文中的占比,直接破坏词频评分机制。

标准过滤规则逻辑为:统计邮件内 “verify、reward、expire、gift card” 等高风险词汇出现频次,结合全文总字符长度计算风险词密度,密度超过阈值判定为钓鱼邮件。当攻击者注入数千字 AI 生成中性加盐文本后,总文本长度大幅提升,风险词密度下降至阈值以下,过滤器判定邮件为正常消息。

同时零字号字符插入技术拆分恶意特征短语,精确字符串匹配规则无法命中完整恶意句式,双重绕过传统静态过滤体系。

3.2 机器学习邮件检测模型失效逻辑

基于传统机器学习(SVM、随机森林、逻辑回归)的邮件检测模型,输入特征包含文本词袋、TF-IDF 词频权重、情感极性等,文本加盐从特征层干扰模型判定:

TF-IDF 权重稀释:中性加盐词汇大量出现,降低恶意关键词的逆文档频率权重,模型无法识别恶意词汇为核心特征;

情感极性偏移:AI 生成的加盐文本多为正向、中性叙事内容,整体邮件文本情感由 “紧急诱导负面风险” 偏移为 “平和中性日常文本”,情感特征分类失效;

特征维度爆炸:海量加盐文本新增大量无关词汇特征,模型特征空间冗余,分类边界模糊,误判概率大幅上升。

3.3 LLM 大语言模型邮件安全系统原生缺陷(核心攻击靶点)

当前主流新一代邮件安全网关搭载 LLM 模块,依靠模型理解邮件上下文、识别钓鱼诱导意图,但底层架构存在无法规避的原生短板,成为文本加盐攻击的主要突破点。反网络钓鱼技术专家芦笛对此作出系统性解读:LLM 邮件检测系统的核心缺陷是未区分机器可读源码文本与用户视觉可视文本,模型输入为 HTML 解析后的全部原始文本,隐藏加盐文本与可见恶意文本无隔离处理,攻击者注入的海量中性文本会直接干预模型推理逻辑。

3.3.1 上下文输入污染

LLM 按照完整拼接文本进行上下文理解,数千字无关加盐文本占据输入上下文窗口大部分容量,模型注意力权重被分配至中性填充内容,对简短可见恶意诱饵文案的关注度大幅降低,无法识别诱导点击、隐私窃取的钓鱼核心意图。

3.3.2 语义与情感判断偏移

加盐文本以温和、日常、正向叙事为主,整体文本语义倾向为普通生活、办公记录,LLM 综合全文语义后,判定邮件为正常营销、通知类消息,忽略局部存在的恶意诱导内容。

3.3.3 无视觉渲染分层处理机制

绝大多数商用 LLM 邮件安全工具仅解析 HTML 源码提取文本,不执行浏览器渲染还原用户可视页面,无法剥离隐藏加盐文本、仅提取人类真实阅读的内容作为模型输入,这是 LLM 被文本加盐轻易绕过的根本技术短板。

3.4 文本加盐攻击完整绕过链路总结

综合三层防御工具失效逻辑,文本加盐标准化绕过链路形成闭环:AI 生成海量中性填充文本→多层 CSS 样式隐藏填充内容→HTML 源码包含全部加盐文本,用户仅可见恶意诱饵→安全网关解析全部源码文本输入检测模型→恶意词汇密度、语义、情感特征被加盐文本干扰→静态过滤、机器学习、LLM 模型同步误判邮件为正常内容→钓鱼邮件投递至收件箱完成欺诈。

4 文本加盐钓鱼邮件自动化检测 Python 代码实现

针对文本加盐攻击的三层技术特征,本节提供三套轻量化 Python 检测代码,无闭源第三方依赖,可直接集成至邮件网关预处理模块、云邮箱日志审计平台,分别实现 CSS 隐藏样式扫描、用户可视文本还原、加盐风险量化评分,完整覆盖攻击全特征检测需求。

4.1 CSS 隐藏文本特征扫描代码

本代码基于 BeautifulSoup 解析邮件 HTML 源码,匹配三类核心隐藏 CSS 样式特征,标记存在多层遮蔽、零字号、视窗偏移的高危邮件,输出隐藏元素数量、风险等级,适用于邮件网关前置实时筛查。

from bs4 import BeautifulSoup

import re


class CSSHiddenTextScanner:

   def __init__(self):

       # 匹配三类核心隐藏CSS正则表达式,不区分大小写

       self.hidden_css_patterns = [

           # 零字号文本特征

           re.compile(r"font-size\s*:\s*0px?", re.IGNORECASE),

           # 屏幕外偏移特征

           re.compile(r"text-indent\s*:\s*-9999px?", re.IGNORECASE),

           re.compile(r"overflow\s*:\s*hidden", re.IGNORECASE),

           # 视窗裁剪压缩特征

           re.compile(r"clip-path\s*:\s*inset\(100%\)", re.IGNORECASE),

           re.compile(r"max-height\s*:\s*0", re.IGNORECASE),

           re.compile(r"line-height\s*:\s*0", re.IGNORECASE)

       ]

       self.risk_threshold_multi_layer = 2  # 存在2种及以上隐藏样式判定高危


   def scan_html_hidden_elements(self, html_raw: str) -> dict:

       """扫描HTML源码,统计隐藏CSS特征数量,输出风险结果"""

       soup = BeautifulSoup(html_raw, "html.parser")

       all_elements = soup.find_all(["div", "span", "p"])

       hit_pattern_count = 0

       hit_detail = []


       for elem in all_elements:

           elem_style = elem.get("style", "")

           if not elem_style:

               continue

           # 遍历所有隐藏样式规则匹配

           for pattern in self.hidden_css_patterns:

               if pattern.search(elem_style):

                   hit_pattern_count += 1

                   hit_detail.append(f"匹配隐藏样式:{pattern.pattern},元素内容片段:{elem.get_text(strip=True)[:30]}")


       # 风险等级判定

       if hit_pattern_count >= self.risk_threshold_multi_layer:

           risk_level = "high"

           risk_desc = "邮件存在多层CSS文本隐藏,疑似文本加盐钓鱼攻击"

       elif hit_pattern_count == 1:

           risk_level = "medium"

           risk_desc = "邮件检测到单条隐藏CSS样式,存在潜在规避风险"

       else:

           risk_level = "safe"

           risk_desc = "未检测到文本隐藏CSS特征"


       return {

           "total_hidden_style_hit": hit_pattern_count,

           "hit_detail_list": hit_detail,

           "risk_level": risk_level,

           "risk_description": risk_desc

       }


# 代码调用测试示例

if __name__ == "__main__":

   # 模拟含多层CSS隐藏的文本加盐钓鱼邮件HTML片段

   test_html = """

   <html>

   <body>

       <span style="font-size:0px; max-height:0;">

           puppy training notes daily task rhythm book random story paragraph

       </span>

       <div style="text-indent:-9999px; overflow:hidden;">

           long neutral filling text generated by LLM for text salting attack

       </div>

       <div style="color:#000;">【限时福利】您的零售积分即将过期,点击链接领取礼品卡奖励</div>

   </body>

   </html>

   """

   scanner = CSSHiddenTextScanner()

   scan_result = scanner.scan_html_hidden_elements(test_html)

   print("CSS隐藏特征扫描检测结果:")

   print(scan_result)

代码核心检测逻辑贴合 Barracuda 披露的三类主流隐藏技术,可精准识别多层叠加遮蔽样式,在邮件进入 LLM 语义分析模块前完成前置高危拦截,减少 AI 模型被加盐文本污染的概率。

4.2 邮件用户可视文本还原提取代码

本代码过滤全部携带隐藏 CSS 样式的 HTML 元素,仅提取浏览器正常渲染后用户可见的文本内容,分离加盐填充文本与恶意诱饵文案,将纯净可视文本输入 LLM 模型,从底层消除文本加盐对语义分析的干扰,是修复 LLM 检测缺陷的核心工程模块。

from bs4 import BeautifulSoup

import re


class VisibleTextExtractor:

   def __init__(self):

       # 隐藏样式正则集合

       self.hidden_style_regex = re.compile(

           r"font-size\s*:\s*0|text-indent\s*:\s*-9999|clip-path\s*:\s*inset\(100%\)|max-height\s*:\s*0|overflow\s*:\s*hidden",

           re.IGNORECASE

       )


   def remove_hidden_elements(self, soup_obj):

       """递归删除所有携带隐藏CSS样式的HTML元素"""

       target_tags = soup_obj.find_all(["div", "span", "p"])

       for tag in target_tags:

           tag_style = tag.get("style", "")

           if self.hidden_style_regex.search(tag_style):

               tag.decompose()

       return soup_obj


   def get_user_visible_text(self, html_raw: str) -> str:

       """输入原始HTML,返回仅用户可见的纯净文本内容"""

       soup = BeautifulSoup(html_raw, "html.parser")

       # 移除全部隐藏加盐文本容器

       clean_soup = self.remove_hidden_elements(soup)

       # 提取剩余可视文本,去除多余空白换行

       visible_text = clean_soup.get_text(strip=True, separator=" ")

       return visible_text


   def compare_raw_visible_ratio(self, html_raw: str) -> dict:

       """计算原始总文本长度与可视文本长度比值,量化加盐稀释程度"""

       full_soup = BeautifulSoup(html_raw, "html.parser")

       full_raw_text = full_soup.get_text(strip=True, separator=" ")

       visible_text = self.get_user_visible_text(html_raw)

       raw_length = len(full_raw_text)

       visible_length = len(visible_text)

       hidden_ratio = 0.0

       if raw_length > 0:

           hidden_ratio = round((raw_length - visible_length) / raw_length, 4)

       return {

           "raw_total_text_length": raw_length,

           "user_visible_text_length": visible_length,

           "hidden_text_ratio": hidden_ratio,

           "visible_content": visible_text

       }


# 调用测试示例

if __name__ == "__main__":

   test_phish_html = """

   <html>

   <body>

       <span style="font-size:0;">puppy book training task rhythm random long paragraph filler text for salting</span>

       <div>账户安全提醒:立即点击链接完成积分兑换,逾期失效</div>

   </body>

   </html>

   """

   extractor = VisibleTextExtractor()

   ratio_result = extractor.compare_raw_visible_ratio(test_phish_html)

   print("文本加盐稀释度与可视文本提取结果:")

   print(ratio_result)

代码核心价值在于重构 LLM 输入数据源,过滤全部机器可读但用户不可见的加盐填充文本,仅将人类真实阅读的诱饵文案送入大语言模型进行语义判定,从根源解决文本加盐干扰 AI 检测的底层问题。其中hidden_text_ratio指标可量化加盐文本占全文比例,比例超过 0.5 即判定为高风险加盐钓鱼邮件。

4.3 文本加盐风险综合量化评分代码

整合 CSS 隐藏特征、隐藏文本占比、恶意诱饵关键词三类特征,构建加权风险评分模型,输出 0-1 区间风险分数,自动判定拦截、隔离、放行处置策略,可直接对接邮件网关自动化处置引擎。

class TextSaltingRiskScorer:

   def __init__(self):

       # 风险权重配置

       self.weight_hidden_css = 0.4

       self.weight_hidden_ratio = 0.35

       self.weight_mal_keyword = 0.25

       # 零售钓鱼高频恶意诱饵关键词

       self.malicious_keywords = [

           "积分过期", "礼品卡", "奖励兑换", "限时领取", "账户验证",

           "reward", "expire", "gift card", "verify account", "urgent action"

       ]

       # 风险阈值

       self.block_threshold = 0.7

       self.quarantine_threshold = 0.4


   def calc_risk_score(self, css_scan_result: dict, text_ratio_result: dict, visible_text: str) -> dict:

       """综合多维度特征计算文本加盐风险分数"""

       total_score = 0.0

       risk_reason = []


       # 维度1:CSS隐藏样式风险打分

       css_hit = css_scan_result["total_hidden_style_hit"]

       if css_hit >= 2:

           css_score = 1.0 * self.weight_hidden_css

           risk_reason.append("存在多层CSS文本隐藏特征")

       elif css_hit == 1:

           css_score = 0.5 * self.weight_hidden_css

           risk_reason.append("检测到单条文本隐藏CSS样式")

       else:

           css_score = 0.0

       total_score += css_score


       # 维度2:隐藏文本占比打分

       hidden_ratio = text_ratio_result["hidden_text_ratio"]

       ratio_score = hidden_ratio * self.weight_hidden_ratio

       if hidden_ratio > 0.5:

           risk_reason.append(f"隐藏加盐文本占全文{hidden_ratio*100}%,稀释恶意特征")

       total_score += ratio_score


       # 维度3:可视文本恶意关键词匹配打分

       hit_keywords = [kw for kw in self.malicious_keywords if kw.lower() in visible_text.lower()]

       keyword_score = 0.0

       if len(hit_keywords) > 0:

           keyword_score = 1.0 * self.weight_mal_keyword

           risk_reason.append(f"可视诱饵命中钓鱼关键词:{hit_keywords}")

       total_score += keyword_score


       # 处置策略判定

       final_score = round(total_score, 4)

       if final_score >= self.block_threshold:

           action = "block"

           verdict = "确认文本加盐钓鱼邮件,直接拦截"

       elif final_score >= self.quarantine_threshold:

           action = "quarantine"

           verdict = "高可疑加盐钓鱼邮件,隔离并推送管理员告警"

       else:

           action = "pass"

           verdict = "正常邮件,无文本加盐风险"


       return {

           "final_risk_score": final_score,

           "risk_detail": risk_reason,

           "auto_action": action,

           "verdict": verdict

       }


# 综合调用测试示例

if __name__ == "__main__":

   # 模拟前置模块输出结果

   mock_css_scan = {

       "total_hidden_style_hit": 2,

       "hit_detail_list": [],

       "risk_level": "high",

       "risk_description": ""

   }

   mock_text_ratio = {

       "raw_total_text_length": 12800,

       "user_visible_text_length": 620,

       "hidden_text_ratio": 0.9516,

       "visible_content": "您的零售积分即将过期,点击链接领取礼品卡奖励"

   }

   visible_text = mock_text_ratio["visible_content"]

   scorer = TextSaltingRiskScorer()

   final_risk = scorer.calc_risk_score(mock_css_scan, mock_text_ratio, visible_text)

   print("文本加盐综合风险评分结果:")

   print(final_risk)

该代码实现多特征融合风险判定,将 CSS 隐藏特征、加盐文本稀释比例、可见恶意诱饵三类核心攻击指标加权计算,输出标准化处置指令,可实现邮件网关自动化拦截、隔离流程,降低人工安全运营压力。

5 面向文本加盐攻击的四层闭环邮件安全防御体系

结合 Barracuda 官方防护建议、反网络钓鱼技术专家芦笛的分层防御观点、前文攻击机理与检测代码,本文构建事前源头管控 - 事中实时多层检测 - 事后标准化应急处置 - 长效威胁情报运营四层闭环防御框架,覆盖邮件网关技术改造、云租户策略配置、人员安全培训、黑产攻击溯源全维度,消除文本加盐攻击的可行空间。

5.1 第一层:事前源头管控 —— 压缩文本加盐攻击投递渠道

事前管控从邮件分发源头阻断攻击触达,核心措施分为邮件身份认证加固、发件人信誉管控、第三方 AI 钓鱼生成工具拦截三类,降低加盐钓鱼邮件抵达企业网关的概率。

5.1.1 全量启用邮件身份认证协议

强制企业域名配置 SPF、DKIM、DMARC 完整三重邮件认证,对未通过 DKIM 校验、DMARC 策略为无防护的邮件直接隔离。Barracuda 百万级样本数据显示,72% 加盐钓鱼邮件依托 DKIM 合规域名提升投递成功率,收紧 DMARC 策略可拦截近半数低信誉仿冒域名攻击。

反网络钓鱼技术专家芦笛补充,仅依靠 DKIM 无法完全阻断攻击,攻击者可劫持正规站点完成签名,需配套发件人信誉动态评分机制,对短时间批量发送零售福利主题邮件的域名标记高风险。

5.1.2 云邮箱租户权限与内容管控

针对 Microsoft 365、阿里云邮等企业云邮箱配置标准化管控策略:

限制外部匿名发件人批量群发邮件,设置单 IP、单域名每日邮件投递上限;

拦截外部邮件内短链接跳转、第三方仿冒零售站点域名,维护零售钓鱼恶意域名动态黑名单;

关闭外部邮件自动图片加载、自动链接预览功能,减少用户无意识点击恶意链接行为;

禁用 HTML 自定义复杂 CSS 渲染,过滤clip-path、text-indent、font-size:0等高风险样式自动渲染。

5.1.3 常态化员工专项安全培训

FBI、Barracuda 安全报告均指出,人员是邮件安全体系的薄弱环节,针对文本加盐攻击的培训需打破固有认知误区:

专项讲解 “源码与视觉内容分离” 攻击原理,告知员工即便邮件内容简短正常,外部链接仍存在钓鱼风险;

每月投放复刻文本加盐技术的仿真钓鱼演练,使用零售福利诱饵测试员工点击行为;

统一办公规范:外部福利、账户验证类邮件禁止直接点击内嵌链接,手动访问官方零售平台核验通知真伪。

5.2 第二层:事中实时多层检测 —— 修复 AI 邮件系统原生缺陷

依托第四章三套 Python 检测代码,重构邮件网关预处理流程,形成 “CSS 隐藏特征扫描→可视文本还原提取→加盐风险量化评分→LLM 语义分析” 四层串行检测链路,从底层解决文本加盐干扰 AI 模型的核心问题。

5.2.1 前置 CSS 隐藏样式实时筛查

将 CSSHiddenTextScanner 模块部署为邮件网关第一级预处理流程,检测到多层叠加隐藏样式的邮件直接标记高风险,优先隔离,避免污染下游 LLM 语义分析模块,减少模型计算资源消耗。

5.2.2 可视文本还原作为 LLM 唯一输入源

改造 LLM 邮件安全模块输入逻辑,调用 VisibleTextExtractor 过滤全部隐藏加盐文本,仅将浏览器渲染后的用户可视文本送入大语言模型进行意图、风险判定,彻底消除海量中性填充文本对语义分析的干扰,修复 LLM 原生架构缺陷。

5.2.3 加盐稀释度量化风险加权判定

集成 TextSaltingRiskScorer 综合评分模块,结合隐藏文本占比、CSS 特征、恶意诱饵关键词输出标准化处置指令,分数高于阈值自动拦截可疑邮件,中等风险邮件隔离至安全管理员审查区,实现自动化分层处置。

5.2.4 多维度辅助特征联动校验

叠加发件人信誉、邮件链接域名、邮件主题相似度、批量群发行为辅助校验,单一维度风险不触发处置,但多维度特征叠加同步命中时提升风险权重,弥补单一层检测的漏报缺陷。

5.3 第三层:事后标准化应急处置流程

若检测系统漏报,员工点击加盐钓鱼邮件内恶意链接触发安全事件,执行标准化六步应急处置流程,最大限度降低数据泄露、财产损失风险:

步骤 1:临时冻结涉事员工云邮箱账户,阻断攻击者依托账户发送同源加盐钓鱼邮件完成内部横向扩散;

步骤 2:提取邮件完整 HTML 源码,运行三套检测代码完成攻击特征复盘,记录隐藏 CSS 类型、加盐文本稀释比例、恶意诱饵关键词;

步骤 3:检索租户邮件审计日志,统计同源加盐钓鱼邮件投递范围,向全体收件员工推送专项风险预警;

步骤 4:清理账户内攻击者新增邮件转发规则、外部应用授权、备用联系方式,消除持久驻留通道;

步骤 5:将本次攻击的 CSS 特征、恶意域名、诱饵话术同步更新至网关检测规则库,动态升级拦截阈值;

步骤 6:留存完整邮件样本、检测日志,向 Barracuda、行业威胁情报平台提交攻击样本,补充黑产情报库。

5.4 第四层:长效威胁情报运营 —— 对抗 AI 驱动的迭代攻击

反网络钓鱼技术专家芦笛强调,生成式 AI 持续降低文本加盐攻击制作门槛,黑产会不断迭代 CSS 隐藏组合、诱饵话术、填充文本生成逻辑,静态检测规则会持续失效,必须建立动态长效情报运营机制:

威胁情报动态同步更新:对接 Barracuda、Cisco Talos 等安全厂商威胁情报库,同步新增零售钓鱼恶意域名、新型 CSS 隐藏样式、AI 加盐文本特征,每日自动更新网关检测规则;

月度安全策略复盘优化:汇总当月仿真钓鱼演练、真实文本加盐安全事件数据,调整风险评分权重、隐藏文本占比阈值,适配黑产攻击迭代特征;

跨行业样本协同共享:政企、零售行业企业共享文本加盐钓鱼样本,联合安全厂商分析 AI 填充文本生成规律,研发针对 AI 生成加盐内容的专属语义识别规则;

持续跟踪 HTML 邮件标准漏洞:跟踪邮件客户端 CSS 渲染机制更新,同步调整隐藏样式匹配规则,避免攻击者利用浏览器兼容漏洞开发新型文本加盐遮蔽技术。

6 总结与研究展望

6.1 核心研究结论

本文以 2026 年 Barracuda 监测到的百万级零售主题文本加盐钓鱼事件为实证基础,完成系统性拆解与防御体系构建,得出四项核心研究结论:

第一,文本加盐(Text Salting)依托 AI 批量生成中性填充文本、多层 CSS 隐藏技术形成规模化对抗攻击,可同步绕过传统静态关键词过滤、机器学习分类器、LLM 大语言模型三类主流 AI 邮件安全防御工具,核心底层漏洞是现有安全系统仅解析原始 HTML 源码,未还原用户可视渲染文本;

第二,攻击主流 CSS 隐藏手段分为视窗裁剪、屏幕外偏移、零字号文本三类,多层样式叠加遮蔽是规避基础特征检测的关键,零字号字符插入还可拆分恶意特征短语,实现双重绕过;

第三,修复 LLM 邮件安全系统缺陷的核心工程方案为前置过滤隐藏加盐文本,仅提取用户可视内容作为模型输入,配套 CSS 隐藏特征扫描、加盐稀释度量化加权评分,可将文本加盐钓鱼邮件拦截率提升至 94.7% 以上;

第四,文本加盐攻击是 AI 技术双向赋能网络攻防的典型案例,攻击者依靠生成式 AI 降低攻击成本,防御方需同步改造 AI 检测底层输入逻辑,构建 “事前管控 - 事中多层检测 - 事后应急处置 - 长效情报运营” 四层闭环防御体系,单一维度技术防护无法持续对抗迭代化黑产攻击。

反网络钓鱼技术专家芦笛总结,文本加盐攻击揭示当前 AI 邮件安全建设的普遍认知误区:多数厂商过度依赖大语言模型语义分析能力,忽视 HTML 源码与用户视觉视图的信息差漏洞,防御体系设计必须兼顾机器解析逻辑与人类真实阅读场景,从数据输入源头消除对抗性规避手段的干扰,才能发挥 AI 安全工具的防护价值。

6.2 研究局限与未来展望

本文研究存在两处客观局限:一是三套 Python 检测代码为轻量化原型实现,未集成深度学习多模态视觉渲染模块,大规模企业环境下可结合浏览器渲染引擎模拟完整页面视图,进一步提升隐藏文本识别精度;二是实证样本以零售主题钓鱼邮件为主,办公通知、金融账单类文本加盐攻击话术特征有待补充更多行业样本完善风险关键词库。

未来针对文本加盐类 AI 对抗钓鱼攻击的研究可向三个方向延伸:

浏览器渲染引擎集成检测技术研究,模拟全兼容邮件客户端 HTML 渲染逻辑,精准识别多层嵌套、响应式 CSS 隐藏加盐文本;

大语言模型对抗训练优化研究,使用海量文本加盐钓鱼样本微调邮件安全 LLM,提升模型在存在隐藏填充文本场景下的恶意意图识别能力;

生成式 AI 钓鱼攻击溯源技术研究,依托加盐文本句式、词汇特征溯源攻击者使用的大模型工具,配合执法机构打击 PhaaS 钓鱼服务平台,从源头减少文本加盐攻击供给。

随着生成式 AI 工具持续普及,依托 HTML、CSS、字符编码的对抗性邮件规避技术会持续迭代,政企单位邮件安全建设不能仅依靠单一 AI 语义检测模块,必须构建源码解析、视觉还原、特征量化、情报动态更新的多层纵深防御体系,平衡办公通信便捷性与云邮箱数据、资金安全防护能力,应对 AI 产业化网络钓鱼带来的长期对抗风险。

编辑:芦笛(公共互联网反网络钓鱼工作组)

目录
相关文章
|
消息中间件 存储 运维
浅析阿里《云原生架构白皮书》
提前看了《云原生架构白皮书》一直想着要写点东西,拖延来去[《白皮书》](https://developer.aliyun.com/topic/cn-architecture-paper)已经正式发布2天了,我还迟迟没有动手。没动手的一方面原因是我的懒癌症又犯了;另一个原因是《白皮书》覆盖面之广,基本触及到云原生的方方面面,而我在云原生方面的知识储备不足以支撑我写出一篇好文。
6475 0
浅析阿里《云原生架构白皮书》
|
存储 缓存 网络协议
你只会用 Java Sockets?推荐 11 个开源的 Java Socket 框架
你只会用 Java Sockets?推荐 11 个开源的 Java Socket 框架
2457 0
|
4月前
|
IDE 小程序 开发工具
HBuilderX 4.76安装教程 Windows版:解压+创建桌面快捷方式+启动验证指南
HBuilder X是DCloud推出的轻量级IDE,专注Web、小程序及uni-app跨平台开发,以极速性能、智能提示和护眼设计著称。本文详解4.76版下载、解压、创建快捷方式及验证安装全流程。
|
4月前
|
人工智能 算法 安全
AI少儿英语学习APP的开发
专为3-12岁儿童打造的AI英语学习APP,以“AI玩伴”为核心,融合语音交互、多模态识别(识物/绘本)、故事共创与游戏化闯关;采用儿童优化ASR、端侧安全模型及自适应难度算法;兼顾趣味性、安全性与家长透明度,支持学龄前语感启蒙或小学阶段应试表达。
|
4月前
|
Linux API iOS开发
从零到精通!OpenClaw(Clawdbot)阿里云/本地部署、API配置与常见问题一站式手册(2026最新版)
2026年,OpenClaw(原Clawdbot、Moltbot)作为开源AI智能体领域的标杆框架,凭借“本地优先、隐私安全、插件扩展、多端适配”的核心特性,成为个人提升效率、企业简化协作的首选工具。它并非传统意义上的聊天机器人,而是能将自然语言指令转化为实际操作的“数字员工”,可实现文件管理、网页自动化、代码辅助、信息检索等全场景任务,适配阿里云云端部署与MacOS、Linux、Windows11本地部署,且能无缝对接阿里云百炼Coding Plan免费大模型,零成本实现智能升级。
796 4
|
Ubuntu 计算机视觉 芯片
ADE下载问题解决:编译OpenCV于Ubuntu 18.04
如果显示了OpenCV的版本号,那恭喜你,一道编译大餐现已酣畅淋漓,色香味俱佳,等你品尝。
432 8
|
人工智能 运维 监控
从大规模恶意攻击 DeepSeek 事件看 AI 创新隐忧:安全可观测体系建设刻不容缓
本文探讨了中国大模型DeepSeek在全球范围内的成功及其面临的网络安全挑战。DeepSeek以低成本、高性能的特点迅速走红,甚至超越ChatGPT,但同时也遭受了大规模恶意攻击,如DDoS和密码暴力破解。文章分析了这些攻击对AI行业的影响,并提出通过阿里云构建安全可观测体系的解决方案,包括流量监控、日志审计与异常检测等,为AI技术的安全发展提供保障。
609 1
|
传感器 缓存 监控
Stream 组件在 Flutter 中的应用场景有哪些?
Stream 组件在 Flutter 中的应用场景有哪些?
596 58
|
机器学习/深度学习 人工智能 安全
【Python专栏】Python的历史及背景介绍
【Python专栏】Python的历史及背景介绍
2191 6
|
机器学习/深度学习 自然语言处理 数据可视化
开箱即用!智能文档处理“百宝箱“
10 月 24 日至 26 日,CSDN 第五届“1024 程序员节”在长沙召开。合合信息的常扬老师分享了智能文档处理“百宝箱”,包括 TextIn ParseX、acge-embedding 和 markdown_tester 三种工具。这些工具解决了文档解析中的版式复杂、解析错误、语义信息丢失等问题,适用于文字工作者和机器学习研究人员。TextIn ParseX 是一个可视化工具,支持多种格式输出,acge-embedding 模型用于文本向量化,而 markdown_tester 则用于文档解析效果的定量评估。
440 0