首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >当 AI 安全赛变成了 Web 捡漏局:第三届数信杯参赛思考与“模型防御”题的非预期解

当 AI 安全赛变成了 Web 捡漏局:第三届数信杯参赛思考与“模型防御”题的非预期解

作者头像
枇杷熟了
发布2026-03-26 13:56:57
发布2026-03-26 13:56:57
50
举报
文章被收录于专栏:黑伞安全黑伞安全

一、 AI 安全比赛的“水土不服”

现在的 AI CTF 出题似乎陷入了一个怪圈:出题人懂 AI 但不懂安全,或者懂 Web 安全但不懂 AI。这就导致了题目往往处于一种割裂状态。团队的师傅说这种题简直随便出,大模型从 0 到有的过程就能无限出题,贴上安全的外衣即可。

1. 对抗生成?不,是 F12 大法

比赛中有一道“AI 审计邮箱”的题目,题目描述极其唬人:由于后端集成了“合规审计系统”“自动登录助手”,你需要构造特殊的邮件内容,既要绕过审计系统的敏感词拦截,又要让自动登录助手识别出其中的账号密码。

作为一个 AI 安全研究者,看到这种题目,我的 DNA 动了。这显然是在考LLM 的指令遵循与防御绕过吧?于是我拿出了打学术界 SOTA(State of the Art)的劲头,构思了一套极其复杂的组合拳:

  • 隐写术:我尝试将敏感凭证伪装成正常业务数据,试图欺骗 embedding 层;
  • 时间编码:创造性地利用时间戳格式作为载体,赌 AI 难以识别这种非自然语言的模式;
  • 分散编码:将账号密码碎片化分散在全文各处,降低注意力机制的集中权重;
  • 上下文伪装:甚至把所有编码都嵌入到一份专业的系统运维报告格式中,试图用权威语气进行上下文伪装。

结果呢?全、部、被、拦。那个审计 AI 就像个毫无感情的关键词匹配机器,任凭我把 Prompt 写出花来,它就是死活不认。

就在我怀疑人生,以为碰上了什么黑科技防御时,我甚至开始怀疑是不是思路太复杂了。百无聊赖中,我按下了F12,打开了开发者工具。

那一瞬间,我沉默了。我对着屏幕笑了:这不是 AI 安全,这是前(故)端(意)开(设)发(计)事故。

2. Pickle 反序列化:时代的眼泪

另一道稍微沾边的题考察的是 pickle 反序列化。对于打过传统 CTF 的人来说,这属于“送分题”。Python 的 pickle 模块由于其不仅序列化数据还序列化指令的特性,天生就不安全,参考CVE-2024-3568。思路上确实可以刷漏洞,打一下 SRC 也是有可能的。不过现在的模型权重大多都在向 safetensors 迁移,所以就趁年轻抓紧刷洞吧。(我自己出题也爱出这种...)


二、 降维打击:第八题“模型防御”的非预期解

第八题“神经元剪枝脱毒防御”则是一个典型的“设计失误导致逻辑崩塌”的案例。

1. 题目本意:高大上的剪枝与脱毒

根据任务书描述 ,这道题的背景设定非常宏大:

  • 场景:深度神经网络在资源受限环境下的部署。
  • 问题:模型中存在“投毒”结构(恶意或冗余神经元)。
  • 任务:利用平台提供的可视化工具进行剪枝(Pruning),在保持准确率(95%以上)的同时去除毒性 。
  • 机制:题目给了一个predict.py定义模型结构,以及一个model.pth权重文件 。

按照出题人的预期,选手应该去分析神经元的激活值,通过可视化面板找到那些对输出贡献异常或者不重要的神经元,手动或自动切断连接。这是一个典型的模型优化与可解释性问题。

2. 破局点:从黑盒防御变成白盒拟合

然而,当我打开“模型性能评估”页面时,一切都变了。

平台为了方便选手查看“误差”,竟然直接展示了测试集的详细信息,并且——支持导出 CSV。 我下载了 CSV 一看,里面完整包含了 200 条测试样本的输入(x1, x2, x3)和真实值。

