门缝里塞进来的纸条
Anthropic 推出 OSS Scanner:开源维护者可自愿免费接入 AI 漏洞扫描,报告全部由模型生成、无人审核,这条快车道和传统的协调漏洞披露有什么不同?
老一点的居民楼里,常有一种热心的邻居。他夜里散步,顺手看一眼每家的窗户,哪家没关、哪家煤气味重,第二天一早就写张纸条从门缝里塞进去。纸条上写得很清楚:几点路过,看到什么,怎么试过,建议你怎么修。有时候他看错了,那扇窗其实是故意开着通风的;可大多数时候,他说的是对的。这样的邻居,你很难说讨厌,也很难说全信。
10 月 8 日,Anthropic 发布了一个叫 OSS Scanner 的东西,我读完官方博客,脑子里冒出来的就是这位邻居。它面向开源项目,维护者自愿加入,不收钱,Anthropic 用自家最强的模型,包括 Claude Mythos,定期去扫这些项目的代码,找漏洞,写报告,交给维护者。官方博客说,这件事受了 Project Glasswing 的启发。
最要紧的一句,官方自己写在前面:输出全部由模型生成,没有人审,可能有误报。也就是说,塞进门缝的纸条,是机器写的,写完没有人再看一遍,直接递到维护者手里。这和我们熟悉的安全圈规矩,很不一样。
先说熟悉的规矩。按我粗浅的理解,传统的协调漏洞披露,也就是 CVD,大致是这样一个流程:有人发现了漏洞,先不声张,私下联系项目维护者,把问题讲清楚;双方约一个时间,维护者在这段时间里修,修好了发版,然后再一起对外公开。整件事的核心是「协调」两个字,人对人,一来一回,发现者通常要先自己确认这真是个问题,才好意思去敲别人的门。
这套规矩慢,可它有一个好处:每一张递到维护者手里的纸条,背后都站着一个愿意为它负责的人。维护者读到的时候,心里多少有底,这个人花了时间,验证过,不是随口一说。开源项目的维护者,很多是下班以后的志愿者,时间就那么几个小时,纸条要是写错了,浪费的就是他们本来就不多的夜晚。
OSS Scanner 走的是另一条路,我管它叫无人审的快车道。为什么要开这条快车道?官方博客给了一组数字:过去半年,他们发现了超过 2.9 万个候选漏洞,人工只审了大约 6000 个。我自己用小学算术算了一下,审过的大概只占五分之一左右,剩下的两万三千来个,躺在那里没人看。
这就是问题所在。机器找得太快,人审得太慢,中间的缺口不是多招几个安全专家就能填上的。传统 CVD 的那个「先由人确认」的环节,在这个量级面前,成了一道窄门。于是有维护者主动开口:不用等你们审了,未验证的报告也行,批量给我吧。官方博客称,按这样的要求,已经直接发出去了近 5000 份。
我觉得这个细节比任何技术名词都值得多看一眼。快车道不是 Anthropic 硬塞给谁的,是维护者自己要的。愿意收一摞没人审过的纸条,说明这些维护者心里有一笔账:与其等别人慢慢筛,不如自己拿来看,错的扔掉,对的修掉,反正最后拍板的还是自己。这是一种很老派的手艺人心态,工具给我,判断我自己来。
那么,纸条上写了什么?官方博客说,每份报告包括三样东西:复现方法、说明,以及候选补丁。其中的说明,尽量做了 bisect,也就是在代码历史里一版一版往回找,定位到这个问题大概是从哪一次改动开始出现的。三样东西放在一起,维护者拿到手,可以先照着复现一遍,看看是不是真有其事,再看是哪次提交埋下的,最后看看那个补丁能不能直接用,或者至少当个参考。
这三样东西,恰恰对着维护者最怕的三件事。最怕的是一份报告只说「你这里可能有问题」,不告诉你怎么触发,于是你花一晚上去猜;其次是不知道问题从哪来,修了这里,那里还漏;再其次是知道了也没空修。复现步骤解决第一件,bisect 解决第二件,候选补丁解决第三件的一半。剩下的一半,还得人自己动手,这没办法,也不该有办法。
说到这里,自然要问一句:机器写的纸条,到底靠不靠谱?官方博客给了一组早期验证的结果。专家复核了 48 个项目里的 97 条高危或严重级别的结果,其中 85 条,也就是 88%,达到了 CVD 的门槛;11 条是重复的或者已知的问题;真正的假阳性,只有 1 条。85 加 11 加 1,正好 97,账是对得上的。
这组数字我愿意认真看,但也想多说一句。97 条是专家挑出来复核的高危和严重结果,不是那 2.9 万条的全部,所以 88% 说的是这一小批样本的成色,拿它去推算整座仓库的质量,就是我替官方多想了。官方自己也说了,可能有误报,这句话我宁可记得牢一点。
具体到项目,官方博客举了 wolfSSL 的例子:它收到了 74 份报告,除了 2 份以外都是有效的,其中有 5 个最后成了 CVE。换个说法,74 份里有 72 份站得住,这个数是我自己减出来的。另外,官方博客称,PostgreSQL、OpenSSL、curl、HotCRP 这些项目也给了正面反馈。这几个名字,做过一点后端的人大概都熟,它们的维护者见过的漏洞报告,恐怕比一般人见过的垃圾邮件还多,肯说一句好话,不容易。
接下来是很多维护者真正关心的:怎么报名。官方博客说得很朴素,由项目的核心维护者向一个指定的 GitHub 仓库提一个 PR,就算申请了。注意是核心维护者,不是随便哪位热心用户替项目报名,这一点很合理,纸条要塞给真正管门的人,而不是路过的人。
资格方面,官方博客说大致和 OSS-Fuzz 一样,也就是项目要对基础设施和用户安全有关键影响。OSS-Fuzz 是 Google 给开源项目做的持续模糊测试服务,做开源的人不会陌生。拿它来类比,意思很清楚:这不是一个人人都能领的福利,它优先照顾的是那些一旦出事、影响面会很大的项目。你自己周末写的一个小玩具,大概排不上;一个被成千上万台服务器依赖的库,大概排得上。具体指定的是哪个仓库、门槛怎么判断,请以官方博客的说明为准,我不在这里替它补。
我在想,OSS-Fuzz 和 OSS Scanner 放在一起,其实像是一对兄弟。前者是用机器不知疲倦地往程序里塞各种奇怪的输入,看它会不会崩;后者是让模型去读代码,像一个熬夜的审计员那样挑毛病。两者都是大公司出钱出算力,给那些撑着整个互联网、却常常没人付钱的开源项目,雇一位不要工钱的巡夜人。区别在于,模型写出来的东西更像人话,也更容易让人误以为它是人审过的。这一点,维护者自己心里要有数,这是我的推断,不是官方的说法。
再说说它和企业版的关系。Anthropic 那边,给企业的是 Claude Security,给开源项目的是这个免费的 OSS Scanner。一边是企业为自己的代码掏钱,一边是开源项目分文不付,Anthropic 自掏腰包去扫。两样东西放在一起看,大概能看出一种分工:商业代码由商业产品负责,公共代码由公益性质的服务兜底。至于两者在能力、流程上具体差在哪里,官方博客这一篇没有展开,我也就不硬比了。
顺带还有两件事,官方博客也提到了。一件是 Claude for OSS,给开源维护者免费的 Max 20x;另一件是 Cyber Verification Program。前者等于是给维护者配了一把更好用的工具,后者的具体规则,这里不展开,有兴趣的人请直接去看官方的介绍。我提它们,只是想说明一点:OSS Scanner 不是孤零零的一个动作,它是 Anthropic 围着开源和安全这件事摆出来的一排桌子中的一张。
回到那位热心邻居。我想,这条快车道真正改变的,不是漏洞找得更快了,而是「谁来承担判断」这件事换了位置。传统 CVD 里,判断先由发现者做,做完了才敲门;OSS Scanner 里,判断被交给了收纸条的人。发现者变成了一台不睡觉的机器,它不会累,也不会为某一张纸条脸红。这件事好不好,取决于收纸条的人有没有那份定力。
所以我并不觉得每个维护者都该冲上去报名,更不觉得应该把每份报告都当圣旨。人内心的定力很脆弱,一下子收到几十份标着高危的报告,第一反应往往是慌,慌了就容易乱修,乱修比不修还麻烦。狮子可以一口气吞下一整摞,老狗还是一份一份来比较好:先复现,复现不了就放下;复现了,看 bisect,再看补丁,自己改,自己测。慢是慢一点,可每一步都踩在实处。
说到底,机器可以替你在半夜巡街,替你把纸条写得整整齐齐,甚至替你把补丁都拟好,可是门开不开、窗关不关,从来都是住在屋里的人自己的事,句号。
那么,收到一摞没人审过的纸条,你是选择先去关窗,还是先去查一查写纸条的人看没看错?其实两件事都得做,只是顺序不能乱,不是么?
来源:Anthropic 官方博客:Launching an opt-in vulnerability-finding service for open source(2026-10-08)。候选漏洞数、复核结果与 wolfSSL 等数字均为官方称;「约五分之一」「两万三千来个」「72 份站得住」为作者按官方数字自算的约数;88% 只代表专家复核的 97 条高危/严重样本,不能外推到全部候选;Claude Security 与 OSS Scanner 的分工、报告易被误认为经人审核等为作者推断;传统 CVD 流程与 OSS-Fuzz 为行业常识性描述。