您位于: 首页 OWASP峰会 OWASP2010中国峰会 钟卫林:Owasp十大威胁及银行业务安全

钟卫林:Owasp十大威胁及银行业务安全

 

美国富国银行资深安全专家 钟卫林女士

 

演讲实录:

 

钟卫林:大家下午好,我是钟卫林。很高兴有机会跟大家讲OWASP.我先做一下自我介绍,我现在是美国富国银行资深安全工程师。我更多的以我 OWASP的身份跟大家讲这个OWASP2010,我在美国有10年,我今天看到我的师姐和师弟,我很高兴大家有兴趣,这是我的兴趣之一。

 

在美国看到应用安全的发展和成熟,OWASP只是一个小小的安全主题。从03年OWASP成立了,从06年转到董事会主席手下,在他和董事会的 共同努力下,OWASP迅速发展壮大。我自己作为应用安全分析的工程师和专家,我认为他们做的事情非常有益,中国是迅速发展,等我们回来的时候,现在中国 互联网已经发展得很好,我就觉得将来和现在,我们OWASP做了很多工作,我们可以把它带回来到中国让中国互相了解。我们中国是很厉害的,大家做了很多研 究工作,在国际上可能看不到这样的成果,就算2007年的时候我回来看看大家有没有对OWASP感兴趣,当时大陆OWASP峰会已经成立了我不知道,中国 OWASP已经开了两次会议,可是我们在国外都不知道。他们就说OWASP已经有峰会了,你们跟他们联系,然后我们发现有峰会, 而且有很多会议员,大家做了很多工作,我不知道是谁翻译的,但是这是很大的工程,然后也开了两次会议,有很多人参加,同时也做了很多措施,大家都有很好的 idea,所以我就这次合作,希望能够在中国开这次峰会,在大家的一起努力下,我很高兴在中国举行,然后大家能在一起讨论。其中另外有一个就是我另一个身 份是OWASP项目的领导人,等一下我会有具体的介绍。

 

我先介绍一下关于OWASP,现在你们可能已经听到OWASP的介绍,每个人的理解可能都不同,这个OWASP它其实是一个OWASP的简称, 它不利于任何公司和任何专业公司的非盈利组织,这个项目是由全球众多的资源者一起参加的,所有参加的人都是集训者。我知道OWASP有三个成员,两个是秘 书,所有人都是拿出自己的业务时间开发了这么多文档,给大家免费地使用,就是希望吸引更多地人提醒对应用安全的注意,希望大家出更多的想法和创意来共同发 展,这个文档中国的意思是中文风险,可以说是OWASP最重要的文档之一,它的目的就是致力于提高大家对于应用安全风险重要性的认知,十个最重要的应用安 全的漏洞,每一年根据各个组织提供的数据进行更新,首先希望能把大家的漏洞解决掉,它有安全性能。

 

我们在这个过程中成立了OWASP,因为我来自中国,我对安全很感兴趣,我看OWASP做了这么多工作,我觉得拿到中国来对大家很有益,所以我 们成立了OWASP,中文项目,它致力于将OWASP的所有资源都拿出来,包括组织这样的峰会,或者介绍大家参加项目,在我和OWASP大陆分会交流的过 程中,我感觉大家对这种程序不怎么了解,任何人都可以来跟OWASP的任何一个人包括主席的人,我想要做这件事,你们有没有工作给我做,或者我有这么多时 间有没有事情可以让我帮忙,大家都非常高兴,包括主持这样的峰会,我们要扩大OWASP在中国的影响,同时竖立中国应用安全领域的发展。

 

我们目前主要的工作,现在我们的主要成员除了我一个,还有高文,它是美国长岛峰会的主席,目前我们就翻译OWASP2010年的最新版本,最后 做了redure(音译)给大家,我不知道在座的各位有没有看见过?看见过举手?这说明我们工作没有白做我们当时是三个人翻译,感觉没有任何人给我们反 馈,我就以为中国没有应用感兴趣的OWASP成员,但是后来才发现我们也成立了峰会。我们为什么成立中国项目,然后帮助中国大陆峰会在中国成立OWASP 的交流,OWASP是开放的,我们希望所有人参与,刚才有师弟来跟我说他愿意参加了,我们非常需要帮助,我们需要很多很多资源。

 

