OWASP 2010胡振宇:基于语义的WEB访问安全检测

安全
胡振宇:基于语义的WEB访问安全检测。在这里面主要是技术知识。我们都在做技术方面的工作,今天我就和大家交流纯技术方面的问题。

【51CTO.com 独家报道】OWASP 2010中国峰会已经圆满结束了。那么在这个大会上,各个专家都做了精彩绝伦的演讲。现在让我们回顾一下胡振宇关于《基于语义的WEB访问安全检测》的相关报道吧。更多内容请关注:51CTO OWASP 2010中国峰会专题报道

Validating web accessing with sematic constraints

胡振宇:基于语义的WEB访问安全检测。在这里面主要是技术知识。我们都在做技术方面的工作,今天我就和大家交流纯技术方面的问题。

我今天给大家分享一下,大概分享下列几个内容,第一个是简单地一些攻击和防范措施。第二个提一些思路,怎么从语义方面处理一些外部安全问题,再做一些语义检测方面的算法,最后谈谈我们未来的发展。

我们先来简要地回顾一下外部应用的体系结构,这些都是很清楚的,一般是分三个方面的架构,一个是浏览器,一个是WEB程序,还有一个加上后台服务器,访问是通过访问器再到后台的服务器再返回来以示范的形式展现出来。

典型的攻击刚才第一个演讲人讲的,在澳大利亚第一位。现在这样一个,在这边有两个,一个是名字的,一个是类型的。它的意思就是要查询一个数据库里面的信用卡的卡号。

那么对于一个合法的用户来说,我们一般的情况下,依照页面的要求来输,比如在名词里面输1,在卡的类型里面输2就行了,就出查出一个叫John人的帐号。所有的信用卡后都会查出来,最后一句尽管这样解释,这样一般关健词,后面的外语句,对于这些典型的攻击我们有一些措施。一个方法就是过滤,把攻击行为的关健词提出来或者过滤较,把尖括号或者标签,或者关掉,这是一个措施。

另外一个措施是转译,把典型的关键的字符转换掉,替换。第三就是通过编码,把原字符进行编码转换。这里面具体的意思我们不做解释,因为时间有限。这些通常都出现过。出了哪些模式匹配以后,通过更严格的通过合法的检查用户是否合法。大家看用户输入的数据体现的位置,对于恶意的攻击,他如果输入了恶意的代码这样的一个区域以后,产生的语法是这样的。这个语法数(音译)和原始的差别很大了,你会发现不同构造,这是一个比较复杂的方法。

用语法检查,这是一个简单的页面,比如你查《红楼梦》,这个书的定价是50块钱,左边是页面的原代码,这里面有三个欲,这个隐藏欲输入的价钱,真正的页面显示的50是后面的字符显示的文本字符,当你输入数量以后,网站根据你的数量自动乘以50,真正的语法结构你要输入一个2,《红楼梦》输入以后出现一个2。一个恶意的攻击者可能会篡改,你察看原代码就可以把这个网页篡改了,如果把隐藏篡改掉了,把50改成5,那这个最后语句就变了,我们看,这里不管是最后隐藏的欲是5还是50,那么生成的语法结构是一样的,但是生成的语义是不一样的。买了两本书花了100块钱,篡改了以后买了两本书花了10块钱,语义不一样,单独从语法来看不能解决问题。

现在呢,假如还是第一个问题,它的信用卡卡号的问题,在用户名这里输入John,但是他现在不输入2,输入1+1,这样提交以后会产生什么样的结果呢?提交以后解释出来的是这样的,大家看看后面多了一点,这个1+1提价到服务器有一个解释,会自动算成二,从语法术的解析来看,这个语法术的结构也变化了。但是语义没有变化。像刚开始那个女士讲的,它是攻击改变了原来语法器的意思,改了语义的结构。

所以说,我们就提出最终要通过语意安全,要接受什么样的表达式我这个程序才能运行,但是语法关注这个程序怎么运行,所以我们认为安全问题根本上是语义的问题。如果你符合这个语义了,语义是安全的,否则就是不安全的。用户输入那些词,经过一个变换,变换成可以被后台的一些应用来接受的一些表达式,比方说,数据库接受了语句,经过一个应用服务其把它变换一下。

