AI slop 杀死了开源漏洞赏金
作者:Ritabrata Maiti · · 约 7 分钟阅读
Turso,一个用 Rust 写的、兼容 SQLite 的数据库,这周关停了它的漏洞 赏金计划。他们解释原因的文章名字起得很冷淡,叫做 The wonders of AI。 这个项目大约一年来一直在为代码库里每一个被发现的严重漏洞支付 1,000 美元。预算不是问题。问题是落到维护者收件箱里的大部分报告 都是一个大模型写的,而维护者把他大部分用于赏金的工时都花在阅读 “没有任何人类真的打算让他读”的文字上。
例子有一种凄凉的滑稽感。一份提交声称发现了一个严重漏洞,可以让 攻击者执行任意 SQL 语句。针对一个 SQL 数据库。同一个项目的另一份 报告描述了一个缓冲区溢出,复现步骤包括编辑 Turso 自己的源代码、 强制在 vector 末尾之外做一次 volatile 写、重新编译、运行修改过 的二进制。所谓”易受攻击的代码路径”不存在。所谓”利用代码”无法复现。
于是维护者结束了这个项目。这是关于一个数据库的小故事,也是关于 互联网上任何一头是人、另一头是开放提交表单的队列的大故事。这周 读了 Turso 这篇文章的每一个维护者,都在里面认出了自己的收件箱。
一直在起作用的契约
Section titled “一直在起作用的契约”漏洞赏金的经济学很整齐。项目方说:如果你找到一个达到这条严重程度 线的真实问题,我们付你 X 美元。两边都赢。漏洞猎人因为做了真正有用 的工作被付钱。项目得到一份他们用别的方式根本买不起的安全审计。
这份契约依赖一个没说出口的假设:提交一份报告的成本,应该和写出一份 报告的成本在同一个量级。写出一份真实的漏洞利用很难。把它写成报告 要花几个小时。所以提交量是自我节流的。队列大致维持在真实发现率 的量级,那是一个小团队真的能逐一处理的速率。
便宜的推理在大约一年半的时间里打破了这个假设。
现在让一个前沿模型针对一份公开代码库产生一份漏洞报告,成本大约是 十分之一美分。模型会产出一份。报告看起来真实到一个人类必须花十 分钟读完才能得出”它不是真的”的结论。提交实际上是零成本。处理它 消耗的是一个软件项目最昂贵的东西,那就是唯一懂这份代码的人的、 没被打断的注意力。
不需要多少人在做这种套利,就能压垮一个小项目。一旦提交速率超过 处理速率,队列不会稳定下来。它会一直涨,直到维护者要么放弃阅读, 要么放弃这个项目。Turso 放弃了这个项目。
同一种形状,到处都是
Section titled “同一种形状,到处都是”漏洞赏金的故事只是一种正在到处可见的形状。
随手 PR 正在淹没流行的 GitHub 仓库。绝大多数是大模型生成的拼写 修正或者幻觉重构。维护者要么把所有 PR 全部关掉、连带丢掉真的那些, 要么在处理中倦怠。开放的 issue tracker 同样在收到大量”我觉得可能 有个 bug”的报告,没有复现步骤,常常是某个聊天机器人中间层为了 安抚困惑的用户、承诺它会”告诉开发者”。代码评审的评论一次三十条 落在小 PR 上,大部分是套话和模糊判断。技术博客文章下面的评论区 正在朝同一个方向去。
形状始终是一样的。生产输入是零成本的。处理输入仍然要花一个人。
我们把”发现 bug”自动化了。我们把”提交 bug”自动化了。今年我们在 把”拒绝 bug”自动化。没有人在把”修 bug”自动化。
瓶颈从来不是写
Section titled “瓶颈从来不是写”很多人对大模型在软件领域的早期兴奋,是它们写代码很快。这点确实 成真了,也确实是这个问题里不那么有意思的一半。写代码从来不是 瓶颈。读代码才是瓶颈。评审代码、理解代码、决定要不要合并代码、 决定要不要发布代码、决定凌晨两点代码崩了的时候怎么办。“读和决定” 这个循环是工程实际发生的地方,它一直被一个人脑子里同时能放下多少 东西所限制。
大模型加到这个循环的”写”一侧,也加到每一个汇入它的队列的”输入” 一侧。它们不挪动”读和决定”这个瓶颈。它们让这个瓶颈成为几乎所有 事情的限制因素。
这就是为什么”把一个 AI 放进分诊环节”解决不了 Turso 的问题。如果 有一个模型决定哪些报告让人类看到,你就创造了一个新的游戏:产出 能过模型的报告。这个游戏也很便宜。攻击者试图把”判断”这一步商品化, 而”判断”恰恰是必须留给人的那一步,因为攻击针对的就是它。
也许真的能撑住的方案
Section titled “也许真的能撑住的方案”一些方案开始在维护者的对话里流传。没有一个干净的。
最被讨论的是可退还的提交保证金。你押一笔小钱,比如 20 美元。如果 报告靠谱,钱退给你。如果是垃圾,钱没收。经济学讲得通。代价是它 过滤掉了没绑卡的业余新人,而那恰恰是开放项目最想发现的人群。
口碑门槛走的是另一个方向。第一次提交的人需要过一条更高的门, 包括完整的复现和一个有人担保的引荐。已经建立信用的猎人跳过门。 这重建了一种软件安全领域一代人没真正存在过的师徒模式,但是它 把发现新人才的成本抬高了。
一些项目开始跑蜜罐。最清晰的例子是 UnsafeLabs/Bounty-Hunters, 它发布一个看起来像赏金计划的仓库,存在的主要目的就是吸引自动扫描 器。提交内容被喂给一个公开的 自动提交者排行榜。 你可以把它读作小心眼,也可以把它读作一个搜索引擎反垃圾团队会认出 来的东西的首次尝试:针对非对称收件箱问题的施动方一侧的共享黑名单。
一些团队完全把项目从公开表面挪走,搬到 HackerOne、Bugcrowd 这种 做实名验证的平台上,由平台处理身份。小项目通常负担不起平台费用。 大项目失去开放计划带来的发现效应。
我在维护者圈子里见过最有意思的想法,有人叫它”code proof”(代码 凭证)。在你能提交一份赏金报告之前,必须在这个项目的某个地方落地 过一次小而被接受的 PR。这个 PR 不必和安全有关。它只要是某个理解 了周围代码的真人做的真实工程。这把一个廉价的文本生成游戏变成了 一个更贵的工程游戏。它不解决问题。它把不对称往另一个方向拨。
同样的动力学正在赶往任何一个依赖”开放队列、人在接收端”的东西。 客户支持工单。会议论文投稿。开放同行评审。监管法规的公开征求意见 期。政府的 FOIA 请求。招聘收件箱。这篇文章下面的评论区,大概也是。
经济学的概念比互联网还老。这是把公地悲剧从牧场草地搬到了注意力 上。新的是产生输入的成本下降的速度。围绕旧成本曲线长出来的大多数 机构,没有时间在下一次下降之前重新设计。
下一个十年的面向公众的系统设计将围绕着重新加回摩擦展开。身份。 保证金。声誉。工作量证明。担保。我们花了二十年时间把每一份互联网 表单上的摩擦剥光,因为摩擦是增长的敌人。现在摩擦是唯一保护这些 表单接收端的人的东西。能搞清楚如何加回去又不丢失魔法的公司,会 把其余所有公司都吃掉。
关于 “AI 智能体” 这个词
Section titled “关于 “AI 智能体” 这个词”现在人们说”AI 智能体”,意思有两种,几乎相反。
一种是压垮 Turso 的那种”slop 流水线”。便宜的推理对准任何一个开放 队列,回路里没有人,产生让其他人不得不过滤的体量。署名在提交上 的那个人通常并不在看自己提交了什么。常常他连自己提交了什么都不 知道。
另一种是一个人用来做自己实际工作的工具。一个智能体,驱动他面前的 那个浏览器标签页,读他正在写的那份代码库,运行他本来要敲的那条 命令。人在键盘前。他看到每一个动作。没有任何东西在他不看着的情况 下被送进别人的队列。
这两种东西共用一个名字,几乎不共用别的东西。第一种是互联网上每个 公共表面要交的税。第二种是一件能用的工具。它们在媒体上叫同一个名 字,会在事情自己分清楚之前,让第二类损失大量好感。
我做的是第二种。Browy 是一个开源 AI 智能体, 住在 Chrome 侧边栏和 DevTools REPL 里。它通过对话驱动你真实的 浏览器标签页。回路里没有 Browy 的服务器。没有可以靠跟它说话来淹没 的收件箱。回路里有一个人,那就是你,看着它做的每一次点击和每一次 表单填写。无论接下来几年公共空间会发生什么,互联网里”你自己操作 的工具”这一部分仍然会是一个适合住下去的好地方。
这篇文章的 30 秒视频版本在文章顶部。Turso 自己的写法在 这里。