|
凌晨两点十七分,原创我盯着屏幕上那个红得刺眼的漏洞计算器图标,手指悬在回车键上方。证明这不是贡献我第一次提交漏洞报告,但绝对是原创压力最大的一次——如果这个漏洞被证实,将直接影响国内数亿台设备的漏洞远程管理安全。我深吸一口气,证明按了下去。贡献 漏洞报告提交后的原创72小时是漫长的等待。第三天下午,漏洞厂商安全响应中心给我回了邮件,证明标题只有四个字:“漏洞确认”。贡献附件里是原创一份编号为CNVD-2024-XXXXX的文档,我的漏洞名字赫然列在“原创漏洞证明贡献者”一栏。那一刻的证明感觉很奇妙,像是你在一堆乱麻里找到线头,然后轻轻一拉,整团乱麻都解开了。 这个漏洞其实藏在一个很不起眼的地方。某主流路由器固件的Web管理界面,在特定版本的固件更新后,认证模块对session token的处理出现了偏差。简单说,攻击者可以伪造一个几乎不可能被拒绝的会话标识,直接绕过密码验证。我是在给家里那台老路由器刷第三方固件时偶然发现的——刷完以后,我习惯性地用Burp Suite抓包看流量,结果发现一个POST请求的响应里,居然把完整的session值明文返回了。正常人可能觉得这是“设计如此”,但我不信。我翻出官方源码仓库,对比了三个版本,终于锁定问题出在某个全局变量没有及时清空。 提交过程本身没什么戏剧性,真正讲究的是证明材料的严谨性。光写“我发现了漏洞”没用,得让厂商能复现。我录了一段视频,从输入IP地址开始,到成功绕过登录界面,全程不超过四十秒。然后附上关键代码片段,用红色标出问题行——那个全局变量在用户登出后没有被置空,导致下一次登录请求会复用上一次的session。为了证明这不是偶然,我连续测试了27次,全部成功。27次,这个数字我记得很清楚,因为测试到第20次的时候,我一度怀疑自己是不是在跟空气斗智斗勇。 但“原创漏洞证明贡献者”这个头衔,远不是提交一个报告那么简单。它意味着你要对漏洞的整个生命周期负责。报告被采纳后,厂商会发来一份保密协议,要求你在漏洞修复前不得公开细节。这期间,你得随时准备回答他们工程师的追问。有一次,对方问我:“如果攻击者修改了User-Agent字段,会不会影响这个绕过逻辑?”我当时愣住了,因为我在测试时只用了默认的User-Agent。挂了电话,我立刻搭了个环境,试了五种不同的浏览器标识,结果发现其中两种确实会触发不同的代码路径,但最终都能绕过。这个发现让厂商把修复方案从“清空变量”改成了“重写认证流程”——更彻底,也更安全。 拿到官方颁发的证书那天,我把它打印出来,贴在电脑显示器边上。证书上印着一行小字:“感谢您为提升网络安全生态做出的贡献。”我盯着那行字看了很久。说实话,比起证书本身,我更在意的是那个漏洞最终被修复后,厂商在更新日志里写的那句话:“修复了Web管理界面中可能导致未授权访问的会话管理问题。”没有提我的名字,但我知道,那是我在凌晨两点的灯光下,对着屏幕一点一点抠出来的。 现在偶尔有人问我,做这个图什么?我说不上来。可能纯粹是那种“别人没发现,我发现了”的执拗。但有一点我很清楚——原创漏洞证明贡献者,不是终点,而是你和漏洞之间新关系的开始。你证明了它存在,就意味着你有责任看着它消失。这个过程很磨人,但值得。 |