现在就步入整体,2010年的时代风险。我想知道大家对于2010的技术了解多少,我需不需要讲得很细,大家很需要是吧,我尽量从简短地给各个 漏洞讲一下,新的我就具体讲一下,也有英文的文档,因为它有很多细节在里面。从2003年由OWASP新的董事会主席编写的文档,2007年也做了,我没 有反馈,我以为大家都没有兴趣,2007年有了重大的改变,这一次我们知道大陆有峰会了,所以我们就翻译成中文了。

 

这次的重大变化就是2010年的风险,当时应用安全刚刚起步,它需要有一个文档像宣传一样的作用,在原来的文档中现在也是这样,它既包含漏洞, 也包含安全控制的名称,当时我记得好像是top10很多东西包括我自己说这根本就不对,有很多是攻击方法,身份认证又是安全控制。比如说,不安全的存储数 据又会有风险,不同的东西混在一起大家觉得很痛苦。后来觉得这么多年的发展以后,大家认为我们不应该看中他讨论的是一种什么方法来分类,后面的想法就是我 们列出十大最重要的风险,它有可能是用名字来命名的,有可能是用风险的名字来命名的,有可能是漏洞来命名的,名字是大家使用的习惯来命名的,在新的改进 中,我们详细地讨论一个风险是有那些因素组成的,就包括了很多因素,我们仔细地讨论了这些因素的关系,使得大家不会纠结于名称,我们把这几个不同的风险结 合起来,弄出一个评级的方法,使用这样的方法来进行排列。

 

这次的top10增加了两个风险就是安全配制错误和未验证项目的引发。删除了恶意文件的信息和不恰当的处理。这样的方法表现了我们风险评级方 法,因为比如安全配制错误,风险不是很大,也许造成的业务影响和技术影响不是很大,所以它很普遍,它加权的等级就很高,我们把top10重新排列了一下, 还有一个很重要的改变对大家非常有作用,每一个漏洞和风险除了分析他的原因是什么,这些资源包括文档还有项目,通过top10引进的就是OWASP,我就 直接翻译成中文了,有可能并不是很恰当,就是预防风险的这种作弊的表格,就是它直接地把很多链接告诉大家,大家马上可以知道哪些东西我们可以解决,到目前 top10已经有6个这样的需求,新的需求在开发过程中,这样的工作我们需要很多志愿者来做,如果你对某一个风险或漏洞特别了解的话,你就可以加入到这个 工作里面讨论。这是对07年和10年的变化,你可以看到重要的漏洞总是在列表里,07年是排名第二,现在已经到第一了,脚本是下降了,它为什么下降就是因 为我们长期把它列在第一名,OWASP10已经被很多组织作为参考文件,OWASP脚本长期都是处于第一名,大家都把这个修掉,否则很难看。像我们银行一 定要找到这个,因此大家对风险已经非常了解了,一个公司不应该再出现这样的漏洞,所以这就是为什么他这一次在列表中下降。

 

重要的漏洞都继续保留了,新的漏洞请求伪造和不安全的,这不是新的,就是保持同样的水平,我觉得请求伪造可能大家了解得不是很多,到后面我可以讲一下,其它的大家可能都挺熟悉的。

 

现在我们就说OWASPtop10风险评级方法,一个风险大家会这个东西很容易被攻击,这个漏洞我们一旦能够成功的话,可以把整个数据库修改这 个东西很重要,我自己的经验,我们当时说应用安全分析,给客户做分析的时候,我们根据自己的直觉给出一个评级,但是现在的方法已经越来越吻合大家的需求 了,比如说SQ注入有可能把你的成本都用掉,也可能根本进入不了代码这就减少了它的可能性,这种可能性没害,所以我们要综合考虑造成一个漏洞或者一个风险 的各种因素,我们认为OWASP的危险是危携带,就是携带危险的人,还有攻击向量,实际上就是攻击的方法,容不容易被攻击,比如说密码一个很弱的密码,有 可能要攻击的话你是密码学的专家,OWASP就比较低,这样都要考虑在里面。

 

