软件bug是必然的,程序员不应过度给自己制造压力

我们在代码上花费的时间越多,软件的防御能力就越强,可黑客们总是有办法找到漏洞。为什么我们那么努力还是有这么多的漏洞?为什么这些漏洞总是能逃过测试?

NetSmell 出品

我们在代码上花费的时间越多,软件的防御能力就越强,可黑客们总是有办法找到漏洞。

为什么我们那么努力还是有这么多的漏洞?为什么这些漏洞总是能逃过测试?

下面我让我们分析下软件总是出现漏洞的几个原因:

1.只要是人,就避免不了错误。

在软件编程里大多数错误都源于我们自己的问题,虽说有些编码工具也会发生意外,但大部分的错误还是于我们自己造成的。无论我们学习的技术有多了不起,只要是人,就避免不了错误。不可能有那个人是从来都不会出现错误的。

我们所做的就是,只能尽可能的减少我们的错误,有些程序员因为没有受过SDL培训,所以这些人根本没有安全编程的意识。还有些程序员本身就是以写安全软件为主的,但他们之中大部分人都不懂如何安全编程。这可不是胡说,就像银行正在运行的安全软件中的bug,也许比他们所提供的保护措施还多。

就算是那些经过培训的程序员也不见得就可以避免出现bug。只能说他们会有所避免而已,终归是漏洞,总是有些让人们预料不到的事情发生。

2.编写的软件越复杂,错误就可能越多。

如果写的软件越复杂,错误当然是不增不减。人们常说,如果一个人能够做到每50行的代码中只会出现一个错误,那么就已经很厉害了。实事上很多程序员每写10行左右就会出现一个错误,算一下吧,如果编写一个Linux内核拥有超过1500万行的代码,会有多少的bug出现。

就算你的这些编码没有错误,但现在的互联网应用程序也是漏洞被攻击的途径。但是程序员也不能为了避免错误而不和互联网合作,所以在这么多的设备工作下,被击破的概率总是要增加的。

如果想要被击破的概率降低,就要写更多的代码来弥补,如果有一个只有30条汇编语言指令的恶意程序,如果想要防守,你可能要写50000条汇编语言指令!要想抵抗不同的攻击就要付出更多。

3. 只要是人写出来的都会有错,Fuzzers也不例外。

最近新出来的Fuzzers软件主要是扫描软件漏洞的,但Fuzzers也是人写出来的,只要是人写的就会有错误,例如:Fuzzers是不会发现颜色属性的缓冲区溢出这种情况的,主要是因为我们写Fuzzers的时候没有考虑这一点。当我们意识到这一点并做出更新之后,就能做到去查找各种类似的缓冲区溢出条件的字段。简而言之,我们要Fuzzers做什么,它才会去做什么,所以这些也都是人在操控而已。

4.对供应商的问责不到位

很多人都在抱怨一个问题,如果我们找不到证据起诉供应商的软件缺陷,那我们就没办法变的安全。是的,要是供应商能做到负责,那安全风险当然就会降低,我想我们之后在手机和电脑上也会玩的更爽了。

当我们享受一些更好的功能和更快的速度时,就必须牺牲部分的安全来换取这些。这样做也许会让我们成功的更快,但后果也是不得不承担的,不过还是有人愿为了自己想要的成功而甘愿承担。

5.忽略了对黑客的问责和他们应付的代价

实事上软件出现漏洞本身并不是什么大问题,问题是在他们遇到恶意攻击时的脆弱和毫无低档力。除非能制止黑客的猖獗,不然恶意软件会一直是我们的困扰。

不过早晚有那么一天,我们一定能把这些损害大家利益的家伙们绳之以法,将来会有一个干净的互联网平台供我们遨游。

显示余下内容
 

发表评论

电子邮件地址不会被公开。 必填项已用*标注