授权,是信息安全中极其重要的一部分。没有完善的安全的授权机制,安全根本无法谈起。今天就把总结到的授权知识做个小总结。
授权原则
授权的金言就一句:“最小权限原则”。这句多么有效呢?比如前些天微盟的删库事件,如果犯罪者没有掌握过高过多的数据库操作权限,就不可能差点以一己之力湮灭了一个庞大企业。而对于最小权限原则的实现方式,则有以下几类:
(1)基于属性的授权
在规则明确的情况下,根据用户是否具有某一属性/通过某一规则,来决定是否授予权限。比如在qq空间里,我们可以编辑和删除自己的说说,但是不能如此操作好友的说说,而只能点赞、转发、屏蔽等。
用户携带的属性包括主体属性、资源属性、环境属性。主体属性即是描述主体的身份、角色、能力、年龄、IP等等;资源属性描述主体可以操纵的资源如数据、服务、系统等;环境属性则是描述时间、日期、安全级别、系统状态等与主体无关的属性。
ABAC,基于属性的访问控制机制,即是基于属性的授权的代表产物。
该类授权方式的弊端,即在因各主体客体关系不明确等原因造成规则不明确时,往往难以执行ABAC这样的访问控制机制。很早以前使用ABAC的Kubernetes 也早已抛弃了它。
(2)基于角色的授权
简言之,不同级别角色对应不同权限。如最近评估的某系统,根据公司职工架构,进行授予权限,形成一种“超级管理员-多权限管理员-单个权限管理员-普通用户-无身份”的角色框架。用户在系统中被授予的权限,全都凭借“角色”来决定。
(3)基于任务的授权:临时授权机制
小编的理解,这是在短期任务中临时授予超出既定赋予权限的规则。
(4)基于访问控制表(ACL)的授权
如Linux中用户对文件的操作权限,每个用户/用户组的操作权限都在ACL表中被指定。
授权不严带来的风险
(1)未授权访问/无授权机制
(2)横向越权:如用户在某系统中可以查看/操作同等身份用户的私人隐藏信息
(3)纵向越权:如普通用户查看/操作高权限用户才可以查看/操作的资源
(4)诱导越权:如某年支付宝新年查看总结时的弱化授权选择框的颜色和位置,并默认勾选,从法律与合规上来说,是不允许的
(5)职责未分离:导致用户对数据可以进行“一条龙”操作,也必须通过管理手段进行控制和避免。
总结今日对越权情况的安全评估
某资源分配系统
A)首先,进行横向越权尝试,在我查看个人某资源的审核表时,捕捉到一个GET请求:http://192.168.**.**:8**8/****/newApply/1824,对最后的id进行替换,如改成1823,查看响应:
尝试越权查看,不允许查看的资源返回结果“资源不存在”。
B)纵向越权,尝试使用普通用户发送管理员进行审核的请求报文,和查看管理员才有权限查看的界面:
error:"Unauthenticated."
经过与该系统开发的交流,此系统使用基于角色的授权机制,角色是根据其公司OA系统中公司员工在组织架构中的身份决定的,严格进行每个用户角色与可访问资源的校验和控制,因而未出现授权方面的漏洞。
某B2B系统
该系统主要有两大角色:供应商与采购商。主要进行采购商和采购商、供应商和供应商、采购商之间的越权尝试。
根据测试,用户的订单与用户身份严格进行绑定和校验,会话等信息也是如此。供应商可查看属于自己客户的个人资料,这部分授权机制属于基于任务的授权。
关于前台用户与后台管理员之间的交互,有一项新建合同申请。后台查看,合同的审批流程,每一步指定了具体管理员id。经过验证,其他管理员可查看流程中每一步的申请详情,但是不能进行操作。此时就出现了横向越权查看数据的漏洞。
其他系统
今天主要还对某锁平台进行安全评估,资源id均与用户id进行绑定,从而进行授权。
好啦,今天就分享到这儿了,期待明天的努力和成长。
原文始发于微信公众号(火枪手联盟安全团队):授权机制的设计与实现
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论