然后还有安全的漏洞,安全漏洞里面这个因素测量的就是一个漏洞存在的普遍性,这种漏洞很常见,比如我刚刚说的不安全的加密,有可能它是不常见 的。脚本攻击的话有可能在你的网站的每一个网页都存在,这要考虑漏洞存在的普遍性,安全控制就是说,意思就是用于防御漏洞风险的方法,然后完了另一个因素 就是寄宿影响和业务影响,攻击本身能造成的危险,我们知道他把整个数据库都毁掉,但是你要考虑到数据库里存的东西是什么,如果只是一些公开的数据,或者网 页,那它的业务应该很是低的,综合这几个因素,攻击向量就是攻击这种漏洞的难度,还有漏洞存在的普遍性。漏洞的可检测性就是你通过工具还是代码发现漏洞的 可能性是容易还是难,你的漏洞容不容易被黑客发现,这三个供给向量漏洞检测性,我们把这三个加在一起取一个平均值,然后再乘以它的影响。后面的业务影响就 算它的影响,这两个乘起来,我觉得大家看更多的是用表来画上去,我们用平均值,前面可能性因素的平均值,乘以后面继续影响的数值就等于加权的风险值。

 

下面有很多例子。因为有一些与会者听不懂中文的,为了他们听的方便,我就只翻了标题,我觉得大家对这些都比较了解,对技术本身都比较了解,所以我就大概简略地介绍一下漏洞是什么样的方法,什么样的格式,如果大家有什么问题可以举手,我们可以详细地讲。

 

现在排在第一位的是注入漏洞,实际上没有被验证的用户直接被用进去。任何检测器都可以,它这个注入为什么,我们把它叫注入,实际上最早 top10出来的时候,其实本质上这两个是同样的一个,因为同样都是把不安全的数据放在检测器里面,我们这次把它作为注入漏洞,就是把没有验证的数据放在 监测器误解这个数据是命名的一部分。这上面就写了这些例子都可以。SQ injection的影响是很严重的,一旦发现一个可以被利用的漏洞,你的数据库很危险,把你整个数据库都修改了,这里有一个SQ的大概的演示,这个是一 个简单的网页,这里的程序就把用户名和一个SQL后台的语句里面调出产品和帐号信息,没有对输入值进行验证,所以大家就知道前面有一个single(英) 它所有的程序就会调出来。如何避免这些漏洞呢,SQ的注入漏洞,如果你使用绑定电量和存储的过程,这样就能够完全地防止SQ injection,我觉得这样做代码很容易也很难,如果他们使用动态的可以用,有的时候开发的人不愿意这样做,长期地漏洞在那个程序里面,新程序大家有 很多正确的方法来建立语句,就不会有这样的文化。如果修改语句很困难也可以进行过滤,过滤都用白列表过滤。

 

通过在不同的HTML,这在文档里有很多的链接。失效认证有简单地演示,用户输入密码以后,他的口令直接放在UIL里面,这个口令就会通过各种 途径暴露,只要这个口令在有效的期间,黑客就可以使用它,这就是它为什么很重要,把它设定在一个对你的系统安全的时间里面,不直接的就指的是程序内部有自 己的编码,应用程序直接用内部编码让你引用电量,他也不做任何过滤,在这样的情况下,黑客就可以篡改引用的数字,比如这里就有一个例子,它可以访问 6065,它就可以改成6066访问。如果可能的话,完全可能对象引用。输入数据库里面对每个用户你应该编码1、2、3到10,再转化成内部的对象值,这 样的情况下,无论工具如何修改,它就只可以访问他可以访问的那些对象,最重要的无论在任何情况都实现叫做访问控制。

 

