安全技术研究BrokenAuthorization(OWASPTop10)
介绍
Broken Authorization(也称为破坏访问控制或特权升级)是由于用于指定用户访问特权的授权检查的无效而产生的一系列缺陷的简称。
根据用户指定的角色和相应的特权,在经过设计和实现的授权框架中允许或拒绝不同的用户访问各种内容和功能。例如,在web应用程序中,授权主要用于身份验证和会话管理。然而,跨动态系统设计授权就比较复杂了,并且可能会随着应用程序的发展而导致各系统的机制不一致:身份验证库和协议发生变化、用户角色发生变化、新用户的注册、老用户注销,用户权限删除等等。访问控制设计不仅仅是由技术决定的,而是由人决定的,因此发生错误的可能性很高,而且一直存在。
这种性质的漏洞可能会影响很多现有的web应用程序、数据库、操作系统和其他依赖于授权控制的技术基础设施中的各类软件。
影响及危害
攻击成功后黑客可能能够访问未经授权的内容,更改或删除内容,执行恶意代码,甚至完全控制管理站点。一旦遭受到这种程度的入侵,攻击的损失往往取决于被冒充的受害者账号赋予的特权范围有多大。
之前有一家名为CloudPets的玩具制造公司,他们发生的信息泄露事件就是由于上述人的为错误造成的。在这案例中,没有对授权进行控制导致了儿童语音信息的泄露,而且随后发生还发生勒索时间,这些语音信息是通过云记录的,并直接被存储在云中。
场景
从用户的角度来看,有两大类授权控件需要考虑: 横向授权控件 垂直授权控件
横向授权控件绕过
横向授权控制绕过描述了无特权用户访问拥有同等权限的其他用户帐户的行为。
例如,想象一个应用程序在方法调用下游中接受未经验证的数据以检索帐户信息。攻击者可以很容易地修改HTTP Request中的accountId参数,用一个甚至多个其他用户的帐户检索数据。
应用程序在方法调用下游中使用未经验证的数据来检索帐户信息: http://vulnerablexxx.com/user/account?accountId=7800001 http://vulnerablexxx.com/user/account?accountId=7800002 etc.
另外一个场景是不安全的直接对象引用(IDOR),指的是使用用户提供的输入直接访问对象。
垂直授权控件绕过
垂直授权控制绕过描述用户提权访问不被允许的数据或应用。也就是说,具有特定级别特权的用户越权访问了需要拥有更高级别访问权限(如管理级别访问权限)才能访问的数据或应用。
在本例中,攻击者作为一个普通用户却浏览到一个管理URL,在这里需要管理员权限才能访问管理页面。 http://vulnerablexxx.com/user/account http://vulnerablexxx.com/admin/panel
如果应用程序不检查会话用户的角色是否与访问资源所需的角色匹配,那么没有管理特权的用户将能够通过知道/猜测目标URL并浏览到它来访问页面。
如何防护
开发人员可以采取许多基本步骤来防止破坏授权控制攻击,首先对应用程序的访问控制需求进行评估,然后根据评估结果制定适当的安全策略。这应该包括一个访问控制矩阵,明确哪些类型的用户可以访问系统,以及这些用户可以或不可以做什么。使用基于角色的访问控制(RBAC)在适当的边界上强制执行。
对于web应用程序,确保在服务器端每个页面和API端点上正确执行访问控制机制。用户不应该通过请求直接访问页面或对象来访问任何未经授权的功能或信息。
代码示例(JAVA)
例如,应用程序在方法调用下游中使用未经验证的数据来检索帐户信息,导致了水平授权绕过: http://vulnerablexxx.com/user/account?accountId=7865000321http://vulnerablexxx.com/user/account?accountId=7865000321
攻击者可以修改HTTP请求中的accountId参数,伪装成任何用户的帐户,发起检索信息请求。
防护措施
Spring
Spring Security在web和method级别都支持授权语义。可以限制哪些角色能够执行特定的方法,这是实施垂直授权控制的好方法: @Configuration @EnableWebSecurity public class SecurityConfig extends WebSecurityConfigurerAdapter { @Override protected void configure(HttpSecurity security) throws Exception { http .authorizeRequests() .antMatchers("/admin/**").hasRole("ROLE_ADMIN"); } ... }
通过使用注释,安全表达式也可以用于在method级别保护业务功能。@PreAuthorize和@PostAuthorize注解支持Spring表达式语言(SpEL),并提供基于表达式的访问控制:@Service public class AdminService { @PreAuthorize("hasRole("ROLE_ADMIN")") public List findAllOrganizations() { ... } ... }
5千年一遇美女利智1992年,成龙和利智合作拍一部尺度很大的电影,也是这部戏让成龙彻底爱上了利智。不过在得知赌王何鸿燊和利智的关系后,成龙选择和利智一刀两断,毕竟赌王在香港的地位不是成龙可以比拟的。
第36届百花奖张译袁泉获奖实至名归,沈腾海清0票太尴尬第36届百花奖在武汉举行,而最终的获奖名单也终于揭晓。看了看提名名单,再看获奖名单,颇有些雨露均沾的意思。影帝张译万众瞩目的影帝影后,被张译和袁泉收入囊中,而他们早已经是百花奖的常
第36届百花奖,获奖人物和作品合集在武汉举行的第36届百花奖,与7月30日19点40分开始至7月30日2200结束!现场由101位大众评审来投票决定奖项的获得者!首先颁发的是最佳男配角奖,由关晓彤和杜江来颁发奖项!
百花奖红毯徐娇俏皮可爱,齐溪一人独美,都不如谭卓深V吸睛近两年,因为各种各样的原因,国内的大型颁奖典礼很少,因此这次在武汉举行的第36届大众电影百花奖,吸引了极大的关注。截至小编发稿之前,各大奖项已经全部出炉。在最受关注的最佳男女主角奖
让军旅之花尽情地绽放吧在八一建军节到来之际,发表这篇文章,也许是恰当的。有微友对退伍(退役)军人在头条频繁地发表自己的见解,回忆部队美好时光,感到疑域不解,说可否停竭一阵子,我看是难以停竭了,因为他们热
美国连环杀人魔,半月内谋害4人,为逃刑罚装疯这是蛇神的命令美国疤面杀人狂魔连环杀人,半月内接连杀害四人,曾多次遭到警方逮捕,为了逃避刑罚,甚至不惜装疯卖傻在自己脸上雕花。但被警方逮捕后这个狂魔却表示,自己只是听从了蛇神的命令行事。詹金斯出
夏日祭的目的夏日祭最近不少人比较关注夏日祭,甚至还有人问我斗法是不是真的,斗法这个捕风捉影的事情就不说了,即使斗法也不是俗人可知的,传出来的都是借机炒作而已,夏日祭倒是可以讲一讲一家之言。日本
老人与海没有失败,只有战死老人与海讲了一个老渔夫的故事,但是在这个故事里却揭示了人类共同的命运。我佩服老人的勇气,佩服他不屈不饶的斗争精神,也佩服海明威。王小波老人与海是一部寓意深远的古典悲剧式的小说。小说
一饿就心慌手抖是生病了吗?可能是四种疾病所致,不妨自查一下小王平时喜欢跑步锻炼,身体一直都不错。每天小王都是下班之后先运动然后再回家吃饭,饥肠辘辘的小王回家后饭量还真是不小。但是小王最近发现了自己身上好像是出什么问题了。小王感觉当自己运动
国米22里昂,卢卡库头球,劳塔罗助攻,什克没轮到队长袖标国米本场进攻组织不错,有很多禁区前沿远射机会,传中也有3次绝好机会被卢卡库和劳塔罗分别浪费。巴雷拉远射偏出。卢卡库铲断,恰恰远射被封堵后,国米2次进攻传中,卢卡库没顶到头球。邓弗里
董洁带儿子回大连,跟父亲下厨做了一桌菜,豪宅宽敞依山傍水近日,董洁在社交平台晒出一则动态,称带着儿子回到了大连老家,所以心情特别的开心,毕竟平时的工作也太忙碌,不工作的时候,她大部分时间都跟儿子呆在北京,加上孩子也放假了,所以也难得回老