上周三凌晨两点,漏洞报案我盯着HackerOne后台跳出的漏洞报案新邮件提醒,手指悬在鼠标上没敢点。漏洞报案那是漏洞报案某家做企业级VPN的厂商,三个月前我提交过一个越权访问漏洞,漏洞报案他们修复后我复测通过,漏洞报案按理说该结案了。漏洞报案可这封邮件标题写着“补充说明”,漏洞报案点开一看,漏洞报案对方安全响应中心的漏洞报案人说,他们在补丁里发现了一个更底层的漏洞报案问题——我原本报的那个接口只是表象,真正的漏洞报案逻辑缺陷在权限校验中间件里,影响面比我预估的漏洞报案大三倍。
这事让我想起刚入行时带我的漏洞报案老周。他总说,漏洞报案漏洞报案最怕两种人:一种是厂商安全对接人,上来先问“你有没有通过我们SRC认证”,好像没认证的漏洞就不算漏洞;另一种是开发,拿着你写的复现步骤跑一遍,说“本地没复现啊”,然后你问他环境版本,他回“最新版”。老周去年不干这行了,转去甲方做SDL,临走前跟我说,报案这事,技术只占三成,剩下七成是跟人磨。
我自己的习惯是,报案前先写个自测脚本,把请求包、响应差异、时间戳全打出来,存成txt和截图放同一个文件夹。有次报一个SSRF,厂商安全说“我们内网没敏感服务”,我把DNSlog记录和云元数据接口返回的临时凭证截图一起甩过去,对面沉默了十分钟,回了句“稍等,我拉个会”。后来那个漏洞拿了高危,奖金够我换台新笔记本。
但也不是每次都顺。去年冬天报一个OAuth回调地址校验不严的问题,厂商一开始说“这是设计如此”,我把攻击链画成流程图,标出攻击者如何用恶意回调拿到用户token,又录了屏。对方安全负责人看完,说“你等等,我去跟业务吵一架”。三天后漏洞确认,修复方案是把回调白名单从正则匹配改成全量比对。我看了眼他们的补丁代码,改得挺糙,但能用。
报案文本怎么写,其实有讲究。别堆术语,别写“该漏洞可导致严重安全风险”这种废话。直接说:哪个接口、什么参数、怎么改包、返回什么、能拿到什么。最好附上curl命令,让开发复制粘贴就能跑。我见过有人报案写了两千字,从OWASP Top 10讲到GDPR,最后复现步骤就一句“参考附件”,附件还是个加密压缩包。这种报案,厂商安全不拖你拖谁。
还有个细节:留联系方式。我一般留邮箱和Signal,不留手机号。有次半夜两点厂商安全打电话过来问细节,我迷迷糊糊说了半天,第二天看通话记录,聊了四十分钟,关键信息全在邮件里写着。后来我学乖了,邮件正文末尾加一句“紧急情况请邮件,电话不一定接”。
说回上周那个VPN漏洞。我回了封邮件,把中间件里那段校验逻辑的伪代码贴出来,标出哪一行判断可以被绕过。对方安全回了个“收到,我们评估下影响范围”。到现在还没下文。我猜他们内部在扯皮——修中间件意味着要动核心模块,测试回归成本高,业务那边肯定不乐意。
漏洞报案这事,说白了就是拿技术证据跟人博弈。你证据够硬,对方就没法装死;你表达够清楚,开发就少甩锅。至于奖金和致谢,那是后话。真正让人上瘾的,是那个“确认漏洞”的邮件弹出来的一瞬间——你知道自己没白熬夜,也知道某个系统的某个角落,因为你少了一个可以被利用的缺口。