Rez0 的惊艳缓存漏洞 & 本地 AI 对决补贴 Token(Ep.191)
整体摘要
本期是 CTBB(Critical Thinking Bug Bounty,"批判性思维")播客第 191 期,主持人为 Justin 与 Rez0(Joseph Thacker)。核心内容有三块:其一,Rez0 分享被 Justin 誉为"年度最爱"的漏洞——针对带 AI 聊天机器人的高安全产品,组合运用提示注入(auto-invoke 参数)、CSP 绕过、服务器端缓存命中/未命中侧信道(XS-Leak)与 tab-nabbing,实现一键点击、逐字符窃取用户密钥的完整攻击链;其二,两人辩论"本地 AI vs 补贴 token":Rez0 预订了 256GB M5 Ultra Mac Studio,系统论述本地模型的四大用途(冗余备份、省 token 子代理、越狱助手、敏感数据不出域),并给出"聪明模型编排 + 本地傻瓜代理"的最优用法;其三,穿插 Justin 两周约 50 个 bug 的 hackbot 战报、herder.dev 工具推荐、3D 打印 lithophane 结婚礼物、平均分配赏金池的 live-hack 新玩法等话题。
开场闲聊与赞助商(YesWeHack 的 Codex 漏洞赏金博客)
节目以一段关于 "Ubuntu" 发音的内部梗冷开场(该梗在 30:35 处再次出现)。随后进入本周赞助商环节:YesWeHack 发布了一篇如何用 OpenAI Codex 做漏洞赏金的博客,兼具课程式引导与大量实测数据。
| 时间 | 类型 | 说明 |
|---|---|---|
| 00:42 | 节目开始 | 主持人开场(冷开场为 Ubuntu 发音之争的预剪片段) |
| 00:46 | 赞助/资源 | YesWeHack 发布"用 Codex 做漏洞赏金"博客文章,课程式入门但内容详实、数据丰富 |
| 01:03 | 核心问题 | 博客核心问题:Codex 能否做到端到端的漏洞修复(而不只是标记可疑代码);主持人经验:绝对可以 |
| 01:14 | 案例 | 讨论安全研究员 Hash Kitten 的 "WordPress to Shell" 利用过程(借助 GPT 系模型找到) |
| 01:29 | 工作流 | 推荐的 Codex 赏金工作目录结构:scope(范围标记)、recon(侦察)、requests(请求)、scripts(脚本)、source(源码)、findings(发现) |
| 01:39 | 关键步骤 | 博客还讲解:提高效率的配置变更、黑盒测试设置、集成 Playwright、Burp,也可用 Caido(其云技能在 Codex 中好用) |
| 02:00 | 核心概念 | Hash Kitten 将 OpenAI 用于解决未解数学问题(Cycle Double Cover Conjecture,环双覆盖猜想)的提示词改编为 "WP to Shell" 攻击提示词;主持人用同样脚本做了抽象化,使其适用于任何黑盒赏金/渗透场景 |
- 上期 Rez0 麦克风出问题,本期已修复(02:35 提及)。
- 赞助要点:YesWeHack 博客把"AI 编码代理做端到端漏洞修复"的问题用大量数据和一步步设置指导讲透,值得一看。
Rez0 的"年度最爱"漏洞——AI 聊天机器人 + 提示注入 + 缓存 XS-Leak
Rez0 分享了一个被 Justin 称为"今年最喜欢的 bug"的完整攻击链:目标是一个安全强度很高的带 AI 聊天机器人的产品。链条包括:URL 参数自动调用(auto-invoke)提示注入 → Markdown 图片渲染外泄受限(CSP 只信任 CDN 域)→ 利用"用户头像被缓存"的特性做服务器端缓存命中/未命中侧信道 → 按索引逐字符外泄密钥 → 用 Cloudflare Turnstile 一键验证码 + tab-nabbing 实现干净的一键 POC。另附一个更简单的第二种利用路径。
| 时间 | 类型 | 说明 |
|---|---|---|
| 02:49 | 背景 | 距上次分享精彩漏洞已过多期;Justin 评价:这是他今年最喜欢的 bug |
| 03:08 | 目标介绍 | 目标是安全系数极高的产品,带有 AI 聊天机器人;Rez0 用 Codex(免费版小模型,听话)辅助挖掘 |
| 03:26 | 关键步骤 | 经典注入思路:注入 ?q= 查询参数;Codex 很快在 JS 中定位到两个参数:查询参数 + auto-submit/auto-invoke(自动提交/自动调用)参数 |
| 03:53 | 攻击面 | 应用可访问账户内大量敏感对象数据,存在大量不可信数据 → 只差数据外泄通道 |
| 04:05 | 挫折 | 手动让小模型"渲染这张图片"失败;把大份 Markdown 图片载荷速查表粘给 Codex,约 10 分钟找到渲染点 |
| 04:29 | 核心概念 | 外泄本质上是一个 CSP 绕过:图片只能从受信任的 CDN 域加载;但(此漏洞中)无法控制该 CDN 域上的内容 |
| 04:53 | 转折 | 告诉 Codex"链条其他环节都齐了,肯定有办法外泄";Codex 发现疯狂的东西:每个用户的头像(profile picture)是自动生成且被缓存的 |
| 05:14 | 核心概念 | 缓存侧信道:若受害者的自动调用代理(agent)命中过某个头像,再次请求时得到"缓存命中"而非"缓存未命中"——命中/未命中即 1bit 可观测信号 |
| 05:27 | 关键步骤 | 构建大型脚本框架:批量尝试以特定字节结尾的头像路径;自动调用提示接近可执行操作的极限(需指示 agent 向 CDN 路径发大量 Markdown 图片请求) |
| 05:58 | 重点结论 | 最终载荷 = 可点击的 auto-invoke 提示(或 CSRF):让代理"去取受害者存储对象中的秘密,然后生成一堆 Markdown 图片路径,路径末字节 = 该秘密第 N 个字符的索引" |
| 06:28 | 重点结论 | 服务端脚本尝试数百/数千个带结尾字节的头像,按索引关联结果;每个字符只需一次缓存命中 → 通过缓存逐字符泄露完整秘密(XS-Leak / 服务器端缓存侧信道) |
| 06:58 | 注意事项 | 攻击过程受害者会"实时看着自己在屏幕上被攻击",需要隐藏攻击行为 |
| 07:20 | 关键步骤 | 隐藏方案:tab-nabbing(标签页偷换)效果很好;但 Chrome 中首次设置无法用 Tab 键自动重定向,至少需要两次点击(进入攻击者页面一次、弹出窗口一次);CTBB Discord 有人研究过免点击的怪招,但通常仍需一次点击 |
| 08:04 | 方法论 | 灵感来自东京 Google LiveHack 活动的教诲:必须交付最干净、最真实的 POC |
| 08:14 | 重点结论 | 一键 POC:受害者的"点击"选在 Cloudflare Turnstile 一键验证码上——页面看起来干净自然,点击后原标签页立即重定向到 auto-invoke 页面(提示注入运行,通过 Markdown 图片渲染提取应用内存储的密钥),同时新开一个正常标签页(博客内容)作掩护 |
| 09:16 | 重点结论 | 服务器在后台查询缓存确定命中结果;用户只需轻轻一点,秘密就泄露了;UI 呈现"红红红绿红红",变绿即该字符被恢复并显示在右侧栏,最终得到完整秘密 |
| 09:23 | 重点结论 | Justin 总结该漏洞三大美学:前端美感 + AI 提示注入(prompt injection)+ 通过服务器端缓存实现的 XS-Leak |
| 10:17 | 示例说明 | 演示节奏:弹出后启动计时器,平均约 2 分钟逐字符暴力破解出整个密钥,只需持续检查缓存索引 |
| 10:57 | 延伸 | 第二种方法:类似"用 Google 脚本窃取数据"的 CSP 绕过(script gadget 思路)——在自己可访问的根域上设置请求处理器(SSRF 不可行);Rez0 用该方法无需花哨操作直接把秘密经 Markdown 图片外泄到自己的服务器,并作为第二个漏洞报告提交(厂方未必接受) |
- 漏洞链条总结(复现思路):
- 寻找
?q=+auto-invoke类参数(AI 应用常见注入入口)。 - 应用有 CSP:图片仅限可信 CDN 域 → 常规 Markdown 图片外泄失效。
- 关键发现:头像按用户自动生成并被缓存 → 受害者代理请求过的头像路径在缓存中留痕。
- 让被注入的 agent 生成"末字节 = 秘密字符索引"的头像/CDN 图片路径。
- 攻击者侧批量探测缓存命中,按索引拼出秘密(每字符一次命中)。
- 交付层:Cloudflare Turnstile 一键点击 + tab-nabbing 隐藏真实跳转,POC 干净可信。
- 寻找
- 教学点:XS-Leak 不只存在于浏览器端;服务器端缓存命中差异同样构成侧信道。AI 聊天机器人把"注入"和"代理能力"送上门后,缓存侧信道就成了完美外泄通道。
Justin 的 hackbot 战报——两周约 50 个 bug 与 AI 报告分诊难题
Justin 汇报在 Rez0 激励下"扩大规模"的成果:hackbot(黑客机器人)持续运转,约两周提交了约 50 个 bug,项目方响应快、优先级高、付款迅速。厂商坦言"AI 报告数量庞大导致分诊困难",Justin 的批量高质量 AI 报告反而成为"本周完美范例"。
| 时间 | 类型 | 说明 |
|---|---|---|
| 11:49 | 战报 | Justin 的清单里有很多 bug,多数"无聊"但量大 |
| 12:00 | 数据 | hackbot 疯狂运行,约两周提交约 50 个 bug |
| 12:23 | 重点结论 | 漏洞全部高优先级;该项目响应快、付款快 |
| 12:43 | 行业观察 | 该项目对 AI 非常友好;厂商直言"由于 AI 报告数量庞大,现在分诊(triage)变得非常困难",并笑称 Justin 本周的表现就是"完美例子" |
| 13:19 | 数据 | 受 Rez0"扩大规模"挑战以来,Justin 已能稳定保持每天捕获 3-5 个 bug |
| 13:48 | 投入 | Justin 现在毫不犹豫每月花费数千美元用于计算、服务器和 AI token;"先花钱才能赚钱"在赏金行业正变得越来越普遍 |
本地 AI vs 补贴 token——硬件投资(Mac Studio / DGX Spark / ASUS Spark)
Justin 提出本期核心议题:要不要买硬件自建本地 AI 算力。Rez0 已预订 256GB M5 Ultra Mac Studio(约 1 万美元,11 月发货);对比 NVIDIA DGX Spark 与更便宜的 ASUS 版 Spark(同芯片、1TB 盘省 1000 美元);圈内朋友纷纷入坑(Turbo 1 台、Ian Carroll 4 台)。
| 时间 | 类型 | 说明 |
|---|---|---|
| 14:11 | 议题引入 | 重要问题:人们消费和投资的一种方式是购买(AI)硬件 |
| 14:22 | 背景 | 显卡/硬件半年内价格大涨,朋友们很伤心 |
| 14:25 | 关键步骤 | Rez0 预订 256GB Mac Studio(M5 Ultra,起价约 9 千-1 万美元),11 月才到货;信用卡发货后才扣款 |
| 15:14 | 对比 | 与 NVIDIA DGX Spark 对比:两台 ASUS(华硕)版 Spark 约 $3,999,单台约 $4K |
| 15:34 | 省钱方案 | ASUS 主板用完全相同的 Spark 芯片与内部组件,只是磁盘小(1TB vs 4TB),可省约 1000 美元;想要 256GB 统一内存跑 AI 模型又想省成本,可买两台 ASUS Spark |
| 16:07 | 圈内动态 | Turbo 买了一台 Spark;朋友 Ian Carroll(伊恩·卡罗尔)买了四台 |
| 16:29 | 议程 | Justin:想列举使用场景,给听众"该不该买硬件"的实用建议 |
本地 AI 的定位与用法(冗余、成本、子代理、越狱、隐私)
Rez0 系统论述买硬件/本地 AI 的理由:(1) 补贴 token 太划算能买就买,但本周 hackbot 的 bug 让 Codex 订阅额度几乎耗尽 + Claude 宕机 2 小时,让他意识到"没有 AI 无法工作",本地 AI 是冗余备份与对冲(防补贴取消、防监管);(2) 最优用法是"聪明模型当编排 + 本地小模型当省 token 的傻瓜子代理/报告生成器",而不是让笨模型先上手(会假阳性报告);(3) 敏感漏洞开发、越狱助手、渗透客户要求数据不出门等场景本地模型不可替代。Justin 补充吞吐量担忧(DGX Spark 双机约 20-30 token/s、4 并发流)与多机互联问题。
| 时间 | 类型 | 说明 |
|---|---|---|
| 16:43 | 立场 | Rez0:不介意为补贴 token 付费,能买多少买多少;$225-250 就能拿到 20 倍顶配订阅额度,非常划算;看到越来越多人取消云订阅觉得疯狂 |
| 17:11 | 核心概念 | 投资本地 AI 的根本原因:已经意识到没有 AI 真的无法工作 |
| 17:23 | 案例 | 本周事故:Rez0 的 hackbot 用 Codex 当管理器(orchestrator),把海量数据倾倒进 Codex 不停刷屏,几乎耗尽订阅额度 |
| 17:58 | 案例 | 录制当天 Claude 已宕机约 2 小时——"我做不到(没有 AI 干活)" → 需要本地 AI 作为冗余备份 |
| 18:15 | 风险判断 | 一旦(厂商)停止补贴 token,本地 AI 的(相对)价格就会飙升 → 最好现在就着手准备,以防万一 |
| 18:26 | 类比 | 类似"大家越来越不会手写 bash 命令":即使全部云端系统宕机,本地模型(如 Qwen)仍可用;若未来法规禁止用 AI 做网络安全,仍需要渗透测试能力 → 本地 AI 是对冲手段 |
| 19:38 | 反模式 | 与 JD 讨论过"先用笨的本地模型再升级到聪明模型":结论是坏主意——笨模型会在实际入侵成功之前就声称已入侵,产生虚假报告 |
| 19:55 | 重点结论 | 最有效用法:本地跑"中等聪明"模型,告诉 Codex:"需要技巧/品味/质量的任务必须用自己的子代理;只需一次性脚本完成的傻事就交给本地模型"——一个"傻瓜代理"用来省 token |
| 20:24 | 用法 | 小模型干这类活反而更自然(没那么"聪明"也没那么偏执);还可用本地模型当报告生成器(报告生成来回迭代非常耗 token) |
| 21:07 | 用法 | Justin 补充:如今的简单模型也已非常好(不是 GPT-2 时代);数据合成(data synthesis)可能是最重要的委派任务:让子代理读整个 JS 文件并给出可抽查的偏移量锚点(如"客户端路径在此定义"、"这里拼接导致 API 请求全崩") |
| 21:55 | 注意事项 | 主要担心:本地模型吞吐量。子代理/框架大多处于等待状态,父模型要么等待要么闲置,反而可并发 4 个任务 |
| 22:14 | 数据 | DeepSeek Flash v4:两台 DGX Spark 即可较快流式输出、4 并发流、约 20-30 token/s;Justin 吐槽"20-30 token/s?哎哟兄弟",自己可能只搞到三台(机) |
| 22:59 | 待研究 | 多机链式互联(chaining)没法像以前那样轻松串联,三台芯片可能需要交换机之类的东西,待研究 |
| 23:15 | 用法 | 理由一(双重):极敏感的漏洞利用开发。朋友 sshell 需要写脚本解析敏感数据时不敢用云端模型;有时直接与不受限制的模型对话快得多 |
| 23:54 | 用法 | 理由二:越狱助手。没有哪个顶级模型(Opus、Daybreak、Soul 等,机翻存疑)乐意帮你写越狱其他模型的载荷;本地越狱模型作为"越狱副驾驶"非常有用 |
| 24:23 | 用法 | 理由三(Matt Brown 补充):渗透测试客户不允许敏感数据发给 OpenAI/Anthropic 时,本地模型可整夜跑测试,数据永不离开你家 |
| 24:48 | 平衡观点 | Justin:仅在部分威胁模型下有意义;对声称"数据太重要不能出门"的客户直言"兄弟,你没那么重要";但该能力值得"放在口袋里"备用 |
- 成本-用法分层(本节核心框架):
- 云端补贴 token:单位成本最低,能买就买,但依赖厂商补贴与可用性。
- 本地大内存(Mac Studio 256GB / 双 ASUS Spark):跑中型开源模型(DeepSeek Flash v4、Qwen 等)当子代理池。
- 编排策略:聪明云端模型(Codex/Claude)做规划与高质量子代理;本地模型接"一次性脚本、数据合成、报告生成"等低品味高 token 任务。
- 红线场景(必须本地):敏感数据不出域、越狱研究、法规/断网容灾。
信用卡薅羊毛、GitHub 赏金周边、herder.dev 与 Ubuntu 之争
先聊硬件大额消费的信用卡返现(Amex Gold Business 有 AI token 4 倍积分、Amex Platinum 送 $300 ChatGPT 商业额度);Justin 展示 GitHub 漏洞赏金计划的周边商店战利品(赛博朋克风无线充电器、可换 RGB);随后进入工具话题:CTBB 运营成员 UGE 推荐了 herder.dev——一个面向 CLI 编码代理的独立多路复用器(不集成 tmux),Justin 试用后很喜欢但在 Windows 上有窗口管理器问题,考虑把主力台式机切回 Ubuntu(引出全片首尾呼应的 Ubuntu 发音梗)。
| 时间 | 类型 | 说明 |
|---|---|---|
| 25:28 | 省钱技巧 | 优化刷卡返现率:大额消费可换约 2000 点奖励积分 |
| 25:36 | 省钱技巧 | Amex Gold Business 卡有 AI token 类目(约 4 倍积分);Amex Platinum 附带价值 300 美元的 ChatGPT 商业版额度(不含个人 Max 套餐,美国运通金卡在覆盖范围内) |
| 26:08 | 闲聊 | 玩笑:要不要在节目描述里放信用卡推荐链接 |
| 26:35 | 周边 | GitHub 漏洞赏金计划有周边商店:拿到赏金时附赠可在店内消费的积分;Rez0 抽到一个赛博朋克电影风格的无线充电器(RGB 可定制颜色);Justin 也收到过很棒的 GitHub 周边 |
| 27:47 | 闲聊 | Justin 把蜡烛粘在咖啡保温器上,办公室"檀香加烟熏味"的老年生活自嘲 |
| 28:06 | 观点 | Justin:现在完全被 AI 迷住了("去你的,Rez0")——以前喜欢钻研黑客技术,现在只是赚了更多钱(自嘲"绿帽越来越绿") |
| 28:27 | 工具推荐 | CTBB 后端运营 UGE 推荐 herder.dev;Justin 当时也在聊天室看到但还没试 |
| 28:57 | 工具特性 | herder.dev 不是 tmux 集成,而是一个独立的多路复用器,专门为运行在 CLI 中的编码代理提供额外数据/管理能力;Justin 此前一直在自己拼凑类似方案,试用后非常喜欢 |
| 29:40 | 问题 | 在 Justin 的机器上 WM(窗口管理器)似乎有问题——他跑着"地球上最奇怪的发行版"(Windows 死忠,为了玩英雄联盟等游戏) |
| 30:14 | 计划 | Justin 打算在下次"游戏黑客之夜"后尝试切换系统:把主力台式机切回 Ubuntu |
| 30:36 | 彩蛋/梗 | 呼应冷开场:Ubuntu 的发音之争("开头没有 U 也没有 Y"),互相调侃会被整个社区嘲笑 |
| 30:56 | 彩蛋/梗 | 互相调侃 throughput(吞吐量)的发音,"做播客真的很难,必须大声说出来" |
AI 生活应用——3D 打印 lithophane 礼物 + 平均分配赏金池的 live-hack 活动
Justin 展示结婚 13 周年礼物:把婚礼照片交给 AI(Codex / Claude Code)端到端生成的 lithophane(光影浮雕片)——平时看似 3D 打印乱码、对着灯光就显出高分辨率照片,让他对 AI 端到端能力大吃一惊。Rez0 则预告下周参加一种新式 live-hack 活动:总赏金池在所有参与者中平均分配,活动短、开赛前不到一周才公布范围,氛围更轻松且更鼓励协作,但他建议控制规模并设参与门槛(防止有人零贡献白拿全款)。
| 时间 | 类型 | 说明 |
|---|---|---|
| 31:46 | 案例 | Justin 在一家 3D 打印公司帮忙(常给孩子们打印东西);为结婚纪念日(已 13 年)找礼物 |
| 32:01 | 关键步骤 | 在 Etsy 搜 3D 打印周年礼物,发现 lithophane(字幕机翻为"浮石",实为光影浮雕/透光浮雕片) |
| 32:13 | 示例说明 | lithophane 是一块 3D 打印塑料片:平时看着像 3D 打印乱码,放在窗户/灯光前就呈现出一幅图像——正是他们的婚礼照片,分辨率非常高 |
| 32:40 | 重点结论 | 只需对 Codex 或 Claude Code 说"为这张图生成一个 3D 打印文件",即可端到端完成——AI 能做到这一点令 Justin 大吃一惊 |
| 32:58 | 活动预告 | Rez0 下周参加一个现场黑客(live-hack)活动:总赏金池平均分配给所有参与者,他从未参加过这种模式 |
| 33:12 | 数据 | 小项目但最终能拿到的钱相当可观;活动时间较短 |
| 33:29 | 特点 | 直到活动结束前不到一周才公布活动范围 |
| 33:59 | 观察 | 该模式下竞争氛围更轻松愉快、压力更小——因为现在很多工作由 AI 完成,"表现能在多大程度上反映我作为黑客的能力"已不那么重要;投入的时间精力能换取可观收益,反而更有动力 |
| 35:02 | 建议 | 应把规模控制在较小范围并设置严格的参与门槛:明显有些人什么都不做也能获得全额奖金,观感很差 |
尾声与片尾彩蛋(社区导流 + 蜡烛轮换创业点子)
因 Rez0 家三个孩子敲门而收尾。片尾固定导流至 ctb.show/discord 社区(高水平黑客讨论、大师班、黑客马拉松、独家内容、全职猎人公会)。片尾彩蛋中 Rez0 从蜡烛展开"领域知识":人类嗅觉适应性强(闻 5 分钟就麻木),因此市面应有"气味轮换"产品——自选组合包、构建五六个气味的轮换序列;Justin 直呼天才并愿意买单。
| 时间 | 类型 | 说明 |
|---|---|---|
| 35:30 | 收尾 | Rez0 家三个孩子敲门,节目收尾:"那是一个 pod(播客),再见" |
| 35:39 | 导流 | 《Critical Thinking(批判性思维)》节目固定结尾:前往 ctb.show/discord 加入社区 |
| 35:49 | 导流 | 社区内容包括:高水平黑客讨论、大师班、黑客马拉松、独家内容,以及面向全职赏金猎人的"全职猎人公会" |
| 36:03 | 彩蛋 | 片尾彩蛋:Rez0 谈蜡烛与嗅觉科学("如果太尴尬,剪辑 Richard 可以随时剪掉") |
| 36:25 | 核心概念 | 嗅觉适应(olfactory adaptation):点燃蜡烛闻约 5 分钟后离开房间,回来才觉得"太棒了"——持续暴露会麻木 |
| 36:42 | 创意 | 疑问:为什么市面上没有"气味轮换蜡烛"产品?对比墙上插电的喷香器;设计成自选组合包,构建五六个气味的轮换序列,对抗嗅觉适应 |
| 37:23 | 反馈 | Justin:真是天才之举,肯定会买,是款很棒的产品 |
整体总结
本期节目展示了 2026 年 AI 安全工作的两个缩影。攻击侧,Rez0 的"年度最爱"漏洞证明:当 AI 聊天机器人成为产品标配,提示注入与代理能力就成了新的入侵面,而传统 Web 攻击技术(CSP 绕过、缓存侧信道 XS-Leak、tab-nabbing、CSRF)在 AI 语境下被重新组合成优雅的端到端攻击链——干净的一键 POC(借道 Cloudflare Turnstile)是打动厂商与评审的关键。效率侧,Justin 两周 50 个 bug 的 hackbot 战报说明"AI 规模化赏金"已成现实,代价是厂商分诊压力剧增。基础设施侧,两人就"本地 AI vs 补贴 token"达成务实的分层共识:补贴额度能买就买(当前单价极低),但本地大内存硬件是对冲宕机、补贴退坡、监管与数据合规风险的必备冗余;最优编排是聪明云端模型做规划,本地模型承担一次性脚本、数据合成与报告生成等高 token 低品味任务。生活侧,lithophane 礼物与平均分配赏金池的 live-hack 活动,则体现了 AI 端到端能力与低压力竞赛模式的乐趣。