互联网,关于安全、漏洞和补丁的反思,关于用户利益至上--参加互联网安全大会后的思索
在互联网安全大会的第二天一开始,bash漏洞被爆出,又是一片哗然。这让我对业界种种声音,进行了很多的思索,有了与之前截然不同的想法。
在互联网飞速发展的今天,越来越多的实践证明,在安全问题上,不经过认真细致的设计和评估,仅靠事后的测试检测,加上出事后各种推诿补丁,会越来越乱,代价之大,无法估计,效果之差,更令人瞠目。这是参加两天的互联网安全大会的一个收获。
打补丁不是解决安全问题的办法,永远只是权宜之计。因为一个产品上的补丁,永远也不能和产品达到完美的和谐,这里的和谐,在软件开发领域中,就是Brooks博士所看重的“概念完整性”。设想一件衣服上出现一个补丁,两个补丁,直到最后满是补丁,你怎么想?
在这个年代里,对软件产品而言,补丁这个词,真的像极了它的本意,永远也不能无缝融入产品本身,和产品本身有着本质的不协调。
发布一个产品之前,基本上是一个稳定的团队在做,但是之后的维护,可能就是换了一批人,思路、技能,都不同,尤其重要的是,对一个产品内部最核心的“概念”认识也会千差万别。即便是最初的团队来一直在维护,也因为时间线被拉长,热情消退,想法改变而使补丁和产品之间,有很大的鸿沟。更有甚者,补丁都是本火烧眉毛的事情逼着赶出来的,哪里有空去想什么一致性?
所以说,做一个产品,初期好好做,不要想着到后边打补丁,打补丁是一种不得已的办法,不要总是逼着自己用这个不得已的办法,这是一味药,可以在紧急的病态里发挥一点作用,但是有其副作用。良好的设计,和规范的实现,才是减少bug和漏洞的唯一有效方式。就像好的软件是做出来的,而不是测试出来的一样。
当然,再认真详尽的设计也无法根除漏洞,但这是个总体收益/成本最低的方法论,看看千疮百孔补丁摞补丁的 windows吧!这些年,产品团队付出的代价加上使用者(例如一些企业内的运维)付出的代价有多少呢?加上由各种漏洞和后门带来那些损失,代价又是多少?
令人失望的是,很多人依然没有意识到好好的、踏踏实实做好设计是最低成本的方案,反而迷信所谓各种安全产品和安全从业人员,让他们也不堪重负。最重要的是,安令形势一天比一天恶劣混乱。因为指望他们,让信息世界变得有序、安全,是缘木求鱼,根本不现实的。安全,应该是从IT产品的策划者、设计师、实现者、检测人员,再到配合的周边产品等等一起来共同完成的一个目标,安全产品和安全从业人员,实际上是很外围的辅助手段。
问题是设计好好做,需要成本和时间,这是必然的,但是对厂商来讲,这不是出次品再打补丁的借口,什么都不会设计,何必出来混呢?做的慢,跟不上市场的节奏,可以招能力强的人,或者和能力强的厂商合作、外包,等等方式。你总得付出相应的成本,做出相应的工作,才能获得收益和利润,空手套白狼只是忽悠。
不要说这就是互联网思维,这玷污了“互联网”这个词,因为互联网这个事物本身带有一层“用户利益和用户价值至上”的观念,而不是“厂商利益至上”,用户利益不可以牺牲。并且,做好与快速,本身没有质的矛盾。
不要告诉我你就这点设计能力,再仔细也就只能这样了,更不要告诉我你何必关心用户的安全问题。上进心,良知和责任如果都没有了,比出一千一万件安全事故更可怕。