您现在的位置是:烟消火灭网 > 焦点

造成漏洞

烟消火灭网2026-10-17 07:42:46【焦点】5人已围观

简介2017年9月,Equifax披露了一起数据泄露事件,1.43亿美国人的个人信息被曝光。事后调查发现,问题出在Apache Struts框架的一个已知漏洞上。这个漏洞的补丁在泄露发生前两个月就已经发布

2017年9月,造成漏洞Equifax披露了一起数据泄露事件,造成漏洞1.43亿美国人的造成漏洞个人信息被曝光。事后调查发现,造成漏洞问题出在Apache Struts框架的造成漏洞一个已知漏洞上。这个漏洞的造成漏洞补丁在泄露发生前两个月就已经发布了。没人去装。造成漏洞

这不是造成漏洞什么高深的技术问题。就是造成漏洞一个"知道了但没做"的问题。

我后来跟几个做安全的造成漏洞朋友聊过这事,他们一点都不惊讶。造成漏洞其中一个跟我说了句挺糙的造成漏洞话:"漏洞从来不缺,缺的造成漏洞是有人愿意去补。"这话听着消极,造成漏洞但仔细想想,造成漏洞大部分安全事故确实不是败在技术对抗上,而是败在人的惰性上。

漏洞是怎么被"造成"的

写代码的人都知道,没有完美的程序。但"漏洞"这个词其实有点误导性——它听起来像是一个东西上面破了个洞,你只要找到它、堵上就行了。实际情况要复杂得多。

一个漏洞的诞生往往是这样的:开发者在赶进度,产品经理在催上线,测试环境跟生产环境不完全一致,某个边界条件没考虑到。代码提交,合并,部署。一切看起来正常。然后某个输入参数稍微变了个形状,整个系统就崩了。

我见过一个真实的案例。某电商平台的优惠券系统,正常流程没问题,但如果用户在提交订单的瞬间同时发起退款请求,两个事务之间的竞态条件会导致优惠券被重复使用。这个漏洞存在了将近一年才被发现,因为触发条件太刁钻了。发现它的人不是什么安全专家,就是一个闲着没事反复点按钮的用户。

所以漏洞不是被"制造"出来的,更像是被"忽略"出来的。每一行没写的校验、每一个没处理的异常、每一次"先上线再说"的妥协,都在积累风险。

补丁为什么没人打

回到Equifax那个案例。补丁发布了,为什么没人装?

答案很无聊:因为负责这件事的人不知道有这个补丁,知道的人以为别人会去装,而管理层觉得安全团队已经搞定了。一个典型的责任分散。大公司里这种事太常见了,安全团队发了一封邮件,收件人扫了一眼,标记为已读,然后去忙别的了。

我自己也干过类似的事。服务器上有个依赖库提示有安全更新,我看到了,想着"下周再处理",然后过了三个月才想起来。幸好那个漏洞没有被利用,但纯粹是运气好。

这就是问题所在。漏洞管理不是一个技术问题,是一个流程问题和优先级问题。当业务在跑、KPI在压、老板在催的时候,打补丁这件事永远排在最后。它不产生收益,只消耗时间。直到出事。

有些漏洞是故意留的

这话说出来可能不太好听,但确实存在。不是所有漏洞都是疏忽。

有些是后门。有些是为了方便调试留的接口忘了删。有些是"我知道这样写不安全,但这样写快"。我见过一个内部系统,管理员密码硬编码在前端代码里,理由是"反正只有内部人用"。后来那个系统被暴露到了公网,因为运维改配置的时候搞错了。

还有一种更隐蔽的情况:开发者为了绕过某个限制,故意留了一个口子。比如为了跳过支付验证方便测试,加了一个特殊参数。测试完了,参数没删。这种漏洞最难防,因为它看起来像是正常功能的一部分。

造成漏洞的真正原因

技术层面的原因可以列很长:输入验证不足、权限控制不当、加密实现有误、依赖库过时。但归根结底,造成漏洞的是人做出的每一个"差不多就行了"的决定。

我觉得与其说"造成漏洞",不如说漏洞是软件开发过程中不可避免的副产品。你不可能写出没有漏洞的系统,就像你不可能写出没有bug的代码。能做的是承认这一点,然后建立一套机制去发现、评估、修复它们。而不是假装它们不存在,或者觉得"我们这种小公司没人会来攻击"。

攻击者不挑大小。他们扫的是IP段,跑的是自动化工具。你的系统有漏洞,就会被找到。这跟你是谁没关系。

很赞哦!(8623)