跨站请求伪造,这个是一个比较新的风险,07年发现,这个就是跨站请求伪造,比如说浏览器缺少同一个URL的情况下,这时候攻击者会给你发一个 链接,大家现在都用messgae,会传过去,然后显示来自你的,执行链接里面带有的请求,任何人都知道他是一个转帐的命令,如果不愿意这个用户转帐,别 人就会一点转帐,那边就会转你的帐,但是这根本不是你的意图。以前的时候他就有这个问题,他的洛克令也不确认,他一点就会丢失掉。很简单,会避免很大的风 险。跨站请求伪造很被大家重视,它推荐的方法就是在你的请求令里面,发送给用户的表格里面或链接里面要添加一个和用户有关的随机的,在这样的情况下,黑客 不知道这是什么,他发给你的链接你一点,网站一看没有这个,他不会接受你的请求。

 

安全配置错误是一种风险,它都会有缺少密码、缺少口令这样的东西。所以说非常的普遍,有可能风险不是很大,但是他在我们这个列表,如何避免你一定要确信你所有的设置都是安全的,我具体就不讲了。

 

不安全的加密存储,就是你数据很危险,很敏感的数据存储的时候没有给很合理地保护,整个数据库里面没有被加密,和你的保护放在一起,有时候我们 看到那个密码放在代码里,这样密码很容易暴露给别人,那个很不安全。没有限制的URL访问,他们就在显示每个用户访问哪些功能,假如我是一个用户我就不能 看到管理者,它不显示,你一点链接我们就看到了,这个是风险代表的漏洞。任何一个请求你都应该验证用户是不是都可以访问,叫一次性认证的工具,集中存储用 户身份进行比较。还有一种常见的漏洞就是登陆的时候是SS,可是一旦登陆以后就不适用了,这只保护了密码,可是绘画密钥还是被暴露了,重要的网站一定要使 用SS网,还有的网站把这些混在一起了,有一些很重要的可以做转帐的,然后它就混在一起,也没有办绘画灵牌,你们如果感兴趣可以讨论一下这样的问题。

 

大家在应用程序里面经常看到大家通过服务器的转发来转到另一个目标,通过用户被控制着输入值来决定,如果这个可以修改的,又没有经过用户验证,它就可以把它输入转化到没有权利访问的页面上。如何避免未验证的重定向和转发,使用身份访问控制。

 

如何处理这些OWASP这些问题。第一你要控制这些代码,OWASP有很多资源,有偏成指南,这些都是可以帮助你们如何兼顾的代码和安全的代 码,现在很多程序代码已经写好了,还有一个重要的环节就是要对你的程序进行检测,包括代码检测漏洞扫描各种各样的方法。这里有有OWASP的,大家感兴趣 的可以看。还有OWASP(ESAPI),企业级的用户帮助企业来实现这样的一个统一定义的安全的API,我们这样做,那样做没有统一的一种API,因为 OWASP对于安全理解很深,它就开发了这样一个API,讲得很通的常见的安全控制的方法和机制写成了API,它有历程,实现的历程大家可以直接拿代码 用。

 

最后我谈一些业务安全,大家对业务安全很感兴趣。业务安全现在来看已经不是一种选择,现在互联网应用很普遍,不是选择,是必须的,解决这样的问 题不仅要了解技术这么简单,你需要很严格定义而且被很好执行的安全过程,同时技术并不缺少比如要各种工具、各样的文档,然后一个企业想要开始解决应用安全 问题,一定要想办法定义应用安全计划,这个需要各个部门协作沟通,它的目的是要解决应用安全问题在企业里面的可见度,这里面提到了几个不同的阶段该做什么 事情,我大概就讲在一个银行里面业务安全的过程,OWASP还有一个特点,我想强调一点,它讨论的是普通情况下大部分应用程序的风险,并不能代表你们企业 公司的任何风险,你们才对你们的应用程序和你们的数据和你们的业务最了解,你是不可能找到一个灵丹妙药一次就解决,要对这些漏洞很了解,通过对自己公司的 了解改进,你需要安全部门和各个部门的职权,很重要的是定义整个企业的通用标准,你不可能说我一个密码用6位,另一个密码用8位,这容易出现很多漏洞。你 要建立一种程序风险评级的方法,包括对你交易的风险进行分级,同样建立相应的部门和培训,我大概就讲这么多。