当前位置:首页 > 知识

漏洞牛仔

凌晨两点十七分,漏洞牛仔我盯着屏幕上那串十六进制代码,漏洞牛仔咖啡杯沿凝着褐色的漏洞牛仔渍。漏洞扫描器跑完第三轮,漏洞牛仔终于吐出一个CVE编号——是漏洞牛仔个藏在旧版SSL库里的堆溢出。这感觉像在垃圾堆里翻出一枚没炸的漏洞牛仔哑弹。

干这行的漏洞牛仔人管自己叫“漏洞牛仔”。不是漏洞牛仔黑客,不是漏洞牛仔白帽,就是漏洞牛仔那种骑着老旧的Burp Suite,在别人代码荒原上晃荡的漏洞牛仔独行侠。我们不在乎数据,漏洞牛仔不在乎服务器权限,漏洞牛仔只在乎那些裂缝本身——它们像地质断层一样迷人。漏洞牛仔去年有个同行在某个政府网站的漏洞牛仔登录框里发现一个SQL注入点,他没提任何东西,只是在漏洞报告里附了句话:“你们第三行参数名拼错了,改完之后顺便修一下那个OR逻辑吧。”对方回复他的是封律师函。

你问为什么要找漏洞?废话,因为无聊。正经程序员写代码是在盖房子,我们是在拆房子——但拆之前得先理解每一块砖为什么放在那儿。这活儿需要点考古学家的耐心和赌徒的直觉。有时候你盯着一个函数看三天,头发掉了一把,最后发现漏洞藏在三个月前某次更新里,一个被注释掉的变量名上。

上周接了个私活,某电商平台的优惠券系统。他们自己人检查了两个月,说肯定没问题。我花了四十分钟,在支付回调接口里试了三个参数组合,结果优惠券金额居然能传负数——你买一百块的东西,系统倒贴你五十。漏洞原理简单得可笑:他们把用户输入直接拼进SQL查询,连个预处理都没做。我猜写这段代码的人当时肯定在赶着下班。

有时候我会想,这些漏洞像什么呢?像老房子墙角的裂缝,平时看不见,但地震一来,整面墙就塌了。而我们这些牛仔,就是拿着手电筒照裂缝的人。不负责修,只负责指出来——虽然大多数时候,指出来也没人理你。厂商会回复“感谢反馈”,然后悄悄打上补丁,连个致谢名单都不加。

但总有人记得。去年某开源项目的维护者给我寄了张明信片,手写的:“那个越权漏洞帮我们挡了一次真实攻击,谢了。”明信片正面是他们项目logo的卡通版,一只戴着安全帽的河马。我把明信片贴在显示器边框上,每次看到就想笑——这大概就是干这行最实在的回报了。

太阳快出来了,扫描器又跑完一轮。我关掉终端,屏幕暗下去之前,最后一行字是“未发现新漏洞”。挺好,今天这趟荒野没白跑。我伸个懒腰,想着明天该去翻翻那个老旧的路由器固件——听说里面有个后门,藏得挺深。

分享到: