为什么说基于ActiveX的“安全控件”一定是不安全的?

| 2 Comments

前几天听 bugs 说,国内某C2C网站打算这个月开始禁止Firefox用户登录其网站,而说到原因,又是“出于用户安全考虑”,“Firefox无法支持其‘安全控件’”云云。

我没用过这家公司的服务,因此我也不想就这家公司发表什么评论。我觉得很有意思的一件事是,似乎大家都很信任所谓“安全控件”。

那么,什么是“安全”控件呢?简单地说,这类控件是由特定商家发布的,基于ActiveX技术实现的一种Internet Explorer插件。尽管不同的公司会以不同的方式进行实现,但这类插件通常会实现的功能,不外乎以下几种:

- 替代输入框,防止其他程序通过hook的方式得到输入框中的内容。
- 以更直接的方式从键盘读取数据,防止非本机键盘输入数据和其他程序监听键盘输入。
- 确保内存中没有某些应用程序正在运行。

很遗憾,“安全控件”往往并不能理想地达到上述目的。更有甚者,事实上这些控件几乎一定会破坏系统的安全性。

为什么这么说呢?我们人类有历史以来,从正确的假设或前提出发,都有可能会得出错误的结论;那么,从错误的假设出发,能够到达正确结论的可能性有多大呢?可想而知。

那么,回到我们刚才的话题,为什么说基于ActiveX的“安全”控件几乎一定会破坏你的系统安全呢?错误的假设又是什么呢?

首先,在我们讨论安全系统的时候,人们往往会忽略这类系统中最重要的那个环节——用户。用户之所以是安全系统中最重要,同时也是最薄弱的环节的原因是,尽管我们能够精确地预计机器的行为,却无法精确的估计人类的行为;我们见到抢劫银行的罪犯用枪指着工作人员或人质,却很少有人用枪指着银行使用的计算机系统——因为人,在一个安全系统中,也只有人是机器的最终主宰。

给用户一个保险柜,却完全不给他或她机会去了解这个保险柜的工作原理,谁又能保证,这个用户不会把保险柜放在楼顶,任由风吹日晒雨淋,令其失去作用?这是所谓‘安全’控件的头号问题,即,它既没有真正加强用户的安全意识,也不给用户了解它的工作原理的机会。对于用户来说,这个保险柜是个黑箱,它安全不安全,只有老天知道(为什么说它的作者也不知道呢?且看下文分解)。

“安全”控件危害安全的另一个原因是,它在鼓励不安全的用户习惯。

熟悉Windows操作系统的朋友都知道,在Windows Vista之前,安装Active X控件是需要管理员权限的。也就是说,想要安装所谓的“安全”控件,其前提便是用户至少要以管理员身份打开1次用于安装该控件的软件,或者下载一个安装程序,并以管理员的身份运行它。

有多少非专业用户会以非管理员身份上网呢?这个数字接近0,说接近0的原因是,有一些被他们认为很“变态”的IT人员“挟持”的用户真的不是用管理员身份浏览网页的,为什么不能安装这个Active X控件?他们恨恨的想。随后,他们以各种方式得到了管理员权限,并安装了“安全”控件。

到现在为止,用户的安全还没有受到非常明显的伤害。但是,用户很快会发现,以管理员身份使用计算机很“方便”——没有了磁盘配额的限制,没有了各种各样让人讨厌的限制——凭什么不让我安装Active X?这个系统管理员真讨厌!

又过了一段时间,用户发现计算机越来越“好用”了。各种各样的工具条在系统中如雨后春笋一般出现,之后,打开浏览器时的首页也变得越来越“好看”,一些网页上还十分“贴心”地将关键词增加了连接指向不同的地方。“真不错”,用户想,“这才是我想要的电脑的样子”。

这并不可笑。

ActiveX无非是在诱惑用户使用管理员权限。它在破坏安全,而不是改进安全——因为写ActiveX“安全”控件的人,并不真的理解安全。

那么,话说回来,当用户改变了其良好的安全习惯之后,他得到的是什么呢?

表面上看,“安全”控件能够防止使用hook的程序获得用户输入的敏感数据,但是事实上这个没有任何作用。在用户的安全习惯改掉之后,最简单的办法,就是让他访问不到真正的网站,并诱使其输入那些敏感数据。举个更通俗一些的例子,把家里大门上了三道防盗门,但是没关窗户,窃贼仍然可以进来。

很遗憾,这很浅显的道理,应用到计算机上,往往就被人们遗忘。做安全的人,就像是人民警察,需要关注每一个细节;而想要破坏安全的人,就如同小偷,可能从任何一个没有被看到的地方进来。安全是一件困难的工作,因为防守的一方,不应该采用任何可能导致问题的办法去防御;而攻击的一方,则可以采用任何手段。

安全靠的是智慧、汗水,向公众普及安全知识,以及与用户的合作,而不是ActiveX。我不相信缺少智慧的做法会改善安全,也不相信从错误的假设能够到达正确的彼岸。

2 Comments

假如你所说的全错了,我赞成一条既:用户是系统安全的最重要环节. "国内某C2C网站"或许有着更“高尚”的目的。

赞!

Leave a comment

About this Entry

This page contains a single entry by Xin LI published on August 7, 2007 9:05 PM.

FreeBSDChina.org on IPv6! was the previous entry in this blog.

学习一个东西最好的办法还是写点什么…… is the next entry in this blog.

Find recent content on the main index or look in the archives to find all content.

Pages

OpenID accepted here Learn more about OpenID
Powered by Movable Type 5.01