今天看到《软件世界》中关于开源的文章,讲到开源一个好处:对于开源软件而言,每天都有人在看源代码,随时都可以发现问题,随时报告,有能力的就自己把安全问题修复了,然后发布出来给大家分享。然而我对此始终感到有些不对劲,却一时又不知道到底哪里不对劲。联想起最近闹得满城风雨的动易安全漏洞事件,忽然想到,这个“好处”对于使用开源cms的网站来说,可能是一个最美丽的谎言和最大的恶梦!
对于一般的只是个人在自己电脑上使用的软件(比如输入法、小工具),开源的这个好处应该是很明显、很正确的。但cms与其他软件产品不同,它是网站的运营基础,它不仅仅是站长在使用,还接受着各种各样的人群的访问,这里除了正常的访问外,每天还有大量的恶意访问。如果cms是开源的,则研究源代码的除了用户和爱好者以外,还有另一类人——“黑客”。现在的黑客很少有纯粹只是为了研究技术的,特别是寻找cms这样的应用系统的漏洞的黑客,根本就没有太多的技术和道德可言。他们研究cms的漏洞只有一个动机,那就商业利益。近年来,大家发现自己的网站被黑后,黑客好像并不删除数据,一般都只是加一个iframe之类的病毒页的调用,为什么呢?因为黑掉一个网站的利益很小,而将网站加上恶意代码,让访问网站的人中病毒或木马利益则非常大。通过“黑”掉一个网站,让成千上万的用户中毒,最后形成庞大的“僵尸网络”,以达到更大的利益。
对于绝大部分的用户来说,并不具备修改代码的能力,这样的话,开源的cms系统对他来说,与闭源并无二异。但对黑客来说,研究开源系统中的漏洞要比研究闭源系统中的漏洞容易得多。对于开源的系统,黑客可以通过阅读源代码直接寻找漏洞;而对闭源的cms系统,则黑客只能进行暗箱测试来寻找漏洞,这样的难度要比在源代码中找漏洞难得多。所以,从这个角度来说,同一个系统不开放源代码要比开放源代码相对安全得多。
另一方面,cms的开发商还没有谁敢保证自己的系统没有任何安全漏洞。因为“千里之堤,毁于蚁穴”,开发商要开发出比较安全的系统,需要付出极大的努力,但仍可能会因为百密一疏,只要一个地方没有注意,就有可能让黑客找到漏洞。而黑客只要找到一个漏洞,即可让开发商辛苦建立的安全防线崩溃。一个是写代码,要做各种防护手段,一个是研究代码,只需找到一个漏洞即可,开发商和黑客之间的较量,永远会是黑客占尽上风!
动易一直将安全问题列为公司的重中之重,在安全方面投入了大量的人力物力,反复对代码检查了多遍,可以自豪的说在同类软件中绝对是最安全的。但即使在已经发布了自认为最安全的sp5后,还是因为iis的一个漏洞让动易出现了最严重的安全漏洞,实在是让我们感概不已。可能是树大招风吧,现在动易是国内市场占用率最高的cms系统,使用动易的网站超过了20万,同时也引起了许多黑客的兴趣,他们以寻找动易的漏洞为荣(或者是出于利益需求),在找到漏洞后并不公布,而是用来黑掉一个个站点,在网页上加上木马代码。我们则只能一遍又一遍的检查代码,甚至反向思维从黑客的角度来查找动易的漏洞,直到今天,我们已经修复了所有已经发现的漏洞,但我们不敢保证系统中就没有漏洞了。我们与黑客之间的斗争将一直继续,直到……
总结:开源,永远是把双刃剑!无论是对开发商还是最终用户。
现在,你还敢用开源的cms系统吗?