2008年10月28日星期二

微软“黑屏事件”对信息安全问题到底有什么启发

微软针对盗版用户强制黑屏的事件,目前成为一个热点话题了。本来对这个问题我是没有什么发言权的,因为这是一个打击盗版的手段是否恰当的问题。和多数人一样,我也认为盗版不对,认为现在很多软件太贵(尤其是对没有商业目的的学生用户来说),我也希望国产软件早日发展壮大等等。但是,现在很多人开始从信息安全的角度说这个问题,甚至媒体上出现了 “释放恐怖信号”、“威胁国家安全”等等一些看起来相当 “恐怖”的标题。作为信息网络安全行业的一名工作者,我觉得还是需要就这件事情对信息安全问题到底有什么启发说说自己的看法,因为信息安全领域最重要的工作之一就是提高用户的安全意识:正确的意识。


首先不能回避的一个问题是,微软的这种做法,技术上算不算“入侵”?

有人说微软这么做,是在“入侵”用户的电脑。“反入侵”就是我们做网络安全工作的主要内容之一。按照CNCERT的年度报告,现在每年发现中国大陆数百万台计算机被入侵,如果微软这件事情也算入侵的话,2008年的报告,这个数字可以直接引用CNNIC的“上网计算机”数字了:超过8千万!(拜托,那么所有作安全的人全体下岗好了)

从技术上来说,这件事情并不能和入侵划等号。用户的计算机在每一次升级的时候,会主动联系升级服务器下载新的程序代码,这些程序通常用来解决原来产品中存在的问题(例如漏洞),或者增加更多或更优的功能。整个过程如果用现实世界的情形来打比方的话,就如同用户给一个家用电器公司打个电话,告诉这个公司自己是它的产品用户并报上自己所用的产品类型以及序列号,公司那边核对之后派出服务人员到用户家里,提供零件替换或者修理服务。

对这个过程,需要注意这样几点:

1) 家用电器公司是应用户的请求才来用户家里更换零件的,而不是哪天一高兴自己随便可以去哪个用户那里看看;

2) 用户计算机里面除了微软的系统,还有很多很多的软件也都要更新,更新的模式现在也都是如此。另外,现在新发现漏洞的频率非常快,每天都需要有极大量的程序需要升级,否则用户的系统就面临很大的风险;

3) 面对计算机软件、互联网这些“虚拟世界”,现实世界中的绝大多数用户是无法了解每一个软件,并且亲自逐一进行升级的。现实中的模式是,用户“同意”一次以后(经常是在安装的时候),用户计算机里的软件就会将来自动发请求要求更新的,而且每次更新的时候,虚拟世界中也没有一扇“门”需要用户自己打开。这一切经常让现实世界中的用户感觉自己的计算机不知道在干些什么。

所谓入侵,指的是未经用户许可,进入用户的系统,进而获取用户信息、使用用户资源等。从这个意义上说,类似微软的这种升级活动本身不能算作入侵。但是这次不同的是,升级以后的结果是对用户不利的(黑屏),这就好像电器公司让修理工借给用户服务的机会检查用户的产品是不是侵犯了公司的知识产权,如果是则在服务的时候做点手脚。这种情况怎么算?其实这才是本次争议的焦点:公司有没有权力这么做。但是不能把这种情况等同于“入侵”,否则现在几乎所有的软件全都存在入侵行为,应该禁止销售了。

关于“用户同意”,也确实有被恶意软件利用的先例:曾经有间谍软件(spyware)收集用户敏感信息最终被告上法庭,结果发现该软件在安装时候那一大堆文字中一些写明了要拿这些信息,可是用户选择了“我同意”!实际上绝大多数用户都根本不会看那一大堆文字,为了安装软件就去点“同意”的。“同意”了什么?基本不知道。


第二个问题是,这件事情是否暴露出安全上的隐患,以及这个隐患到底是什么?

大家担心得不错:不论微软通过什么手段,反正是他能够做到让很多计算机出现问题,这就是一个安全上的隐患,或者说是风险。不过,请注意以下情况:

1) 在微软推出XP的时候,其在线“激活”机制就曾经遭受过很多人的质疑,因为这意味着用户计算机的正常使用和企业的服务器存在某种挂钩机制了。甚至当时就有人说,借助这一机制,微软是不是也可以让用户计算机被“激死”呢?理论上这是可以做到的,想想看,这是多大的风险!(现在‘黑屏’才想起说?)

2) 还记得当年赛门铁客误杀事件吗?当时很多中国用户因为赛门铁客升级之后误杀系统模块,导致计算机不能工作,损失惨重。(例如炒股中断)

3) 刚来这边就参加过不少研讨会,听到一个案例说,西雅图市负责城市水、电等基础设施供应的机构,曾经两千多台计算机同时不能工作,因为某著名防病毒系统(不知道有没有公开报道,按照惯例这里不点名了)自动升级以后,这些计算机CPU全都处于100%占用状态(证明我的上一篇博文有理吧)。这属于影响城市基础设施的案例了!