那么我们说语义安全就是看经过应用程序变换以后的表达式它是不是符合应用开发人员最终设计的那个语意,如果符合了就语义安全了,否则就不安全。我们还是根据最根本的和程序到底做什么,结果来判断它的行为。我们怎么做语义方面的东西呢,我们从这个结果知道,一个程序的语义,首先形成完整的语义必须语法合法,我们就可以通过程序的原理定义一个语法结构,一旦程序他总的来说表达式,这个程序它的语意最终是由语法结构来共同描述和形成的,我们就可以像描述语法结构那样把语义描述出来。我们要考察这个程序的语义,我们就可以通过来约束语法术里的语义,更具体地说一点,我们需要把那些需要用户复制的可变的借鉴,把他们的语意约束,整个程序的语意就被控制。

现在我们看,我们把这样说了以后,把语法术里面用语义说出来,就变成了语义模板,我们在这边把他们的语义在这个东西出现了,一个是涨停的数据,就可以限定它的语义。你用整合的约束的话,它的攻击就不能够得逞。比如刚才那个定单的例子说,我对里面隐藏的例子可以进行一个约束,限价是50,你不能改,你改了就不行。

这个等于每一个用户的请求,最后转化成请求,我们通过把用户的请求变规范,从这里面来点击看看他是不是符合,我们怎么做这个事情呢,我们可以通过下面几个办法第一个步骤,解析语法。语法出来把它最新的砍掉,把语义数进行对比,这就可以比他们是否可以同构,用户完全可以被限定在语义里面,否则就出现语义偏差。如果真正从国际后台做到解析语法可能比较复杂,我们可以通过前台的输入来进行一些校验,形成用户输入的模板。这里面的页面我们可以限定他的类型,他的值是《红楼梦》不允许你修改,特别是最下面,用户是隐藏看不见可能没办法操作,他通过修改原代码的分析,这里面也要写校验,特别它限定的是50,这个就不能改,这个就可以防止页面篡改的东西。简单地说各种攻击都可以防,表面修改或者pass攻击,我们刚才说了,城市的攻击是最终的语义的问题,这个能解决很多很多问题吧。

目前来说,我们要做这个工作,只是做了一些简单的不完善的测试,还遇到了一些问题,这个问题遇到了以下几个方面,一个是怎么建立语义模板,你可以经过审查原代码解决,当然这是最好的办法。当然你遇到比较大的这是不太理想的,你可以开发自动化,自动建立,自动建立到底建立得好与坏这个不能保证,我们提倡两个码结合,可以开发一些工具,最后去校验。

我们下一步的工作把我们的技术进行更深入的评估,再发布,好了,我给大家交流的就是这些,谢谢大家。

【编辑推荐】

  1. OWASP 2010范渊:中国WEB安全5年发展历程及趋势与挑战
  2. OWASP 2010中国峰会——OWASP中国主席Tom Brennan精彩致辞
  3. OWASP 2010中国峰会 现场演讲嘉宾介绍
  4. OWASP 2010中国峰会现场图文集锦
责任编辑:佟健 来源: 51CTO
相关推荐

2014-06-10 16:51:44

云数据应用访问安全控制

2016-07-12 10:43:39

云计算云安全

2016-03-18 10:08:48

2009-09-02 21:52:00

2012-05-16 10:30:11

远程访问安全策略

2010-08-23 09:06:14

路由器配置

2020-09-27 18:38:18

在家办公远程访问安全网络安全

2021-01-10 08:49:04

云访问安全供应商CASB

2020-04-01 10:07:27

云访问安全代理CASB数据安全

2016-03-02 11:26:46

2017-07-06 16:44:22

2021-04-14 10:58:54

OWASP Top 1web安全身份验证

2022-09-02 15:07:57

零信任Kubernetes集群

2016-10-17 16:26:42

2014-06-10 09:07:03

2010-10-22 16:12:42

2009-07-27 15:19:54

2017-02-16 08:25:35

2010-10-25 17:22:52

2024-05-31 13:21:06

云安全云访问安全代理
点赞
收藏

51CTO技术栈公众号