为啥计算机软件会出现漏洞

我是否可以说,请题主去看看软件工程这本书T^T
■网友
bugs are features
■网友
漏洞其实就是通常人们所说的bug,属于程序正常行为之外的异常行为。比如在linux中常见的segmentation fault还有windows中常见的地址访问错误等。漏洞产生的原因很多,一楼总结的很好。几乎现在所有的软件都有漏洞,我想更多的原因在于积重难返,代码的量太大了,难以控制程序的所有行为。所以,binggo,各种bug出现,然后软件不断的出各种补丁,各种升级包。不过,现在很多工作也已经在软件漏洞方面开展的十分深入,曾经读过几篇论文,里面介绍了形式化方法验证了一个操作系统内核,能够保证操作系统的安全性。另外,硬件的安全性也已经有不少工作,比如intel每次熘片之前都会进行芯片行为的验证。不难想象,几十亿个晶体管的行为太难控了,稍微有点差池就是漏洞。
■网友
挂一漏万的答一下…爪机无排版,sorry这里假设题主想问的漏洞指的是软件bug而不是计算机安全领域的漏洞(因为问题的tag里没有)原因1:有的系统的复杂程度超过了人脑的处理能力,比如多线程就比较容易出问题原因2:程序员想着A结果写成了B,属于低级失误范畴。苹果的goto fail; goto fail; 还有bumblee的空格事件等属于此类原因3:程序逻辑未能覆盖所有的可能,导致某些情况下程序的行为是未定义的,此时会发生什么是不确定的原因4:硬件的可靠性不是100% 不能排除某个元件损坏导致二进制数据的某一位或某些位错误的可能原因5:程序员自身能力不足,写出了错误的代码原因6:最初的设计就有问题(真的就是把特性设计得像bug)原因7:依赖了只有在自己的机器上特有的设置,并且发布时并没有将此设置随程序一同提供,导致在其他地方运行时的行为不能确定,无法和本地产生同样的结果原因8:因系统或依赖的组件升级,导致原程序因API名称变化等原因运行异常先写这么多…想到新的就补上


    推荐阅读