您现在的位置是:百科 >>正文

安全漏洞产生的原因不包括以下哪一点

百科57人已围观

简介安全漏洞产生的原因不包括“程序员故意写错代码”。这条听起来像废话,但真有人这么想。去年我参与一个代码审计项目,客户方一位项目经理指着一段SQL注入漏洞说:“这肯定是开发偷懒,故意留后门。”我当场调出提 ...

安全漏洞产生的安全原因不包括“程序员故意写错代码”。这条听起来像废话,漏洞但真有人这么想。产生去年我参与一个代码审计项目,包括客户方一位项目经理指着一段SQL注入漏洞说:“这肯定是下点开发偷懒,故意留后门。安全”我当场调出提交记录,漏洞写这行代码的产生人凌晨三点还在改另一个模块的Bug,注释里写着“临时方案,包括下版重构”。下点没人会故意制造漏洞——漏洞是安全复杂系统里自然长出来的东西,像墙角渗水,漏洞不是产生谁拿钻头打的孔。

真正的包括原因藏在细节里。我见过一个电商网站的下点用户注册接口,输入手机号后返回“该号码已注册”,输入不存在的号码返回“注册成功”。逻辑没错,但攻击者用脚本遍历号段,两小时拿到三十万已注册手机号。开发者的本意是提升用户体验,减少输入错误。这个设计在需求评审时没人反对,测试用例也只覆盖了正常流程。漏洞不是来自恶意,而是来自“想当然”——以为用户会老老实实一个个试。

再讲一个更具体的。某银行App的转账功能,客户端做了金额校验,服务端也做了。但服务端校验时用了浮点数比较:if (amount == 100.00)。攻击者抓包把金额改成100.00000001,服务端认为不等于100,放行;但下游记账系统按分取整,实际扣款100元,多出的0.00000001元被忽略。这个漏洞的根源是开发者对IEEE 754浮点数标准的理解偏差,不是态度问题。他可能刚毕业,学校里没教过金融场景的精度处理。漏洞是知识盲区加上架构分层之间的信任错位。

还有一类常见原因:时间压力下的妥协。我跟踪过一个开源CMS的漏洞修复过程。维护者在issue里写:“这个XSS过滤不完整,但下个版本要重写模板引擎,先不修。”三个月后漏洞被利用,他补了过滤函数,但重写计划又推迟了。这种“已知但不修”的状态,在安全圈叫“风险接受”。它不是疏忽,是资源分配的结果。你不能说维护者故意留洞,他只是选择了先处理数据库连接池泄漏。

第三方组件也是重灾区。Log4j那个漏洞爆发时,很多团队连夜升级。但有个做工业控制系统的朋友告诉我,他们用的一个串口通信库依赖了旧版Log4j,而那个库已经五年没更新,作者联系不上。他们只能自己写补丁,但补丁又引入了新的空指针异常。漏洞从依赖链的深处冒出来,像老房子的电线老化,你换掉看得见的开关,墙里的线还是裸的。

最后说一个容易被忽略的:需求本身的矛盾。比如一个医疗数据平台,要求“医生能快速调阅患者历史病历”和“患者隐私数据必须加密存储”。开发者实现了加密,但为了快速调阅,把解密密钥缓存在内存里,且没有做进程隔离。攻击者通过一个内存转储漏洞拿到了密钥。这个漏洞的根因是需求在安全性和可用性之间没有给出优先级。产品经理说“都要”,开发者只能自己猜。猜错了,漏洞就来了。

所以回到题目:安全漏洞产生的原因不包括“故意写错”。它来自认知偏差、资源约束、组件依赖、需求模糊、标准理解错误,以及无数个在凌晨三点做出的技术决策。漏洞是系统的影子,有光的地方就有。与其追问“谁干的”,不如问“哪个环节的假设失效了”。

Tags:

相关文章

  • kali网站入侵渗透

    百科

    凌晨两点,我盯着终端里滚动的数据流,手心全是汗。目标是一所高校的教务系统,不是要偷成绩,纯粹想验证那个漏洞是不是真的存在——CVE-2021-44228,Log4j2的远程代码执行。 扫描器扫了半小时 ...

    【百科】

    阅读更多
  • 清风云南网站

    百科

    打开清风云南网站,首页最先撞进眼睛的,是那个蓝白相间的LOGO。有人说它像一只振翅的孔雀,我倒觉得更像一块被雨水洗过的青石板——云南的纪检监察工作,确实带着点这种湿漉漉的、接地气的气息。 网站里有个栏 ...

    【百科】

    阅读更多
  • 网络漏洞库

    百科

    凌晨三点,某安全公司的值班室警报骤响。屏幕上跳出一条新漏洞通报——某开源组件被爆出远程代码执行漏洞,CVSS评分9.8。工程师揉了揉眼睛,打开NVD美国国家漏洞库)页面,发现这个漏洞从提交到收录只用了 ...

    【百科】

    阅读更多


友情链接