您现在的位置是:知识 >>正文
漏洞添加
知识266人已围观
简介凌晨两点十七分,我盯着屏幕上那行红字——`SEV-1: 生产环境RCE漏洞确认`——咖啡杯沿的指纹已经干成了白圈。这不是第一次了。三个月前,同一个系统,同一个参数,只是换了个编码方式,数据就穿透了过滤 ...
凌晨两点十七分,漏洞添加我盯着屏幕上那行红字——`SEV-1: 生产环境RCE漏洞确认`——咖啡杯沿的漏洞添加指纹已经干成了白圈。这不是漏洞添加第一次了。三个月前,漏洞添加同一个系统,漏洞添加同一个参数,漏洞添加只是漏洞添加换了个编码方式,数据就穿透了过滤层。漏洞添加
漏洞从来不是漏洞添加被“发现”的,它们是漏洞添加被人“添加”进去的。这句话我从前不信,漏洞添加直到我亲手在代码里埋过雷。漏洞添加
去年Q3,漏洞添加业务方催着上线一个文件预览功能。漏洞添加需求写得很简单:“支持PDF和Word。漏洞添加”我看了眼排期,后天就要发版。于是偷了个懒,没有用白名单校验扩展名,而是直接调用了系统自带的`file`命令去识别MIME类型。测试的时候一切正常,PDF能开,Word也能开。上线第三天,安全组发来告警——有人上传了一个伪装成PDF的PHP脚本,`file`命令被绕过了,脚本在服务器上跑了起来。
那个漏洞不是我写的,是我“省”出来的。每一行注释掉的边界检查,每一个“先这样,后面再补”的TODO,都是在给未来的攻击者递梯子。
更隐蔽的添加方式发生在依赖层。上周审计一个老项目,发现`lodash`版本停留在4.17.15,而它早在两年前就被爆出原型链污染漏洞。没人主动去加这个漏洞,它只是躺在`package.json`里,像块沉默的礁石,直到某个深夜被潮水淹没。修复很简单,升级一个版本号。但没人愿意动它——因为升级可能带来不兼容,不兼容就要改业务代码,改业务代码就要加班。于是漏洞就这么“被保留”着,成为系统里最稳定的存在。
还有一种添加,是架构层面的。微服务拆分时,为了省事,把认证逻辑写在了网关层。当时觉得天经地义——所有请求都过网关,还能漏了谁?直到某个内部服务为了调试,直接暴露了不带鉴权的健康检查端口。攻击者顺着这个端口摸进去,发现服务间通信用的是明文HTTP。那一次,漏洞不是被写出来的,是被“默认信任”堆出来的。
说回那个凌晨的SEV-1。我打开日志,看到攻击payload是一串经过三次URL编码的SQL注入语句。追溯源头,发现是三个月前我重构查询逻辑时,把参数化查询改成了字符串拼接——因为当时急着处理一个性能瓶颈,觉得“这个参数是内部传的,不会有人能控制”。你看,每个漏洞背后都有一个“当时觉得没事”的瞬间。
修复漏洞的补丁通常只有几行。但真正的补丁,是承认自己会偷懒、会侥幸、会在压力和疲惫面前选择最短路径。我在团队周会上把那个凌晨的日志投影出来,没讲什么大道理,只说了一句:“以后谁再说‘先上线再说’,我就让他看看这个payload。”
漏洞会一直存在,因为写代码的人永远在和时间赛跑。但至少,我们可以在提交代码前多问自己一句:如果这个函数被公开到公网,如果输入来自陌生人,如果今天是周五晚上——我还会这么写吗?
答案要是“会”,那漏洞不是被发现的,是被你亲手添加的。
Tags:
相关文章
南宁屯授科技有限公司
知识南宁屯授科技有限公司,办公地址在青秀区某栋写字楼的十七层。电梯门一开,正对前台那面墙,刷着深蓝漆,上面嵌着公司全称,字体是那种偏硬朗的无衬线体。前台姑娘头也不抬,让你先扫码登记——访客系统,手机号、公 ...
【知识】
阅读更多做一个网站多少钱
知识上周有个做餐饮连锁的朋友问我:“做个网站多少钱?”我说:“三千到三十万都有。”他愣了一下,又问:“那有什么区别?”我说:“你问的是做个东西多少钱,还是做个能赚钱的东西多少钱。” 三千块的网站,模板套一 ...
【知识】
阅读更多品牌官方网站
知识品牌官方网站正在变成一种数字墓碑。我这么说不是危言耸听——你随便打开一家中小企业的官网,大概率会看到2016年的新闻动态、永远点不开的“解决方案”下拉菜单,以及一个自动弹出的客服窗口,里面那个机器人翻 ...
【知识】
阅读更多