Refactoring English: Month 17

Michael Lynch

Refactoring English(《重构英语》):第17个月

一句话总结

我该专注于写书,还是去追逐漏洞赏金?

亮点

  • 我在专注写书和追求安全漏洞赏金之间摇摆不定。
  • 我正在考虑开设一门课程,分享我用AI寻找安全漏洞的经验。

目标评分

每个月初,我都会公布当月的目标。以下是完成情况:

完成《重构英语》的写作

  • 结果:大概还需要1到2周才能写完
  • 评分:C

我总感觉快写完了,但花在漏洞赏金上的时间总是超出预期。

《重构英语》数据

指标2026年3月2026年4月变化
独立访客6,9322,578-4,354 (-63%)
预售收入$725.80$587.73-$138.07 (-19%)

由于自三月以来就没有做过任何营销,书籍收入有所下滑。相反,我的注意力被漏洞赏金狩猎分散了。我很庆幸还能靠过去的积累勉强支撑,但如果继续忽视营销,数据显然会趋向于零。

三个月的漏洞赏金项目

过去三个月里,我花了大量时间用AI寻找安全漏洞。我一直没有公开谈论这件事,因为不想为数量有限的漏洞赏金项目招来竞争。我不确定其他人是否已经意识到AI在安全研究中有多高效,但我想秘密已经公开了

如果你没有关注AI与安全研究的进展,Firefox就是一个惊人的案例。在整个2025年(那时AI在安全研究方面还派不上用场),Mozilla和外部研究人员每月总共会在Firefox中发现10到20个安全漏洞。

2026年2月,Anthropic使用Claude Opus发现了22个Firefox漏洞。换句话说,仅Anthropic一家当月发现的漏洞数量,就超过了此前13个月中任何一个月所有人发现的总和。两个月后,Anthropic又用Claude Mythos发现了多达271个漏洞

我算是比较早就察觉到了这一趋势,但判断稍有偏差。早在一月份,我就认为AI可能会革新网络安全研究,但我以为其价值在于创建安全工具。当时我用AI编写模糊测试工具,并惊讶地发现,相比手动操作,我进行模糊测试的速度快了许多。

尽管我编写模糊测试工具的速度能提高10到20倍,但事实证明我的策略比必要的付出了多得多的精力。与其让AI创建一个模糊测试工具再去评估其输出,不如直接让AI“嘿,看看源代码,告诉我所有的漏洞。”

在见识到AI直接审计源代码的能力有多强之后,我停止了模糊测试,转而专注于源代码审计。到目前为止,我已向五个不同的漏洞赏金项目提交了50多个漏洞,并获得了约1万美元的赏金。

漏洞越来越好找,但赏金项目却越来越难

虽然我成功地用AI找到了安全漏洞,但在找到愿意为我的发现付费的公司方面,却没那么顺利。

以下是目前的成果:

  • 厂商1:Meta
    • 我提交了八份报告,其中包括一个远程代码执行漏洞。
    • 数周内未收到任何回复。
    • 我找到了负责该产品的开发者的电子邮件地址并联系了他们,他们将我的报告升级以便通过初步审核,但自那以后(已过去两周多)一直没有进展。
  • 厂商2
    • 我提交了一份报告。
    • 厂商在一个工作日内完成了初步审核,但表示需要数周时间才能进行彻底调查。
    • 已经超过30天没有收到任何消息。
  • 厂商3:
    • 我提交了一份报告。
    • 厂商称其为重复报告,因此没有赏金。
  • 厂商4
    • 我提交了约40份报告。
    • 其中八份在两周后获得了报酬,总计9,700美元。
    • 两份被认定为重复报告而被拒绝。
    • 其余的都在等待初步审核,不过最有价值的几份已经在首批获得报酬的八份之中。
  • 厂商5:Firedancer(加密项目)
    • 发现了几个中等严重程度的问题。
    • 当我开始赏金报告流程时,我发现他们要求研究人员将护照上传到一个我从未听说过的服务上,于是就此作罢。
    • 他们的项目规则也有些可疑,似乎与他们所使用的赏金平台的规则相矛盾。

所以,来自厂商4的1万美元只花了我两周的兼职时间。如果不是还在那些毫无回报的赏金项目上花了6周多时间,这本该是极高的投资回报。如果能找到更多像厂商4这样的厂商就好了,但我不知道该怎么做。

