
看完这篇演示我第一反应不是“AI很强”而是“我靠我吃饭的手艺是不是要贬值了”。一个多月前某个社区里放出了一段录像有人让Claude基于一份公开的旧报告去审计Firefox的某个C解码组件。结果AI在20分钟内定位了一个与历史CVE高度同源的可疑点并给出了完整的调用链推理和修复建议。视频下方评论区吵翻了天一半人在喊“AI要统治挖洞圈了”另一半人质疑是摆拍。但我看完之后最强烈的感受其实是——这个过程里绝大部分动作我作为一个干了六七年的安全研究员自己也能做只是大概率做不到20分钟这个量级。这个“量级差”才是真正让人坐不住的地方。这篇东西我不打算写成什么“AI安全研究革命”的吹捧文也不想贩卖焦虑。我想踏踏实实拆解一下AI找漏洞到底强在哪里、弱在哪里、我在实际工作中复现这套流程时踩过的坑以及一个普通安全从业者应该怎么看待和利用这个趋势。文章会比较长全程干货没有废话。1. 先别急着震惊AI找漏洞这件事到底触动了什么1.1 20分钟不是重点重点是把“经验直觉”变成了可调用的能力很多人一看到“20分钟找出Firefox漏洞”这个标题注意力全在速度上。但实际上速度只是表层现象。真正让人不安的是AI把安全研究员多年积累的能力——那种“看代码时隐隐觉得这里不对劲”的嗅觉——变成了一个可以被复制、被调用、被并行放大的产品能力。拿传统人工审计举例。一个成熟的浏览器漏洞研究员面对Firefox这种体量的代码库几千万行C、Rust、JavaScript混合通常会这样干活先锁定某个攻击面较大的组件比如图片解码器、JavaScript引擎、CSS解析器然后拉出这个组件近两三年的修复记录看哪些CVE是修了之后又复发、哪些补丁覆盖了某个特定输入模式再配合模糊测试产生的崩溃样本逐个去读堆栈、追调用链。这套流程走下来快则两三天慢则一两周。而且这里面最致命的不是时间而是“老手的直觉”没法打包出售——你知道一个长得像整数溢出的表达式在老版本里埋藏了三个同类漏洞所以你会格外注意那些写着uint32_t但最后被塞进uint16_t数组的地方。这种经验没法写成规则也没法编进普通的静态扫描器里。但AI做了一件很“缺德”的事它通过大量训练数据把这套“经验直觉”压缩成了参数。你不需要理解为什么这条路径可疑你只需要问对问题它就能把可疑点捞出来。这相当于把一位休假老手的经验变成了一个随叫随到、不会抱怨、不会喊累的实习生。20分钟这个数字看起来离谱但它背后代表的“经验提取语义理解定向搜索”能力才是真正改写游戏规则的东西。1.2 浏览器的漏洞价值模型不是所有bug都叫漏洞要理解这场演示的分量先要搞明白浏览器漏洞的“含金量”分层。很多刚入门的朋友以为“能让程序崩溃”就是漏洞这是个巨大的误解。严格来说浏览器漏洞的价值取决于三个维度影响力、可利用性、触发可靠性。第一层是最普通的bug——程序抛异常、崩溃、退出但没有内存破坏那通常只算一个质量缺陷能被当成漏洞的概率很低。第二层是内存破坏类问题比如堆溢出、释放后使用、整型转负后索引越界这类问题有可能被攻击者扭曲成任意代码执行这才算真正意义上的安全漏洞。第三层是逻辑漏洞——权限校验绕过、安全上下文混淆、同源策略破坏——这类问题往往更“值钱”因为它们不需要复杂的内存布局就能产生真实危害。有意思的是AI在演示中定位的那个可疑点恰恰属于第二层里比较典型的那种看起来人畜无害的整数运算在特定输入下会导致缓冲区分配偏小进而产生堆溢出风险。这种“看着像代码风格问题实际是安全隐患”的颗粒度传统的自动化工具很难识别。传统静态扫描器面对这类模式往往会筛出一大堆相似度极高的告警——一百个里九十九个是误报人工去逐一核验的时间成本高到根本没法落地。AI的破局点在于它能同时理解“代码语义”和“数据流”然后在语义层面做判断而不是匹配规则。它看到一行len width * height;不仅会反问“这里的乘法会溢出吗”还会进一步追问“溢出之后这个len被传给了谁”“那个函数是否信任了这个len”“调用链上游的输入是否可控”。这一串追问就是资深研究员脑子里每秒都在进行的隐藏流程。2. 核心能力拆解AI做漏洞挖掘的四个关键招式2.1 范式一用“补丁比对”来识别漏洞家族我在实际复现里最常用的一个起手式不是直接问“这代码有没有漏洞”而是先让AI做“历史回归分析”。方法是挑一个目标组件的旧版本和新版本让AI对比两者之间的修改差异再结合公开的历史修复记录判断某个可疑模式是否属于“修了一种情况、漏了姊妹路径”的经典失误。Firefox这类大型开源项目有一个特点修复漏洞时往往只补了触发点没有补整个类。原因很简单——修一个CVE的时间窗口非常紧工程师大概率只修了被报告的那一条路径没来得及盘查其他调用点。这就给审计留下了极好的“狩猎空间”拿到过去的补丁看它改了哪个函数、加了什么条件然后去全仓库搜同类代码。传统上这个“搜同类”的动作靠人工阅读效率极低。但AI做这事几乎是降维打击——你让它“找出与这个补丁模式相似的所有函数”它会顺着数据结构、操作符特征、边界条件逐层比对把同族的可疑点全列出来。举个例子我在模拟项目X的某图像处理模块里试过一次我贴了一段旧补丁说明修复的是“某解码器解析色彩空间参数时无符号整型回绕”。AI在几秒之内列出了另外三处代码它们分别处理不同格式的元数据但逻辑结构完全一致——同样用乘法计算缓冲区大小同样没有检查计算结果的回绕。这种“模式迁移”的识别能力放在以前需要我在代码库里泡三四个小时才能做完而且很容易漏。2.2 范式二跨文件数据流追踪AI的“读心术”漏洞利用的关键是“输入可控、中间转换有缺陷、最终落实到危险操作”。这个过程在代码层面通常跨越多个文件、多个函数。人工审计时最痛苦的部分就是追踪一条从解析器入口到内存分配点的数据流中间还要随时留意各种类型转换、符号扩展、隐式截断。AI在这个过程中扮演的角色类似一个“随身携带的投影仪”你把入口函数告诉它把最终的危险操作位置告诉它它会帮你补全中间路径并标注哪些变量在传递过程中可能被扭曲。我在做某跨平台系统的网络协议解析审计时让AI追踪一个recv()缓冲区往上层传递的完整路径它不但给出了函数调用链还指出了我在人工追踪时完全忽略的一个点——某个中间函数会把原本64位的长度值强制转成32位再返回而返回值的调用者完全没察觉。这种类型缩窄的坑在C/C项目里比比皆是但人类的短期记忆很难同时盯住路径上的每一个细节AI可以。当然这背后有个前提AI的上下文窗口是有限的。跨文件追踪意味着你要把涉及的文件内容都喂给它而大型函数的代码动辄几百行。我的习惯做法是分两步走——第一步先让AI分析入口函数和出口函数的签名列出可能的中间层第二步再按列表逐个喂中间文件让它只输出“与数据流相关的片段”而不是整段复制过来。这样既节省上下文又不会漏掉关键路径。2.3 范式三把崩溃堆栈翻译成“人话”的能力做模糊测试的人都有过这样的体验拿着一堆几千行的崩溃堆栈看了半天只觉得头皮发麻。堆栈里最上面的几帧是崩溃点但真正导致崩溃的“根因”往往在十几帧之外甚至根本不在堆栈中——是某个更早的函数留下了错误的状态崩溃只是它爆发出来的结果。AI擅长的另一个动作就是“堆栈逆向溯源”。你把原始崩溃日志丢给它它会顺着栈帧上提到的函数名、源文件路径、行号去仓库里拉出对应代码然后重新梳理出一条“这个值在什么时候变成了危险值”的逻辑线。我在某个图像处理Demo上实测过一个听起来很恶心的解析器崩溃Sanitizer输出的报告中只有三行关键栈帧AI看完之后给出的结论是“问题不在崩溃那个函数在调用它的上一层的循环索引计算”。我核对了源码发现果然如此——循环变量的类型被声明为char一旦图像宽度超过128索引直接变成负数后续的一切崩溃都是连锁反应。这种“把表象翻译成本质”的能力对新手尤其有价值。以前我带新人做安全研究最大的瓶颈就是他们看不懂崩溃日志。现在有了AI新人可以把日志当“鱼饵”丢给AI得到一份像样的推理报告然后再拿着报告去源码里验证。这大幅缩短了“从模糊测试到定位问题”的学习曲线。2.4 范式四传统静态扫描器为什么做不到这些事聊到这儿肯定有人会问你说的这些能力传统的静态分析工具不也有吗花大价钱买的企业级SAST工具不也能扫污点、画数据流吗问题在于工具的执行逻辑是“规则匹配”AI的执行逻辑是“语义理解”两者有本质区别。传统静态扫描器面对一段模糊代码时会严格套用规则库里的模式如果左操作数是未验证的外部输入右操作数是乘法结果被用来分配内存——报一个“潜在整数溢出”。问题是这种告警的误报率高到离谱因为规则库无法判断“这个外部输入实际上在更早的时候已经被限制在0到100之间”。AI则能通过阅读上下文、理解注释、跟踪分支条件做出更接近人类研究员的判断“这个输入确实是可控的而且前面的校验在另一个分支中没有覆盖到所以这是真问题”。另外一个细节是传统工具对“非标准写法”的敏感度极低。真实项目里的代码都是乱七八糟的有人在宏里做运算有人用memcpy模拟类型转换有人写得像C但编译成C。规则库面对这些变异写法时往往直接放弃AI反而能通过语义推断出作者的意图。我在参与一次开源代码审计时碰到过一个“用字符串拼接函数手动实现二进制协议打包”的神奇模块。传统扫描器对这个模块完全没反应但AI看了一会儿之后指出拼接长度计算用的函数返回有符号整数而拼接目标缓冲区大小由无符号值控制两者发生隐式转换时可能截断。这属于典型的人类经验判断几乎是任何规则库都覆盖不到的盲区。3. 实操复现我如何用AI辅助审计一个开源项目3.1 第一步准备代码库别让AI“盲人摸象”很多人拿到AI就迫不及待地问“请帮我审计整个项目”这是效率最低的开局方式。模型的上下文窗口有限塞进整个仓库只会让它在信息过载中给出泛泛而谈的回答。正确做法是先选定一个具体的组件作为目标再准备好与这个组件相关的源文件和依赖关系说明。我的标准流程是这样第一步克隆项目到本地用git log查看目标组件的最近提交记录找到最近的漏洞修复点第二步用ctags或cscope生成符号索引搞清楚目标组件的函数层级第三步把组件的入口函数和关键数据结构说明写成一页简短的Markdown笔记第四步把这份笔记连同几个核心源文件一起喂给AI并要求它“先总结这个组件的攻击面不急着找漏洞”。这一步看起来简单但决定后续聊天质量的80%。你要是直接丢一个“components/parser/”目录路径AI根本不知道文件在哪里、依赖什么、输入从哪里来。让它先输出攻击面分析本质上是在给AI建立“这个组件怎么工作”的思维模型后续的找漏洞提示才有锚点。3.2 第二步用“入口点地图”缩小可疑范围攻击面分析的产出通常是一张“谁能触发这段代码”的清单。对于浏览器类项目典型的入口点包括网络请求解析、图片解码、字体加载、CSS属性计算、JS引擎的内建函数调用。每个入口点都有对应的输入格式和权限边界审计重点也完全不同。我在模拟项目X的某渲染引擎里做过一次完整流程让AI把组件范围内的外部输入入口点全部列出来按照“输入可控性”和“危险依赖”两个维度打分。AI给出的结果里有一个处理字体文件变体属性的入口拿了高分——原因是它直接接收二进制数据流并且在解析时做了大量指针运算。这个入口在人工审计时很容易被忽略因为我通常会把注意力集中在更“显眼”的图像或脚本解析器上字体处理这种冷门模块往往会被跳过去。但AI没有主观偏好它会公平地评估所有入口。拿到这张入口点地图之后我还做了一步额外筛选排除那些已经修复过“同构漏洞”的入口点。方法很简单检查这个入口点在过去一年内有没有相关CVE和修复提交。如果有说明维护者已经在这个地方烧过火同类问题大概率被清扫过。AI在这个环节同样能帮忙——让它阅读提交历史并归纳修复模式速度快得令人咋舌。3.3 第三步逐类筛查用“假设驱动”代替“清单扫描”传统自动化工具的工作方式是“扫描所有可疑模式”这会产生海量告警。AI辅助的工作方式我建议改成“提出假设、定向验证”这样效率高得多也更能发挥AI的理解力。具体操作是这样的选定一个入口点之后我先列出与之相关的危险操作清单——哪里用了memcpy、哪里做了数组索引、哪里有整型乘法、哪里分配了堆内存。然后针对每个危险操作让AI回答三个问题第一个这个操作的上游输入是否可控第二个可控条件是否受到充分校验第三个如果绕过校验结果会落到什么危险原语上这三个问题逐层递进AI回答起来很像在做“可控性分析”本质上就是轻量级的污点分析。我在一次复现中让AI针对一个图片解析器的三个危险操作各写了一段分析它给出的结论层次分明第一个操作“虽然输入可控但校验在入口处拦截了非法值不存在绕过路径”第二个操作“校验存在但只覆盖了主分支另一个分支的长度判断直接略过”第三个操作“完全没有校验且长度值参与数组索引”。这种输出质量传统的告警列表根本没法比。3.4 第四步让AI产出“可验证的推理”而不是“结论”这里有一个所有想用AI做安全研究的人都必须记住的准则AI输出的“结论”只能是线索不是最终答案。我见过太多人把AI的长篇分析直接当漏洞报告来用结果发现很多分析在关键细节上严重失真。问题在于AI的推理是从“语义相似度”出发而不是从“可执行代码”出发它有时会因为猜错某个变量含义而推出一条看似合理但实际错误的路径。所以我的工作流里AI的产出永远是“可以验证的推理链”而不是“确认的漏洞”。我会要求它在每一条结论旁边标注涉及的源文件、函数名、行号然后我自己拿着这些线索去做人工复核。复核手段是我前面讲的模糊测试套件或者更简单的单元级构造输入直接触发。在某个具体的复现项目里AI给出了一个高度可疑的“整型溢出导致堆缓冲区越界”假设。我没有直接采信而是用Sanitizer构造了一个极小的畸形输入手动调用了该解析器。第一次跑确实没有崩溃我一度以为AI在胡说。后来我又仔细看了AI的推理过程发现它语境中假设“某类数据块重复出现时才会触发第二段计算”于是我修改了测试输入让该数据块连续出现三次——崩溃立刻出现栈顶正好落在AI指出的那个写入函数里。这个过程让我印象深刻AI的推理链是好的但需要人来设计那个“验证触发器”。3.5 第五步报告与修复建议中AI提供“人类可读性”好不容易确认了一个漏洞下一步就是写报告。传统流程下写一份清晰、可复现、便于维护者修复的报告往往比定位漏洞还费时间因为你不仅要描述问题还要解释前置条件、影响范围、修复建议。AI在这里的用处不是“代写”而是“翻译”。我会把整个分析过程丢给AI要求它“把这段技术细节改写成一篇能够提交给开源项目维护者的Bug报告”。AI会帮你重构成结构清晰的小节漏洞概述、触发条件、复现步骤、影响分析、修复建议。更重要的是AI能帮你把“为什么这是一个安全问题”讲明白——这是很多研究者写报告时最薄弱的一环大家太沉迷于技术细节忘了维护者可能需要花十分钟才能理解你的愤怒点在哪里。当然报告里的技术细节必须是我自己复核过的。AI只是在排版和措辞上帮忙绝对不能让它凭空生成“复现步骤”。我见过有人让AI根据一份崩溃日志“脑补”了完整复现流程结果交给维护者之后对方无论如何都复现不出来双方互相拉扯了好几天。这种事既浪费时间又消耗信誉务必避免。4. 坐不住之后我给自己列的“AI时代安全研究生存清单”4.1 清楚认知AI不能替代的环节评估可利用性我一开始也说看到那段20分钟挖洞视频时确实有点慌。但冷静下来之后我把整个漏洞挖掘流程拆成了五个环节逐个比对AI的能力边界结论让我重新安下心来。五个环节分别是攻击面发现、可疑点定位、触发条件验证、可利用性评估、修复方案设计。AI在攻击面发现和可疑点定位上确实已经比我快得多甚至在某些模块上比我准确。但在触发条件验证上AI仍然需要依托 Sanitizer、模糊测试框架和调试器等外部工具。它无法真正“运行”代码所以一切关于“这条路径是否真的可达”的判断都需要人来执行。这在工程上是一个不可逾越的时延。更关键的是可利用性评估。AI能告诉你“这里有一个堆溢出”但它很难告诉你“这个堆溢出在Firefox的现代堆分配器下能否被利用”以及“该用什么样的堆布局才能稳定控制执行流”。这需要实打实的工程经验理解对象喷射、理解Isolated Heap、理解引用计数生命周期。这些经验在公开资料和训练数据里并不多AI的推测会非常幼稚。在未来很长一段时间内“定位漏洞”会逐渐变成自动化能力但“把一个崩溃变成一次逻辑清晰的攻击演示”依然是极少数人类专家的手艺。这个手艺的价值只升不降因为攻击面的总量在膨胀而能打穿复杂利用链的人始终稀缺。4.2 把AI当“实习生”但不要放手让它签字我在团队内部定的一个规矩是AI可以作为资深实习生来用但只有人类研究员有资格在漏洞报告上签名。操作上这个“实习生”可以承担三类脏活累活第一类读日志——把所有Supplier日志、构建错误、崩溃堆栈处理成结构化的摘要第二类查资料——把某个特定CVE的分析报告、修复补丁、公开讨论串成一条时间线第三类打草稿——把分析过程整理成初步审计笔记。每一份AI产物都需要人工做“完整性检查”和“真实性检查”。完整性检查是指有没有遗漏关键条件分支有没有漏掉某个调用路径真实性检查是指AI引用的函数名是不是真的存在代码行号是否对得上流程图里的层级是否符合调用约定这两个检查并不复杂通常只需要几分钟但它们挡住了AI犯的绝大多数错误。有一个非常反直觉的经验是不要让AI在你确认之前“自我修复推理”。当你指出它的某条分析有误时AI往往会礼貌地承认错误然后重新生成一份——但这份新分析可能只是把错误从明面藏到了暗处。所以我在使用AI时不追求它的结论“正确”只要求它提供“足够好的、可供人类验证的线索”。线索错了没关系最多浪费几分钟真正危险的是把线索当结论然后直接写进报告。4.3 分块审计策略突破上下文窗口的硬约束对大项目做AI辅助审计时最先撞上的是上下文窗口限制。一次装不进一个完整模块更不用说整个仓库。我用的策略叫“金字塔式分块”。最底层是“组件卡片”每个主要组件都用一页Markdown总结它的功能、输入入口、对外接口、最近修复记录。这一层由AI辅助生成但经过人工校对。中间层是“模块深挖”针对被判定为高风险的模块按功能切成若干个文件组每次把一组文件完整喂给AI让它输出局部数据流和疑点列表。最顶层是“跨模块汇聚”把每个模块的疑点列表汇总后给AI一份总览让它做交叉比对找出那些跨模块交互时才暴露出来的问题。这个策略的核心思想是先广度后深度先用“组件卡片”确保AI对全局有基本认知再用“模块深挖”把局部细节吃透。我有一次操作时跳过第一步直接深挖某个模块结果AI因为缺少下游调用的信息把一个实际上受到保护的入口误判成高危漏洞。后来回到金字塔流程加了组件卡片之后AI主动纠正了自己的判断。4.4 负责任披露与合规底线发现漏洞后要做什么如果你在真实项目中用AI辅助找到了一个漏洞请务必遵守行业通用的负责任披露流程。以Firefox这类大型开源产品为例发现安全问题后应当通过官方安全渠道提交而不是把漏洞细节、PoC、复现步骤发到公开论坛或社交媒体。各浏览器厂商通常都有对应的漏洞奖励计划提交经过确认的安全问题可以获得官方致谢甚至奖励这也是安全研究者合法的收入来源之一。需要特别强调的是AI辅助挖洞领域里有一种很不成熟的风气让人把AI输出的“疑似漏洞分析”直接包装成“实锤漏洞”发布到网上。这种行为不仅会导致大量误报污染社区信息流还可能在极少数情况下泄露尚未修复的真实漏洞给用户带来真实风险。在“AI生成内容不能轻易判定为真实漏洞”这点上我的判断标准非常朴素没有经过人工复现验证的分析不算漏洞没有走官方披露渠道的漏洞不发公开分析。这条底线能保证你在安全社区里的信誉不崩也能保证你未来还能继续研究这些项目。别拿自己的研究权限和网络声誉去赌“AI这次不会错”。5. 几个常见的“AI找漏洞”误区与我的避坑心得5.1 误区一觉得“直接问有没有漏洞”就能得到答案这是最普遍的误区。对着AI喊一声“帮我找出Firefox的漏洞”得到的只会是泛泛的安全建议比如“请更新到最新版本”“请使用安全配置”——完全不是一回事。正确姿势是像带新人一样提供背景组件名称、入口函数、输入格式、依赖关系、最近修复记录。信息越具体AI输出越有价值。我通常会把准备阶段那份攻击面笔记直接复制进提示词作为开场白。5.2 误区二迷信“AI说这里有漏洞”就直接提交官方原因前面已经讲过。AI的误报率比传统工具低但远没有低到可以直接采信的程度。我自己的实测统计里AI指出的可疑点经过人工验证后大约有30%到50%是真实缺陷但其中很多并不具备安全影响——有的只是潜在崩溃点攻击者无法控制触发条件真正满足“可控输入危险操作可绕过校验”这个完整链条的通常十不存一。所以正确的预期应该是AI负责把五万个可疑点浓缩成五十个再由人把这些五一一点验一遍。这依然是一个巨大的效率提升但它不是“魔法”。5.3 误区三忽视“AI在生成安全建议时可能编代码片段”我在一次工作中让AI提供“用于复现该问题的概念验证输入”结果它生成了一段看起来结构完整的脚本。我顺手跑了一下发现它的字段构造完全不符合目标组件的二进制格式——它其实是在“按经验模仿”一个相似的格式。这件事给了我两个教训第一所有AI生成的PoC和测试输入都必须人工验证不能盲信“它能写代码所以它能构造输入”第二要训练AI在其不确定时直接说“不确定”而不是强撑着编一个假确定。我会在提示词里固定加一句“如果你没有把握请明确标注不确定性并说明你无法确认的部分”。这看起来是一句话的事实际能大幅提升AI输出质量因为它会少一些“刻意迎合”、多一些“诚实思考”。5.4 误区四把AI当“自动化忽略过程”的挡箭牌最后这一点也是我作为安全研究从业者最想对同行说的。AI可以帮你读代码、列路径、总结日志但它本质上是一个“依赖语料库”的引擎它不懂你自己项目的业务逻辑细节也不懂你所在组织的合规边界。如果因为用了AI就省掉了人工理解漏洞原理、省掉了复现验证、省掉了披露流程那这AI不如不用——它只会批量产出经不起推敲的分析然后让你在别人提问时陷入“AI说的”这种站不住脚的境地。我在实际使用中慢慢把AI当成一种“超级速记员检索助理”像写代码前先把思路列成大纲、写完后再把问题反推给它一样核心决策始终由我拍板。它节省了我大量的低效检索和阅读时间让我能把省出来的精力花在真正的难点——比如构造一个能够在利用链中稳定触发的样本——上面。5.5 实操心得一份能直接抄走的提示词模板最后分享几个我在日常AI辅助审计流程里多次打磨过的提示词片段仅供参考。第一个用于收集攻击面“我现在要审计[项目名]的[模块名]。以下是模块入口和关键函数摘要[粘贴笔记]。请列出所有从外部输入进入该模块的入口点按可控性从高到低排序指出每个入口点最终影响的危险操作比如内存操作、索引操作、权限判断等。先不要找漏洞只做地图。”第二个用于生成可疑点候选“结合我提供的攻击面地图对入口点A、B、C进行可控性-危险操作交叉分析。针对每个入口点回答三点上游输入是否可控、中间路径是否存在类型转换或边界条件缺陷、最终危险操作是否有绕过校验的可能。给出结论时请附带源文件与行号。”第三个用于修正输出质量“你刚才的结论基于一个不成立的前提[说明哪里不对]。请重新分析但这次请把‘你不能确认的事实’单独列出来不要混在推理中。”这三个模板看着简单实则把一个模糊的“帮我找漏洞”转化成了“可控性分析候选生成元认知校验”的科学流程。我自己实践下来输出质量的提升是数量级的。写在最后关于AI挖洞的那些心里话把这段过程完整写下来之后我反而没那么焦虑了。回头看那个“Claude 20分钟找出Firefox漏洞”的视频我现在的理解是AI确实会改变安全研究行业但它改变的是流程不是价值。它会砍掉脏活累活让“从海量代码里捞可疑点”这件事从两周变成两小时但它无法消除“理解业务逻辑”“判断可利用性”“设计修复方案”这些真正创造行业护城河的部分。我自己现在的日常已经变成了“让AI做初筛、自己做深挖”。省下来的时间我会拿来读更多补丁、学习更多利用技巧、构造更多贴近真实攻击场景的测试样本。如果未来AI真的强大到可以连利用链一起自动构建那到时候我也已经站在“通过与AI协作提升能力”的斜坡上而不是站在它的对立面。所以与其坐不住不如现在就打开代码仓库先让AI帮你画一张攻击面地图试试。你会发现它确实快得离谱但真正危险的、需要负责任判断的地方依然在你自己手里。这对一个安全研究者来说反而是最让人安心的答案。