这些情况说明,风险的根源来自于“在线升级”这种模式,而不是来自于某个特定的产品。现在的软件产品大量采用这种模式,确实给用户带来了方便,但是也带来了风险:正常情况下,一个漏洞出来之后,本来要经过包括用户测试等诸多环节之后才应该被正式使用的,如今省略了很多环节,可能导致由于升级模块本身的问题,或者升级后和用户某些应用不兼容的问题而导致用户系统瘫痪。更加恶劣的情况是,如果有人利用这种模式瘫痪大量系统,也会比较容易。

微软因为用户多,所以如果出现这种问题,影响面会非常大。但是从上面介绍的情况也可以看出,用户没那么多的软件系统,如果出现类似问题,后果同样可怕,同样可以影响到基础设施,涉及国家安全。


第三个问题是,不用微软的产品,这个风险是否就会降低呢?

其实从第二个问题的分析已经有答案了:不用微软的产品,这个风险依然在那里。从国家安全的角度,关键技术设施相关的信息系统可能因为某个其它软件产品的升级导致瘫痪;从企业和个人用户的角度,所使用的系统也可能因为其中的任何一个软件升级的时候出现各种问题。

所以,降低这种风险的方法,不是说不用某一种或者某一类产品,而是改进我们的漏洞处理流程和软件升级流程。否则,哪怕全部都改成国产软件了,问题依然存在。

曾经把系统化的漏洞处理总结为10个阶段,这里不想赘述,只是希望用户和各级决策者明白,针对“漏洞”的工作,并不是建个库那么简单,之后还有大量的、艰苦的工作要做。


说到这里,又想起来2003年从冲击波等蠕虫那里得到启发后,曾经向微软提出过一个建议,其中一个核心的意思是需要建立一个第三方的补丁升级平台。这个第三方是用户可以更加信任的。由这个第三方向重要的用户直接提供经过更多第三方检测和测试之后的升级补丁(当然,这里还需要另外一个第三方的体系独立于微软作大量测试,一些特殊用户也还需要增加自己的兼容性测试)。这个建议提出的时候是要解决多个问题,也可以用于减少直接在线升级带来的风险。

微软作了很多技术上的改进,也推动了一些项目,但最终和我们的建议还是有很大不同,当然离规避这个风险的目标也就相去甚远了。降低在线升级的风险,最终需要解决的是信任问题和第三方监督的问题,不是纯粹的技术问题。


2008年10月22日星期三

开篇竟然是因为忍无可忍

本来倒是打算开个博客,方便和国内的朋友们分享工作和生活上的新东西。不过这个设想迟迟没有兑现,因为总是有其他的事情“加塞”(本质上是因为自己偷懒- 呵呵,这话不能明说)。如今终于痛下决心,兑现设想,却是因为忍无可忍---------看来,人是需要刺激的啊!

事情是这样的:
前几天晚上,我的计算机变得奇慢无比,一看任务管理器,发现CPU利用率100%,其中超过80%都是被卡巴斯基的几个进程占掉了。想临时停掉卡巴斯基,却 发现它根本不听我的--停不掉!来不及细想,当时正有重要的事情要和朋友谈,只好先进入带网络的保护模式。之后重启了,也没什么问题了。

第二天,再次出现这个问题,无法暂时停掉卡巴斯基,也无法让卡巴斯基把CPU给我让出来,眼看着机器僵在那里。拜托,这是我的机器还是卡巴斯基的机器?!

费了好半天功夫,成功“说服”卡巴,让它什么也别管了,然后重启。现在,整个世界终于安静了,卡巴先休息了,让出了我的CPU,使我能够先工作一会儿了(谢谢你啊,卡巴)------哪怕现在是“裸奔”(看看vista到底怎么样,呵呵)。

可以理解卡巴的做法:担心被病毒程序关掉,想出很多保护自己的办法。但是,作为一个新用户(以前一直用瑞星来者,这次新换了机器,托同事买防毒软件,结果买了卡巴),我却感觉非常不舒服,甚至是忍无可忍。

我 们为什么需要信息安全?因为我们要使用信息技术。安全始终是配角,是信息技术应用的保镖,而不是主角:没有信息技术,就没有了信息安全问题的存在。安全当 然是“快捷”、“方便”等的敌人,但是为了信息技术带来的好处能够“长远”、“可持续发展”,安全带来的不便是必然的代价。可是如果做过了头,让信息技术 无法应用、停滞不前,就成了本末倒置了。

卡巴斯基是不是忽略了这个问题?用户自己不能控制自己计算机里面的程序?当然,这个案例或许也是冤枉卡巴了,可能是由于当时其他的原因导致的,但是,就凭卡巴出现让自己的程序消耗80%以上CPU资源的情况,就是无法接受的。我的计算机是给我用的,不是买来给你用的!(说到这里,就又该怀念UNIX/Linux了,在那里才有自己真的是计算机主人的感觉。在微软环境下,总是不知道,自己的计算机整天忙乎啥呢?!)

就如同我以前在报告中说的,计算机是人们用来完成各种工作的工具,不能要求每个人天天去关心计算机是不是“健康”的,否则,人类岂不是变成了计算机的奴隶了!

我们其它作安全的,恐怕也需要牢记这一点吧。