我该专注于书还是漏洞赏金?

我现在在如何分配写书和做漏洞赏金的时间上十分纠结。以下是我的思考:

  • 专注于写书
    • 优点:这本书已接近完成,所以如果我集中精力收尾,它将比一本半成品更有价值。
    • 优点:这本书是只有我才能创作的东西,而很多人都可以参与漏洞赏金。
    • 优点:我交付这本书已经延期,所以完成它能让我对等待的读者少一些愧疚。
    • 优点:我可以公开地谈论我的书,这不仅有助于我梳理思路,还能让新读者发现这本书。
    • 缺点:这本书的预期收益感觉比漏洞赏金狩猎要低,至少在短期内是这样。理论上,我下周就可能发现一个价值10万美元的漏洞,而下周几乎不可能通过任何方式带来10万美元的图书销售额。
  • 专注于漏洞赏金
    • 优点:我用两周做漏洞赏金赚到的钱,比2025年全年写书赚到的还要多。
    • 优点:仍有大量尚未被发现、且能用AI工具找到的、可获得赏金的漏洞。
    • 优点:如果我暂停几个月,剩余漏洞的价值将大打折扣,因为许多其他研究人员会抢先领取那些容易发现的漏洞。
    • 缺点:参与漏洞赏金令人沮丧,因为你毫无议价能力。厂商可以完全压低价格或赖账,而你没有任何追索或谈判能力,除非你把漏洞卖给想用于不法用途的买家。
    • 缺点:漏洞赏金狩猎像赌博一样容易上瘾,因为它有不确定的奖励,半随机地出现。
    • 缺点:漏洞赏金让我重拾不良的AI使用习惯。如果有一个AI代理在后台搜索漏洞,我会忍不住 constantly 查看它的进度,并根据早期结果不断调整方向。
    • 缺点:我在公开分享工作内容方面受到更多限制,这既是因为赏金项目通常有此要求,也是因为我不想在自己重点关注的地方招来竞争。

理智上,我很难为继续追逐漏洞赏金找到理由,但我还是想再坚持一段时间,也许按70/30的比例在写书和漏洞赏金之间分配时间。

或许我应该去教别人用AI提升软件安全

第三种可能是,与其追逐漏洞赏金,不如把过去几个月学到的用AI寻找安全漏洞的经验教给别人。

我在考虑开设一个小型的、按期进行的课程,大家一起在开源项目中寻找漏洞。我们会挑选没有关联赏金的项目,这样学员就可以在内部共享发现,而不用担心有人会抢走他们的奖励。形式将是现场或录播的截屏演示加上2到4周的私人社群讨论。

这门课程的重点不是通过漏洞赏金赚钱。也许我会涉及一些这方面的内容,但那不会是重点,因为那不是我过去三个月学到最多的东西。

这门课程的主题是用AI在大型代码库中寻找安全漏洞。我会展示我学到的技巧,如何让AI工具聚焦于最可能出现漏洞的区域,避免在无效线索上浪费时间和token。你可以把这些经验应用到自己团队的闭源代码上,或用于你想帮助加固的开源项目。

如果你感兴趣,请在下方加入意向名单:

推荐

Timelinize让你从社交媒体中夺回自己的数据

几周前,我在reddit上看到一个提问,有人想删除自己的Facebook账号,但想以可用的格式保存一份数据存档。这让我想起了一个我曾在Hacker News上看到但从未深入了解过的项目,叫Timelinize

Timelinize可以让你导入从Facebook、Google、Twitter等服务导出的数据,并创建一个统一的时间线来浏览你的数据。创作者是Matt Holt(马特·霍尔特),他也是广受欢迎的反向代理Caddy的作者。

Timelinize目前仍处于相当早期的测试阶段,我不得不添加了大量本地补丁才让它变得可用,但我很看好它的发展。随着我更多地使用它,我计划将更多的补丁提交回上游。

每当我找到一个本地离线的解决方案来替代过去需要云服务的场景时,总会感到一种莫名的清爽。当我从流媒体服务切换到Jellyfin时,我惊讶地发现,仅仅观看自己想看的内容、而不被一家公司在背后盯着如何从我身上榨取更多钱,感觉是如此不同。

