对安全问题的继续漠视,轻则能让那些有些头脸的门户网站面目全非甚至彻底毁容;稍严重些,可以让用户委托网络保管或通过其传输的资料灰飞烟灭或是人尽皆知;再严重些,网将不网……这,绝非危言耸听。
编辑部是从一封来信得知新浪存在一个安全漏洞的,最初我们并未太在意,因为网络漏洞实在算不上一个新话题。但当我们进一步了解情况后,我们感到问题远非想象中那么简单……
惊见漏洞
漏洞是一位叫做shadow的网民发现的。
以下是shadow的来信中提到的漏洞发现过程:
这个漏洞的发现很有些戏剧性。那天恰巧是中国的情人节(农历7月7日,今年阳历8月25日),我想为我的女友在新浪贺卡站上挑选一张贺卡,于是登录到新浪贺卡站:“http://ecards.sina.com.cn”。当我选中一个贺卡的时候我看到网页程序发出了如下申请:“http://ecards.sina.com.cn/cgi-bin/card/preview.cgi?title=父亲节快乐&name=sina&image=/2000-6-13/09202036812&template=1&ztcolor=”(如图1)。
根据我所掌握的CGI编程知识,“preview.cgi”有可能是服务器上一个CGI数据库文件调用程序(下面简称CGI程序)。我又注意到CGI程序读取贺卡文件的形式:“……image=/2000-6-13/09202036812……”。如果没有猜错,CGI程序通过“&”来连接几个数据库文件的定位条件,从而定位出图片文件(即贺卡),并将其显示出来。很明显,“2000-6-13”是文件所在路径(这说明网站的文件目录是按日期命名和排序的),而后面的“09202036812”是贺卡的文件名。我想,既然从数据库中能够调用图片文件,那是不是也可以调用其他文件,比如说系统文件呢?
我的脑海里闪过了UNIX操作系统中最重要的系统文件之一的“passwd”(它用于存放主机的各种用户名和密码信息)。我们都知道,“/..”代表父文件夹,而“/etc/passwd”是passwd文件存放的相对路径。于是,我按照此CGI程序读取的规律,修改地址栏的URL,删除“/2000-6-13/09202036812&template=1&ztcolor=”,将其替换为类似“/../../etc/passwd”……当我将“/..”的个数加到9个的时候(文件夹达到11层),地址栏部分为:http://ecards.sina.com.cn/cgi-bin/card/preview.cgi?title=父亲节快乐&name=sina&image=/../../../../../../../../../etc/passwd,贺卡的位置上出现了该主机的passwd文件的内容(如图2)。我非常惊讶!passwd中存放了服务器管理员的名字和密码,这个文件竟然被此CGI程序(preview.cgi)泄露!
passwd文件是UNIX操作系统存放系统管理员和普通用户(这里的“用户”并非指网站的访问者而是网站内部的人员,可以理解普通级别的管理员)的用户名、密码等信息的文件。此文件本属于只有系统管理员才有权力读取的文件,即使是系统的普通用户也无权读取,更不用说接受新浪服务的普通访问者了。某些版本UNIX系统的passwd文件被获取后,管理员的密码可以直接使用黑客软件破解得出(passwd文件中的密码仍然是加密的),攻击者随即就能够以管理员的身份“接管”新浪,为所欲为;即使不能破解,攻击者也可以从中获得服务器管理员的用户名等机密信息,进而可以为扫描、密码穷举猜测等攻击做进一步的准备。因此这个文件的泄露,尤其是它仅仅通过在IE地址栏中输入一串URL信息而非通过黑客软件即可获得,这是极度令人难以置信的。
倒吸一口凉气之后,我又“战战兢兢”地尝试着将地址栏中URL的绝对路径部分改为“etc/syslog.conf”(系统版本文件)、“etc/inet/inetd.conf”(系统网络服务配置文件)、“/etc/publickey”(系统公钥文件),不一会儿,我已经得到了新浪服务器一些重要的系统文件。
两次通知新浪
1.发现者首次通知新浪(来信摘抄):
发现漏洞后,我立即向新浪公司发了通知信(E-mail方式)。整整两个月过去了,我一直没有收到回复信函。时至今日,此漏洞依然存在。作为新浪网的用户,我对新浪网处理此漏洞的态度感到遗憾。而今年3月,我发现了sohu的一个CGI漏洞,通过它可以进入Sohu的一台主机。和Sohu的安全人员联系后,引起了Sohu管理层的高度重视,他们迅速找到我本人,最终,我协助他们共同解决了这个漏洞。
于是,我将此漏洞告知我所在的网络安全联盟(四川安盟科技有限公司),希望通过他们出面,帮助新浪尽早解决此漏洞。
2.编辑部通知新浪
10月8日,国庆后上班的第一天,本刊编辑拨通了新浪网的电话,以下是电话记录:
本刊编辑:喂,请问是新浪网吗?我是上海的一位用户,我刚才跟您那位工作人员谈了一下,我知道新浪网有一个安全漏洞,他让我跟您联系一下,可以跟您联系吗?我想与有关安全方面的人士联系,分机是7403,是这样一个漏洞,我先描述一下特征。是这样的:可获得系统密码,可以存取文件,不知您对这个漏洞有什么看法?
新 浪 网:您第一次是跟我们这个部门联系的吗?
本刊编辑:我是跟“网站内容管理”部门联系的,他让我跟您(负责网络安全的部门)联系,我不知您那里准备怎么解决这个漏洞?
新 浪 网:获得系统密码,还有呢?
本刊编辑:然后就是可获得文件存取权限,这个漏洞发现很久了,现在还在。
……(随后的25秒,新浪网的工作人员放下了电话,和周围的工作人员低声商量——给人的感觉是,这位工作人员面对这种问题有些不知所措)
新 浪 网:这样,您将您发现的内容用邮件给我们发过来。
本刊编辑:这个漏洞不是我发现的 ,是我朋友发现的,他是网络安全公司的,您如果想解决的话,最好直接与他联系。
新 浪 网:您可以把情况……可以把那个用邮件发过来,我们看一下。
(我们注意到,新浪的工作人员似乎始终在回避“漏洞”或者“问题”这样的字眼)
本刊编辑:我觉得在您跟他协商之前还不能告诉您。
新 浪 网:那你也无法告诉我们,问题能不能解决?
本刊编辑:可以肯定的是:服务器系统密码可以得到,还有一个就是文件存取(的权限)可以得到。这两点,我觉得应该很成问题。
新 浪 网:那这样,我们自己来查一下。
本刊编辑:你们自己查一下,我过两天想看一下结果,好吗?
新 浪 网:我们会跟其它部门说一下,然后预防一下这个。
本刊编辑:如果你们能发现,我觉得也不错。那就这样吧,再见。
新 浪 网:再见!
在采访的整个过程中,新浪网的有关人员始终未询问编辑的姓名和联系方式,这让人感觉到新浪对于解决这一漏洞有着足够的信心——如果新浪想解决的话。同时这也意味着,如果编辑部不再次主动联系新浪的话,新浪无法向编辑部进一步询问有关漏洞问题的情况——如果新浪想询问的话。经本刊技术编辑证实,截至10月16日,此漏洞仍然存在。
漏洞引起的严重后果
稍微有些网络安全知识的读者都会明白这个漏洞意味着什么。
为了让一般的读者进一步认识到这个漏洞对网络安全的巨大威胁,我们觉得很有必要向读者们分析一下这个漏洞可能造成的危害:
好比在你家里每个人都有一把开房门的钥匙,家里有杂物也有贵重物品,毫无疑问,贵重的物品包括钱、存折和金银珠宝等一定会保管在你认为十分妥善之处,其中有你的父母或朋友让你临时保管的二十万元的买房预付款(条件好的大户人家,家里还会有个保险箱)。显然,这把钥匙(或保险箱的钥匙)一定只会你或你的妻子才掌有。好了,你今天犯了大错,不仅把家里的房门钥匙连同保险箱的钥匙随着你的皮包一起给丢了。而且最关键是皮包里有你的身份证和名片。试想一下,如果小偷在绝对第一时间里上你家拜访,这个结果是怎样的。
新浪网的这个漏洞就是这个皮包,里面有家庭住址、电话号码,有各种钥匙,还有,你昨天刚从银行取出二十万元的凭证。应该这么说,新浪网的这个漏洞比这个例子更糟。因为捡到这个皮包的人如果是小偷的话,他还要搞清楚你家里现在是否有人。新浪网连这个都不需要。
写在最后
在本次调查中,我们深感国内的网络安全现状令人担忧——不光是技术方面,网站自身的问题可能更大。
一、事先防范措施不够
技术人员的安全意识薄弱:从前面漏洞的发现过程可以看出,CGI程序的编写者在编程中并未注意程序代码的安全性问题,从而造成网页被访问时服务器上的重要信息泄露。其实,这类问题应注意事前防范,网络安全人员多提醒程序员注意编程中的安全问题即可。
对网络安全性检查不够:国外有相当多网站对安全性采取的不是被动而是主动的方式——通过有偿的方式“请”爱好者甚至黑客查找安全漏洞并共同加以解决。无法得知新浪的安全检查措施,但我们有理由怀疑它的有效性。
二、事后防范措施不够
对安全问题的举报不够重视: 从前面编辑部的采访可以看出,新浪对于安全问题的举报似乎没有一套行之有效的上报、处理、反馈机制,shadow发出的邮件石沉大海、编辑部的采访遇到的是冷淡的反应。很难想象,对送上门来的重要警报毫不关心,新浪仅靠自身的网络安全人员,能够发现和解决多少漏洞?
网站对安全问题的漠视:态度问题说是最致命的问题。我们问过不止一家网络安全公司,得知新浪网对于安全问题举报的回答经常是类似下面这样的内容:
我们是一家大型网络公司,有许多漏洞是难免的。
其实,所有的问题都可以归结到这个问题上。
人人都知道网络安全性差,但网络为何无法给人以不安全感?以前,我们觉得众多“可恶”的黑客是威胁网络安全的罪魁祸首,但现在,我们有了新的认识。
人人都知道网络有漏洞,但漏洞究竟是什么?以前,我们把“漏洞”理解成网络技术、协议上的漏洞,但现在,我们认为对“漏洞”应该有更新的诠释。