Critical Thinking 时刻:

  • 传统思路:上传模型 -> 平台用私有测试集打分 -> 分数不够 -> 修改剪枝策略 -> 重试。(黑盒优化)
  • 非预期思路:既然你把“考卷答案”都给我了,我为什么要学“剪枝”?我直接背答案不就行了?

这瞬间从一个复杂的“模型剪枝脱毒”问题,退化成了一个最基础的“已知 200 个数据点的过拟合(Overfitting)”问题。我不关心模型有没有毒,我只关心我的输出能不能完美拟合这 200 个 y_true。

3. 技术实现:暴力过拟合

既然决定了走非预期解,剩下的就是写代码了。

第一步:复刻模型结构 从题目提供的predict.py中,我们可以直接看到官方的模型架构 : 一个简单的 5 层全连接网络(3 -> 32 -> 24 -> 16 -> 8 -> 1),层间使用 ReLU 激活。

第二步:构建“作弊”训练集 直接读取从平台下载的 CSV 文件,将这 200 条测试数据作为我们的训练集

第三步:针对性训练 这里的核心策略是放弃泛化能力,追求极致的记忆

  • Loss Function:使用SmoothL1Loss,对回归任务友好且稳定。
  • Epoch:直接拉满到 8000 轮甚至更多,直到 Loss 接近于 0。
  • 无验证集:不需要验证集,因为我们的目标就是“过拟合”这 200 条数据。

代码核心逻辑如下(完整代码略):

代码语言:javascript
复制
# 定义与官方 predict.py 一致的模型
class SimpleRegressionModel(nn.Module):
    def __init__(self):
        super().__init__()
        self.fc1 = nn.Linear(3, 32)
        # ... (中间层略)
        self.fc5 = nn.Linear(8, 1)
        self.relu = nn.ReLU()
    # ... Forward 逻辑略

# 加载“泄露”的测试集
dataset = CSVDataset("test_data_leaked.csv") # 200条数据
# 疯狂训练
for epoch in range(8000):
    pred = model(x)
    loss = loss_fn(pred, y)
    loss.backward()
    optimizer.step()

4. 结果

将本地训练好的(严重过拟合的)model.pth上传。 平台原本用来评估泛化能力的测试集,此刻已经被我的模型完全“背诵”下来了。 匹配率:100%(或接近)。 系统判定通过,直接弹出 Flag 。

所谓的“剪枝”、“脱毒”、“可视化分析”,统统没有用到。


三、 对当前 AI 安全 CTF 的反思

这次比赛的经历,其实折射出当前 AI 安全领域竞赛的两个尴尬现状:

  1. 概念错位:很多主办方认为 AI 安全 = AI 算法题。其实真正的 AI 安全更偏向于 System Security for AI(如模型文件解析漏洞、推理框架漏洞)或者 AI Specific Attacks(如提示词注入、对抗样本)。像这种单纯考“剪枝”的题,更像是算法岗的面试题,而非 CTF 题。
  2. Web 漏洞喧宾夺主:这是最致命的。题目想考 AI,结果环境本身存在逻辑漏洞(如本题的数据集泄露)或 Web 漏洞(F12、SQL注入等)。当解题的最短路径变成了 Web 渗透时,这道 AI 题就失败了。

对于我们这种想在 AI 安全领域深耕的从业者来说,我们渴望的是更贴近真实大模型攻防场景的挑战——比如如何在黑盒状态下通过 API 逆向出 Prompt,或者如何构建特殊的 payload 绕过大模型的对齐机制。

希望未来的比赛能少一点“Pickle”,少一点“F12”,多一点真正的Adversarial Intelligence


本文仅代表个人参赛观点,技术交流使用。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2026-01-07,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 枇杷熟了 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、 AI 安全比赛的“水土不服”
    • 1. 对抗生成?不,是 F12 大法
    • 2. Pickle 反序列化:时代的眼泪
  • 二、 降维打击:第八题“模型防御”的非预期解
    • 1. 题目本意:高大上的剪枝与脱毒
    • 2. 破局点:从黑盒防御变成白盒拟合
    • 3. 技术实现:暴力过拟合
    • 4. 结果
  • 三、 对当前 AI 安全 CTF 的反思
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档