奇怪的是,当我看Netflix或HBO时,我从未有意识地想过“糟糕!我被监视了。”但当我开始完全在本地观看影视时,就好像我在办公室格子间里待了太久,以至于忘了外面还有世界。然后,我走到了户外,呼吸到了新鲜空气,晒到了阳光。我是打个比方。实际上,我还是坐在室内用电脑看电视。但这比以前快得多,也自由得多!

我在Timelinize上也有类似“呼吸新鲜空气”的体验。Timelinize的界面是以用户为中心的,这让我意识到云平台的界面对用户是多么不友好。Facebook和Twitter并不希望你只是翻阅旧消息,因为那无法为它们赚钱。为了阻止你阅读旧消息,它们让体验变得微妙地不舒服:它们把对话挤进一个小小的框里,每隔几秒就强迫你停下来等待新消息加载,还不断用分散注意力的通知把你拉回它们可以变现的新内容上。

有了Timelinize,阅读体验的设计就是让你纯粹地阅读自己的存档。没有什么会试图分散你的注意力、让你去查看新内容,因为Timelinize展示的是历史快照。我喜欢跳转到10年前的某个日期,阅读当时的对话。

Timelinize的界面让你可以不受通知干扰地阅读自己的对话。

React2Shell的故事以及Next.js上发生了什么

我当时没有关注React2Shell,但它是React.js中的一个严重漏洞,允许攻击者在许多React.js和Next.js应用上获得代码执行权限。

上周,发现React2Shell的两位研究人员撰文讲述了幕后的故事:

拉克兰的文章获得了更多关注,但我觉得西尔维的文章更有意思,尤其是考虑到她当时还是一名20岁的大学生。

拉克兰和西尔维都意识到他们发现了一颗影响数百甚至数千个主要网站的“核弹”。在向Meta(React的维护方)和Vercel(Next.js的维护方)报告该漏洞后,他们想找出其他愿意为这个重大漏洞付费的漏洞赏金项目。

在Meta公开发布安全公告之前,研究人员不能向其他厂商披露该漏洞。问题在于,一旦React2Shell公开,拉克兰和西尔维在抢夺同样赏金时相对于其他蜂拥而至的人的优势就会丧失。

为了抢占先机,西尔维在漏洞封锁期间侦察了赏金项目,并检查那些厂商的网站是否存在React2Shell漏洞。这样,一旦Meta公布该漏洞,西尔维和拉克兰就能立即认领这些第三方的赏金。

问题在于,在React2Shell公开之前,Vercel已经在其Web应用防火墙(WAF)中为该漏洞创建了过滤规则,即使客户站点运行的是存在漏洞的React或Next.js版本,也能保护Vercel的客户。Meta和Vercel还与Cloudflare及类似的WAF平台合作,教会它们如何过滤React2Shell攻击。

因此,在Meta公布React2Shell后,西尔维尝试在她事先侦察过的网站上复现该漏洞,但漏洞并未触发。几乎所有设有漏洞赏金的网站都使用了Cloudflare或Vercel,因此WAF拦截了西尔维的漏洞利用。

于是,拉克兰和西尔维不得不设法让他们的漏洞利用绕过Cloudflare和Vercel的WAF来触发React2Shell,但绕过企业级WAF本身就是一个巨大的研究课题。幸运的是,西尔维在Cloudflare的WAF中找到了一个绕过方法,并在Vercel的WAF中找到了五个不同的绕过方法。

有趣的是,西尔维收入的“绝大部分”并非来自React2Shell本身,而是来自WAF绕过,因为Vercel为每个报告的绕过支付5万美元。

收尾

完成了什么?

  • 发布了新章节:“用AI改进写作”和“在读者所在之处与读者相遇”
  • 与读者举行了一场关于用AI改进写作的直播
  • 通过漏洞赏金项目报告了大量安全漏洞

经验教训

  • 从长远来看,专注于写书比做安全漏洞赏金对我更有利。
    • 难点在于,漏洞赏金的回报是短期的、即时的,而写书的回报通常至少要滞后一个月才能体现。
  • 从云服务迁移到本地自托管的服务,意外地让人感到满足。

下月目标

  • 让《重构英语》达到“内容完成”状态。
  • 创建一个工具,让《重构英语》的读者在阅读时可以提供反馈。

求助

如果你有兴趣了解如何用AI在团队代码中寻找安全漏洞,请加入我的意向名单。如果有足够多的人感兴趣,我会着手开设这门课程。

原文由 Michael Lynch 发布

本文章由 muse-spark-1.2-contributor 进行翻译