4月16日消息,百度安全专家方小顿在2009腾讯安全技术峰会上指出,很多互联网公司在架构上存在缺陷,重要业务和次要业务本质上没有分离,web安全问题非常严重。
他举雅虎的例子称,雅虎用户在美国登录一次后,在中国等都是登录,登陆一次就可以直接登陆所有应用,这就是有风险的,完全信任客户端而无法验证当前认证是否有效,这样把可能遭受的攻击的风险泛化。
黑客一旦攻入一个web应用,他就可以自然而然进入其他的服务包括敏感的web应用如用户邮箱,这对安全非常不利。
百度安全专家方小顿
2009腾讯安全技术峰会4月16日在深圳麒麟山庄国际会议厅举行。腾讯科技做现场直播。
以下是百度安全专家方小顿演讲实录:
方小顿:大家好!我今天主要讲的是Web程序架构,首先是关于我的介绍,我是一位安全工程师,也是一位跨站师和web渗透师,安全太关注于一个方面没有太大的意义,所以也搞一些业余的渗透测试。
最主要的一点,我是黑客实用主义者,一些Web的漏洞,可以利用的情况下我才认为它是安全漏洞,这是最主要的不同。
今天我跟大家讲一下Web安全的发展,很久以前,网络上是什么样的情况呢?操作系统存在空口令,web服务器存在溢出,这个时候谈web应用安全毫无意义。
而后来web的漏洞,比如影响服务端的漏洞比较多,也是有原因的,那个时候操作系统变得健壮,空口令已经不存在了,溢出也变得比较少了,黑客就会把目标投入到web应用程序,也就是现在经常讲的SQL注射、代码执行、文件读写等。
现在各互联网公司组织了自己的安全部门,大家可以把一些SQL注射问题解决掉,代码执行解决掉,文件读写也解决掉,而现在的问题是,一个应用程序可以没有与系统交互的命令执行,但是不可能没有输出、输入。
没有对外界有输出的业务程序,可能都不用出现在web前端上,直接放在后台就可以了,所以客户端的安全问题就非常多了。
客户端安全问题有什么严重呢?现在一些web2.0应用,像博客,SNS,Web应用最大的是用户数众多,只要有一个地方存在问题就可以导致通过好友影响到更多的客户,譬如一些web2.0蠕虫,严重的时候可能导致服务down掉。
还有一些邮箱服务,这些也是属于隐私特别高的,如果有XSS,把你的私密信件窃取掉。具体的跟应用的场景有关,漏洞的影响就看黑客在什么地方用,如何用。
这个时候我们怎么办?安全工程师是在甲方工作的,他不像黑客可以花非常多的精力找一个漏洞,我们的责任是保护我们互联网公司所有应用程序的安全,但是面对海量的程序,我们真有精力找出所有的安全问题吗?
不像在传统的Web应用里,也就是web1.0时代,一个公司可能就只是一个单独的web应用,我们可能走SDL,对代码进行审核,流程从我们走,我们可以对安全薄弱环节把关,这个时候我们可以很有效率地提高一个应用的安全性。
但是面对互联网公司大量的应用时,由于资源有限,我们就很难对每一个应用都这么操作,那么能不能有什么方法能降低客户端漏洞的风险,从基本架构上把这个问题解决掉呢?
譬如雅虎现在分为雅虎美国、雅虎中国、雅虎台湾、雅虎日本,还有很多不知道的,只要在一个地方登录可以自动切换到其他的地方,这是很方便的应用,但是同时带来一个什么样的问题?他只要随便yahoo.com下面出现Xss漏洞,就是一个次要业务的漏洞也会影响到所有的服务,譬如mail等敏感业务,可能也会受到影响。
雅虎这个问题的本质上就是服务众多,重要的和次要的没有分离,为什么我们谈到次要与重要,是这样的,我们在一个互联网公司,区分应用重要和次要的是由上级决定,上级觉得这个东西赚钱,太重要,要把时间花在这个上面,他能给我们带来利益,我们要把它做好。
同时忽略了一些应用,相对次要,这方面花的精力就少。如果次要和重要的业务在web架构没分离的话,假设我是一个攻击者,我知道你在重要的业务上花了很多精力,我为什么要碰这一块已经防范好的,我把你没有主要的那部分搞了不就得了。
另外雅虎的同事跟我聊天跟我谈到他说做安全,雅虎在安全方面有这个宿命,因为前期的架构一旦定了,后期修改的话代价会非常大。
譬如雅虎做到全球性的互联网企业后,会遇到了这么一种情况,他有雅虎中国、雅虎美国,我们传统的应用程序登录的时候,一个帐户一个密码,认证的时候自然会后面的数据库查询查询状态,当雅虎做大以后,用户数众多,这样做就变得不可能了,他不可能在全世界每个业务都会到美国查询密码是否正确。
他们为了防止这种现象,只要你登录成功,雅虎是把Cookie设置在.yahoo.com,在美国登录一次,在中国等地都是登录的,这就是有风险的,因为风险被泛化到全球所有的web应用,一旦有人能破解这个算法,黑客攻击一个点,他就可以自然而然进入人家的帐户。
由于他前期没有考虑到这种情况,在架构上没有设计好,一旦算法泄露,只能升级服务器,而黑客还是有可能再次拿到算法,由于后期改动认证机制,成本太大所以很难从根本上解决这个问题,所以说这是雅虎安全上的宿命。
还有一个问题,也是大家比较公认的,我个人也这么认为,Linux比Windows安全,Windows一旦感染病毒就可能导致系统文件和其他拥护的文件全部都改了,而Linux中招了,就只能影响到自己,各个帐户之间是独立的,所以从这一点上我认为Linux比Windows设计、架构上好。
看起来我上面说的都是挺简单的东西,实际上让互联网公司做是非常困难的事情。一是和业务的冲突,当时这么做的时候也没有考虑到那么多,应用都只考虑方便和效率,这样就导致基础架构的形成,而后来的业务的发展都是在那个架构之上。
一旦根已经定了,根上面长出大树、枝叶都长出来了,基础架构形成以后,重新从安全上考虑,设计这样一个东西的话,代价是非常大的, 我们需要把整个树做一次全新的手术,在最痛的地方去改,代价非常大,Yahoo作为一个典型的互联网公司就是个例子。
我们能不能不改呢?现在互联网公司很多都没有意识到这一点,为什么没有这种想法?是因为不够大。互联网公司发展完以后,发展得够大以后,安全问题突出以后,就会发现已经是想改都改不了。
【编辑推荐】