在OWASP Top 10中,有一类漏洞的大类,称之为越权访问(Broken Access Control, 简称BAC)。顾名思义,这类漏洞是指应用在检查授权(Authorization)时存在纰漏,使得攻击者可以利用一些方式绕过权限检查,访问或者操作到原本无权访问的代码。在实际的代码安全审查中,这类漏洞往往很难通过工具进行自动化检测,因此在实际应用中危害很大。经验证明,解决这类问题,往往需要从系统设计上着手。
猛买网张磊:基于又拍云存储解决静态文件存储问题
我们以一个实际存在过的BAC漏洞为例,来看看这种问题发生的根源及解决办法是什么。
国内互联网漏洞报告平台乌云在去年年底报告了一个存在于国内某知名电子商务网站的BAC漏洞wooyun-2011-03271(http://www.wooyun.org/bugs/wooyun-2011-03271)。该网站存在一个公开的HTTP接口myaddress.aspx。此接口根据接收的参数addressid来返回json格式的消费者收货地址数据,然后在前端页面上由JS解析进行展示。这是一个很多同类网站都会用到的一个普通功能。
在乌云的漏洞报告中,我们看到,白帽子利用传入参数的可猜测性(使用整形数据做记录id),直接变更输入的addressid参数,就可以拿到他人隐私信息。这是一个典型的BAC问题。修复也非常简单,只要在服务端对请求的数据和当前用户身份做一个校验检查即可。但是在这类应用中,诸如此类的数据如此之多,从地址数据,到订单信息、支付信息等等,无一不需要小心处理。当业务复杂到一定程度之后,没有谁能够保证这些数据的访问都经过了严格的权限检查。所以出现BAC问题,似乎是难以避免的。
让我们从设计的角度重温一下这个用例中的一些普遍特征。
对于收货地址而言,在这类B2C商务平台上应该存在几类不同的访问场景:
对于平台运营商来说,需要有权限对这些数据进行读取操作。
对于在平台上开展销售的商家来说,一旦与该用户产生了直接的交易,那么也应该对这些数据有权进行操作(实际上地址数据会在产生订单时发生克隆,我们简化这个过程,视之为引用关系)。
对于消费者本身,应该有权对这些数据进行操作。
那么最基本的,针对这些场景,我们需要对目标数据的访问进行不同逻辑的权限检查。
如果是平台运营系统请求数据,那么不需要进行权限校验。
如果是平台商家用户请求数据,那么应该检查该数据的拥有者,即消费者,是否授权该商家访问其地址信息(判断依据为检查是否产生交易) 。
对于消费者本身,需要检查目标数据的拥有者与请求方是否同一用户。
这三类场景需要的检查逻辑各不相同,那么在后端,我们需要什么样的API或者服务(Service)来为前端的这三种场景提供数据呢?
通常的系统中都会存在类似GetAddressById这样的API或者服务,来为前端系统服务。那么接下来前端系统需要根据自身的场景,来实现各自的校验逻辑。但是,这样合理吗?由于这些API的粒度是如此之小,任何一个开发人员,在实现任何一个业务场景时都可能会使用到。这些使用到的地方,如何保证都经过严格的权限检查呢?
可能AOP是一种解决问题的方式,但是实际实现中,你会发现,很难针对不同的使用场景而提供一致的权限校验方式。姑且不论性能高低,仅就用户身份的确认这一点,就很难在统一的代码中去适应不同的场景。
那么我们就需要重新来审视GetAddressById这种API了。对于平台运营商系统的使用场景,这个API没有任何问题。但是对于平台商家后台和消费者系统,是否需要类似于GetAddressByIdAndMerchantId和GetMyAddressById这种API呢?
仅仅增加了不同粒度的后端API,这并不能保证从此可以高枕无忧了。对前端开发者来说,如果这3个API都可见可用,那么很难保证不会被使用在不恰当的场景中。
一个在实际应用中被采用的解决方案是,把这3个API封装到不同的服务(Service)或者包(Package)中,并在不同的项目中设置仅对自己的场景可见。这样在每个应用中,也只能使用符合自己的业务场景安全要求的后端API/Service。
现实中的情况可能复杂很多,贯穿业务系统前后端的ACL(访问控制列表)在实现上会非常繁琐而且成本较高,也可能并不适用于每个应用场景。但是分清楚数据的安全域划分,根据不同的场景设计符合要求的后端API/Service,同时对后端API/Service根据不同的安全域进行隔离,这是非常实用的一种思路。
好的后端API/Service设计,会让开发者即使并不清楚相关的安全考量和安全开发知识,依然能够开发出符合授权标准的应用。这也是安全架构的重要组成部分。
转自:领测软件测试网[http://www.ltesting.net]
原文链接:http://www.ltesting.net/ceshi/ceshijishu/aqcs/2012/0427/204769.html
分享到:
相关推荐
页面越权越权访问是指未经授权的用户访问了系统管理菜单,导致数据安全性受到极大的威胁。为了解决这个问题,每家企业都有其方法来保证企业内部数据的安全性。 一、页面越权越权访问的概念 页面越权越权访问是指...
- **优点**:能够精确控制每个用户对数据的访问权限,有效防止越权访问。 - **缺点**:每次请求都需要进行权限验证,可能会增加服务器负载;此外,还需要考虑如何高效地进行权限查询,以避免影响用户体验。 #### 四...
### 用户登录过滤与URL越权访问控制 #### 一、概述 在现代Web应用程序中,安全性和用户体验至关重要。为了确保用户数据的安全以及提供一个良好的用户体验环境,开发人员常常需要实现一系列的安全措施。其中,...
越权访问漏洞的成因主要是因为开发人员在对数据进行增、删、改、查询时对客户端请求的数据过分相信而遗漏了权限的判定,一旦权限验证不充分,就易致越权漏洞。通常情况下,一个 Web 程序功能流程是登录 - 提交请求 -...
在信息化社会,数据安全和用户隐私保护变得至关重要,而越权操作往往是导致这些安全问题的源头之一。越权渗透测试的目标是模拟恶意攻击者的行为,发现并修复可能导致未经授权访问、修改或删除敏感数据的漏洞。 在...
- **水平越权**(HPE):同一权限等级的用户之间可以互相访问对方的数据或功能。 - **垂直越权**(VPE):较低权限等级的用户可以访问较高权限等级的功能或数据。 **题目解析**:根据题目描述,图1中的越权行为属于...
4. **会话管理问题**:如果会话管理机制存在漏洞,攻击者可能获取或模仿其他用户的会话,从而越权访问。 5. **不安全的后台接口**:开发者可能未对后台管理接口进行严格的权限控制,使得攻击者能够通过直接访问这些...
越权访问是指攻击者通过某种方式获取了不应该拥有的权限,例如访问其他用户的私有数据。在Web应用中,通常需要对用户身份进行验证和授权,但若存在漏洞,攻击者可能通过篡改请求参数或利用其他漏洞实现越权。在题目...
数据安全管理工具需求描述是指银行业对数据安全的需求描述,旨在保护个人客户数据的安全,防止数据泄露和越权访问。该需求描述了银行业对数据安全的需求,包括智能化打标签、对隐私数据访问行为的监控、预警及追溯等...
水平越权是指在同一个权限级别内的用户能够访问或操作其他同级用户的资源,这通常源于系统权限控制机制的缺陷。在这个靶场中,用户可以模拟实际环境,了解并学习如何检测和防范此类安全问题。 靶场下载后,需要将其...
然而,如果系统仅验证了用户角色而忽视了数据的所有者,攻击者(如用户A)有可能通过某种方式访问到其他用户(如用户B)的数据,这便是水平越权访问。这种情况下,攻击者可以绕过应有的访问控制,造成敏感信息泄露。...
这种漏洞通常发生在服务器端,由于程序设计不当,使得用户能够执行他们原本不应该具备的操作,比如访问、修改其他用户的敏感数据。以下将详细解释越权漏洞的原理、类型以及防范措施。 越权漏洞主要分为水平越权和...
例如,如果用户A和用户B都有查看自己订单的权限,但系统没有区分每个用户的订单ID,那么用户A可能会通过篡改URL或POST数据来查看用户B的订单,这就构成了水平越权访问。 2. **GET和POST方法**:HTTP协议定义了两种...
这种漏洞允许未经授权的用户访问或操作他们本不应该能够触及的数据或功能,通常表现为水平越权和垂直越权。 水平越权漏洞主要发生在同一权限等级的用户之间。当系统没有正确地限制用户只能访问自己的数据时,一个...
页面越权允许未经授权的用户访问或操作他们本不应接触的功能或数据,从而对系统的完整性和用户隐私构成威胁。下面我们将详细探讨页面越权的定义、类型、产生的原因以及防范措施。 1. **什么是页面越权** 页面越权...
访问控制技术可以限制用户的访问权限,防止越权访问和数据泄露。数据备份技术可以保证数据在遭受攻击或损坏后能够迅速恢复。 然而,现有的技术方案仍存在一些不足之处,如加密技术的密钥管理问题、访问控制技术的...
3. **会话管理问题**:如果会话管理机制设计不当,如会话ID预测、会话固定攻击等,用户可能利用这些漏洞获取他人会话,从而越权访问。 4. **API安全**:在线教育系统往往有开放的API接口供第三方应用调用,若API...