您现在的位置是:百科 >>正文
相同漏洞
百科85841人已围观
简介2021年冬天,Log4j爆出那个核弹级漏洞的时候,我正坐在办公室里刷手机。推送弹出来的瞬间,技术群里炸了锅,有人发了句“完了,全网裸奔”。我当时的第一反应是打开公司项目挨个查依赖,结果发现手头三个J ...
2021年冬天,相同漏洞Log4j爆出那个核弹级漏洞的相同漏洞时候,我正坐在办公室里刷手机。相同漏洞推送弹出来的相同漏洞瞬间,技术群里炸了锅,相同漏洞有人发了句“完了,相同漏洞全网裸奔”。相同漏洞我当时的相同漏洞第一反应是打开公司项目挨个查依赖,结果发现手头三个Java服务全中招。相同漏洞那天晚上没睡,相同漏洞整个团队都在打补丁、相同漏洞重启服务、相同漏洞盯着监控。相同漏洞事后复盘,相同漏洞CTO说了句话我记到现在:“这次是相同漏洞Log4j,下次换个名字,代码还是那堆代码。”
他说得没错。漏洞从来不会真正消失,它只是换了个壳子重新出现。
我后来留意到一个现象:很多被曝出的高危漏洞,底层逻辑惊人地相似。2021年Log4j的JNDI注入,和2015年Apache Commons反序列化漏洞,本质上都是同一个问题——程序信任了外部输入,然后拿去做危险操作。再往前翻,2014年的Shellshock,Bash把环境变量里的函数定义当代码执行,也是同一个逻辑。十年间,语言换了、框架换了、架构从单体变成微服务,但那行“信任外部输入”的代码,始终有人写。
这不是巧合。我观察过身边写代码的人,包括我自己,在赶需求的时候最容易犯的错就是默认输入是干净的。产品经理说这个字段前端会校验,你就真的不在后端再验一遍。接口文档写着“参数为整数”,你就直接拿去做数组下标。测试环境跑通了,就认为生产环境也没问题。漏洞的种子往往不是技术能力不够,是心态上觉得“不会那么巧”。
更让人无奈的是修复方式。Log4j出事后,大量团队的应对是升级版本号。升级当然对,但升级完之后呢?有没有人去审查自己的代码里有没有类似的JNDI调用?有没有人把“禁止拼接用户输入到执行语句”写进代码规范?我见过太多团队,补丁打完就翻篇,下次换个组件再爆,流程重走一遍。安全扫描工具装了不少,但扫描规则是死的,人的侥幸心理是活的。
有个做渗透测试的朋友跟我聊过,他说他最喜欢测的就是那些“刚修完上一个漏洞”的系统。因为开发团队刚经历一轮紧急修复,身心俱疲,往往只盯着报告里提到的那一个点去改,周围同类问题根本顾不上。他管这叫“漏洞的迁徙”——你堵住一个洞,压力会把它挤到旁边更薄弱的地方去。
我自己的项目里也发生过类似的事。有次代码审计发现某个接口存在SQL注入,我们赶紧改成参数化查询。改完上线,过了两周,同一个业务逻辑的另一个接口又被扫出命令注入。原因一模一样:拼接了用户可控的字符串。两个接口是不同的人写的,但犯错的路径完全重合。
所以我现在越来越觉得,安全这件事,工具和流程只能兜底,真正起作用的是写代码那个人在敲下回车之前有没有多想一秒。这一秒里,你得问自己:这个变量从哪来?如果它是一把刀,我把它插在哪儿了?
漏洞的名字会变,CVE编号每年新增两万多个,但那些让漏洞得以存在的思维惯性,几十年没怎么变过。我们修的是代码,要改的是习惯。
Tags:
相关文章
常用的综合漏洞扫描工具
百科常用的综合漏洞扫描工具 真正用顺手的综合扫描器,其实没几个。Nessus、OpenVAS、Nexpose,再加一个国产的Xray,基本就是圈子里翻来覆去的那几张脸。别被厂商宣传晃了眼,工具是死的,用法 ...
【百科】
阅读更多上海黄页官网
百科打开浏览器输入“上海黄页官网”,搜索结果第一页跳出来的未必是你要找的东西。老张上周想查一个上海本地搬家公司的电话,翻了半天网页,最后在杨浦区一个论坛帖子里才找到号码。他嘟囔了一句:“黄页不是早该有官网 ...
【百科】
阅读更多没有外网iis怎么配置web
百科把一台没连外网的 Windows Server 装好 IIS,打开浏览器访问 localhost,看到那个默认的 IIS 欢迎页——这事儿本身没难度。真正让人抓狂的是后面:你要在这台机器上跑一个 We ...
【百科】
阅读更多