delphij's Chaos

选择chaos这个词是因为~~实在很难找到一个更合适的词来形容这儿了……

30 Nov 2006

有关招行网银的sbmc32.*文件

【已过时的信息】 此文章所描述的行为,已经变为这样。本文未来将不再继续和维护,其内容可能已不再反映现时的情况,请参考本blog的后续报道。

使用招商银行专业版的朋友会发现,近期的招行网银升级引入了一个叫sbmc32.dll的文件,并导致在64位Windows系统上的安装无法正常进行。这个文件是什么呢?

答案是WinIO—-一个来自Internals.com的软件。它的作用是什么呢?按照作者的说法是:“This library allows direct I/O port and physical memory access under Windows 9x/NT/2000 and XP. Version 2.0 provides faster I/O port access, better memory mapping support and can be used from non-administrative accounts under Windows NT/2000 and XP."。简而言之—-通过给Windows开这样一扇后门,即使没有管理员权限的进程,也可以监控你的计算机的一举一动了。

遗憾的是,招商银行的技术人员很显然并不了解这个程序可能产生的后果。我们通过比对对应文件的MD5可以发现一个很有意思的现象:

[delphij@tarsier] ~> md5 sbmc32.*
MD5 (sbmc32.dll) = 0e5e0e1da4febe20ef529d7a2a2969d7
MD5 (sbmc32.sys) = 7e5a7cf19504af7ddaf4fa36261940d1
MD5 (sbmc32.vxd) = 7a5af5dd62c4bc97c1654790e8d2f307

而另一方面:

[delphij@tarsier] ~> md5 [Ww]in*
MD5 (WinIo.dll) = 6d113aa35a8c79b236751e4ccf2b7751
MD5 (WinIo.sys) = 7e5a7cf19504af7ddaf4fa36261940d1
MD5 (winio.vxd) = 7a5af5dd62c4bc97c1654790e8d2f307

这说明什么问题呢?有两个来自Internet的__二进制__的文件,被不加修改地直接使用了。我们可以推断:某些引入这些文件的人,不懂得如何编译一个.vxd和.sys文件,他只会编写MFC程序,正如那个LiveUpdate程序被叫做"MFC基础类应用程序"一样。

如此不专业的作法是令人非常震惊的。

在大学学习过《操作系统设计原理》的人都应该清楚,为什么操作系统需要隔离程序和硬件—-出于显然的安全性考虑,操作系统没有办法验证访问硬件的程序是善意或者是恶意的。给用户安装这样一个驱动,有什么办法来阻止恶意的程序来利用这个驱动所提供的能力,去控制用户的键盘输入、监视用户的一举一动呢?

另一方面,作为银行,尽管我们可以信任由银行发行的软件,但将这样一个来自第三方的软件的二进制版本直接包装到自己的软件包里面,而不进行哪怕是重新编译一下这样的行动,这是一种很专业的做法吗?

很难相信这些做法都是招商银行所声称的"为用户安全考虑"之下进行的,因为这些行为,一经违反了许多最为基本的安全常识。我不知道,通过这种做法,能够给用户的安全性带来什么益处,或者,又会给他们带来什么样的安全隐患?

要知道,WinIO这个服务,尽管本身并没有什么恶意,但它是许多木马和键盘记录程序的一项基础工具。搜索WinIO、木马这两个关键词可以看到很多结果。

这是在维护用户的安全和利益吗?!

我希望招商银行能够立刻对这个问题进行修正,并采取切实措施避免类似情况再次发生。

以下是一位资深Windows开发人员提供的卸载脚本,用于在64位Windows上清除招商银行安装程序(说句题外话,招商银行的安装程序并不了解如何在64位版本的Windows上安装驱动和服务):

reg delete HKLM\SYSTEM\CurrentControlSet\Services\WINIO /f
regsvr32 /u /s %SystemRoot%\SysWOW64\CMBPB40.ocx
del %SystemRoot%\SysWOW64\Cmb_Pb_LiveUpdate.exe
del %SystemRoot%\SysWOW64\CMBPB40.exe
del %SystemRoot%\SysWOW64\CMBPB40.ocx
del %SystemRoot%\SysWOW64\cmbpbhelp.chm
del %SystemRoot%\SysWOW64\CMBPBUninstall.exe
del %SystemRoot%\SysWOW64\HttpComm.dll
del %SystemRoot%\SysWOW64\sbmc32.dll
del %SystemRoot%\SysWOW64\sbmc32.sys
del %SystemRoot%\SysWOW64\sbmc32.vxd

警告:上述脚本将修改注册表和服务配置,非专业人士请勿使用。此脚本只适用于在64位版本的Windows系统中清理由于招商银行目前版本安装程序问题而安装到不正确位置的文件,作为一项临时性解决方案,它在未来有可能不再适用。此脚本需要用SysWow64中的cmd.exe运行。

相关信息,已通过电话投诉方式告知招商银行。


Archived: 6 Comments

kevin | November 30, 2006 8:33 AM

好牛
幸亏我不用他们的

菜鸟 | November 30, 2006 6:00 PM

没有安全常识的人做安全, 往往是心有余而力不足……

GT | December 1, 2006 9:16 AM

32位下的完全卸载方法一样吗?再也不用招行的东西了

Guest | December 1, 2006 1:11 PM

呵呵
winio是二进制发布的在资源内嵌二进制驱动的库, 无法静态编译, 所附带的lib和.h不是源代码而是导入引用的定义.

建议认为某些白痴试图把用户当白痴的某个白痴去搞明白implicit/explicit中static语义和static lib的区别先.

Alec | December 2, 2006 9:28 PM

招行还号称是国内银行IT做得最好的!
不知道专业版是不是他们的融博公司做的!如果是那他们的水平真是太烂了!

54545招行 | July 22, 2007 5:21 PM

中国现在的外包做的就是烂,除了低价没有比得上印度阿三的,可悲!招商银行的钱多花到什么地方了!