#博客大赛# 斗胆尝试浅入门之BAC

什么是BAC

alt

计算机行业内小伙伴可能或多或少了解OWASP(开放式 Web 应用程序安全项目),OWASP Top 10 是面向开发人员和 Web 应用程序安全性的标准意识文档。它代表了对 Web 应用程序最关键的安全风险的广泛共识。它会定期更新一份数据统计名为“OWASP Top 10”,这份统计在业界非常有影响力;

最新一期是2021年Top 10,对比上一次的2017年,变化非常明显,我们来关注下Top1。

alt

A01:2021 – 损坏的访问控制

A01:2021-Broken Access Control从第五位上升,它也被称为授权,它定义了 Web 应用程序如何向某些用户而不是其他用户授予对内容和功能的访问权限。

94%的应用程序都经过了某种形式的破坏访问控制的测试。映射到Broken Access Control的34个CWE(Common Weakness Enumeration)在应用程序中出现的次数比任何其他类别都多。

BAC定义

控制失效或者不足,导致未经授权的信息的泄漏、修改或损坏所有资料,或执行超出用户权限的业务功能的现象;

业界也不乏这样的案例;那为什么去破坏访问控制呢?是因为无所事事?好玩?还是说有别的意图,也许初衷并非如此,但是最终还是为了利益,就像这句话:

不管你愿不愿意承认,历史上没有一场仗是因为爱和正义打起来的,所有的流血背后,深层次的原因都是经济.

小菜篡改下这段话,映射到安全领域:

不管你是否同意,历史上没有一次安全事件是因为好玩,所有的攻击,深层次的原因都是利益.

为什么预防BAC

BAC案例

业界案例

业界比较有名的10大金融案例,参考References

01 新西兰证交所连续一周遭受DDoS攻击导致交易中断
02 欧洲某银行遭遇史上最大规模的DDoS攻击
03 世界最大加密货币交易所接连发生数据泄露事故
04 保险巨头First American 8.85亿份敏感财务记录曝光
05 金融巨头加鼎银行290万用户资料遭内部员工窃取
06 美国第一资本银行遭黑客窃取1.06亿条用户敏感数据
07 恶意软件Carbanak针对银行和金融机构发起攻击,涉案金额超10亿欧元
08 两大黑客集团合计窃走10亿美元加密货币
09 黑客组织利用银行APP漏洞非法获利2800余万元
10 境外APT组织利用恶意软件攻击我国互联网金融平台卷走150万美元数字资产
alt

亲民案例

小菜带来几个交付过程中的安全问题案例,供大家浅浅感受一下。

案例一

场景:某A银行项目的核心业务之一:支持我自己名下卡账户直接转账,尤其是跨币种之间转账,方便用户抓住时机,快速投资,如下执行预转账流程:

alt

从上述流程图可以看出,Orderid属性(预转账单),从BE兜转到UI后,原封传递给BE。

现象:3rdP 在调用外部核心系统执行转账时,缺乏对Orderid的归属校验;

结果:用户A携带非本人accounts生成的Orderid进行转账时,依然可以转账成功;

影响:不同用户之间存在横向越权安全问题,导致个人资产未授权转移;

直接原因:Orderid属性从安全态变为非安全态(想一下为什么)3rd服务未对来自外部系统的数据做严格校验导致了问题;

根本原因:对外部传入数据的校验不够严格导致了横向越权。

案例二

某B银行项目的增加业务之一:支持用户使用自己的手机号或身份证号 绑定/解绑 指定银行账号对应的二维码,提升转账效率;

现象:绑定或者解绑过程,核心模块缺乏对手机号/身份证号的归属校验;

结果:用户A可以绑定或解绑非本人二维码数据;

影响:不同用户之间存在横向越权安全问题,个人正常交易受阻,银行交易量受损;

直接原因:缺少逻辑判断,识别手机号和身份证号归属正确性;

根本原因:对外部传入数据的校验不够严格导致了横向越权。

案例三

场景:某电信网优系统的环境,客户通过该系统获取网络质量统计报表,制定每个季度网络优化策略。续性中断。

现象:业务人员无法按时获取统计报表数据;

结果:客户因为缺乏报表数据,不能输出有效的策略数据,导致既定规划没办法高效实施;

直接原因:系统全局配置被某些业务人员误操作导致不能提供;

根本原因:业务人员权限过大,可以操作到业务权限之外的其他功能。

预防BAC目的

一问: 预防背后的想保护什么呢?

一答

“核心价值资产”,资产的价值不一定是对应的购买价格,也可能是某些提供电子交易业务的服务器资源,服务器不可用(DDoS)会导致直接的收入损失和客户的商誉损失。

二问: 不预防BAC带来的坏处

二答

从长期来看,对一个企业,BAC一旦发生极有可能是严重或致命的打击,预防BAC无论是重要性或者必要性上来说都是需要优先考虑的事。举几个例子感受下:

对金融行业:疏忽对交易数据的准确性和正确性校验,会带来什么后果呢; 对医疗行业:忽视个人敏感数据的保护,比如明确存在病例等信息,一旦泄漏,会导致什么后果呢; 对电商行业:没有限制购买热门商品的数量问题,引发黄牛业务滋生,又会带来什么问题呢;

如何预防BAC

通过上述案例,预防BAC有比较成熟的做法:以核心资产为圆心,以系统的数据流为承载进行拆解,一般有如下三种核心方式并行防护:

认证:合法认证通过的用户才能接入系统;

授权:具备一定权限的用户才能操作相关业务;

加密:加密保护核心资产数据的传输通道和存储点.

今天,小菜给大家唠叨一篇预防BAC问题核心手段之一:授权(后续系列再聊认证,加密相关)。

授权定义---来自原始INI技术文档

Authorization occurs after an entity’s identification and authentication have occurred to determine exactly what they are allowed to do. Authorization is implemented through the use of access controls.

解读

授权发生在实体的标识和身份验证(认证)之后,以确定它们被允许做什么。授权通过使用访问控制来实现。 它表达意思是主体访问客体时,需要明确访问门禁。

授权流程三要素:

主体:主动的实体,需要访问的资源
客体:被动的实体,被访问的资源
授权:增/删/改/查/执行等

访问控制策略之授权

关于授权模型,常见有两大类:

类型1: DAC  
类型2: Non-DAC(MAC,RBAC,RAC,ABAC);

小菜尝试用亲身经历过的一些例子加以阐述:

模型 1: 自主访问控制(DAC)

DAC定义---来自identity management institute

Discretionary Access Control is a model of access control based on access being determined by the owner of the target resource. The owner of the resource can decide who does and does not have access, and exactly what access they are allowed to have.

解读

自主访问控制(DAC)是一种基于目标资源所有者确定的访问权限的访问控制模型。资源的所有者可以决定谁有访问权,谁没有访问权,以及他们到底被允许拥有什么访问权。

例子

在Linux系统中,万物皆文件,文件权限属性包含:owner权限,group权限,other权限,详细参考文末reference链接

file nameownerprivileage
abcroot-rw-r--r--
abc.shroot-rwxr--r--
bcdappservice-rw-r--r--
bcd.shomservice-rwx------

文件abc归属用户即所有者是root,root用户创建了这个abc文件,且当前的权限是644,意味着,root可以读与写,但是与root同组的其他用户和跨组的用户均可读取abc;

bcd.sh文件,归属用户即所有者是omservice,当前权限是700,意味着,omservice本人可以读写并执行该脚本文件,除此之外对非root的其他用户均不可见,比如appservice用户登录系统后无法看到bcd.sh。

在微软Windows的NTFS(New Technology File System)文件系统使用也是DAC模型。

模型 2: Non-DAC

2.1 强制访问控制(MAC)

MAC定义---来自identitymanagementinstitute

Mandatory Access Control is a model of access control in which the owner of the resource does not get to decide who gets to access it, but instead access is decided by a group or individual who has the authority to set access on resources.

解读

强制访问控制(Mandatory Access Control)模型,强调资源的所有者不能决定谁可以访问它,而是由有权设置资源访问权限的组或个人决定访问;一般会引入tag,这些tag都是预先定义好的,每个客体和主体都有一个或多个tag,系统根据分配的tag确认访问权限。

例子1

为了方便说明,我们来定义4种客体的tag标签,分别对应不同安全等级的资源:

tag-机密tag-私有tag-敏感tag-公开
A1B1C1D1
A2B2C2D2
A3B3C3D3

定义4种主体的tag标签,分别对应不同用户等级:

tag-机密许可tag-私有许可tag-敏感许可tag-公开许可
R1R2R3R4

管理员分配权限时需要遵从如下原则:

1 给R1归属用户分配A1,A2客户的权限,可访问A1,A2;

2 没有给R1分配A3权限,不可访问A3;

3 无法向R2归属用户分配A1,A2,A3客户的权限。

例子2

SeLinux(Security-Enhanced Linux)是MAC绝佳实践,这个话题展开说比较复杂,后续有机会专门再展开学习,当前简单总结如下:

当一个主体Subject(如一个程序)尝试访问一个目标Object(如一个文件),SELinux 安全服务器SELinux Security Server(在内核中)从策略数据库Policy Database中运行一个检查。基于当前的模式mode,如果 SELinux 安全服务器授予权限,该主体就能够访问该目标。如果 SELinux 安全服务器拒绝了权限,就会在 /var/log/messages 中记录一条拒绝信息。

alt

关于SELinux技术文档入门请参考:References

总结

MAC模型默认禁止,即默认开启安全限制,它使用默认拒绝原则; 如未特殊授予用户访问数据权限,则系统默认拒绝和用户访问相关数据; MAC从实现上更安全,比起DAC,但是灵活性和可扩展性就非常受限了。

2.2 基于角色的访问控制(RBAC)

RBAC定义---来自原始技术文档

Role-Based Access Control is a model of access control that, similar to MAC, functions on access controls set by an authority, rather than by the owner of the resource. The difference between RBAC and MAC is that access control in RBAC is based on the role of the individual accessing the resource.

解读

基于角色的访问控制是一种访问控制模型,它类似于MAC,作用于由权限设置的访问控制,而不是由资源的所有者设置。 RBAC和MAC的区别在于,RBAC中的访问控制是基于访问资源的个人所扮演的角色;一般来说会使用角色或组实现权限设置,比如具体用户归属于某个角色,用户就具备角色下的权限。

例子

回顾下案例3,系统所有权限掌控在一个角色手中,等价于把全部鸡蛋放到一个篮子,一旦发生有利益竞争时,该角色可以完成从0-100的所有操作;我们一起尝试分析下案例3中该如何划分角色?

从管理/维护/业务的角度出发,采用统一的集中授权管理,执行分权,可以划分出4类角色:admin/secadmin/secauditor/sysadmin,职责分别如下

rolepermission
admin具备业务管理+用户管理所有操作权限
secadmin权限管控中心,负责角色增删改查及赋权,但是不具备行权能力
secauditor日志审计员,用于查看系统中增删改查行为的详细日志
sysadmin系统运维角色,部署升级服务,服务管理等权限,无业务操作权限

创建一套role-based access control分权管理机制去合理划分业务并规范操作;能够实现“三权分立”相互制约权力的效果,这样系统安全性会大大提高。

总结

RBAC最大特点:主体通过其归属角色获取资源;而角色基于业务属性区分范围,比如业务操作员,运维人员,日志审计员等;

RBAC在频繁更改人员的动态环境中非常方便;管理员只需要将新用户添加到合适的角色中即可快速授予权限;删除权限,也只是删除对应角色的用户即可。

2.3 基于规则的访问控制(rBAC)

RAC定义

rules-based access control uses a set of rules, restrictions, or filters to determine what actions can or cannot occur on a system.  It includes granting subjects access Objects or permission to perform an operation.

解读

基于规则的访问控制使用一组规则、限制或过滤器来确定系统上可以或不可以发生特定操作。它包括授予主体对对象的访问权或执行操作的权限。RAC模型显著特点他们具备适用于所有主体的全局规则。

例子

之前参与过一个项目有个非常合适的例子,它的目的是尽量的隐藏对外暴露的端口,最佳实践采用iptables(软防火墙);iptables本质上就是一种包过滤型防火墙,以下是配置的过滤规则

iptables -A FORWARD -s 192.168.1.11 -j REJECT 
iptables -A FORWARD -s 192.168.0.0/24 -j ACCEPT

上述规则作用是接受除了“192.168.1.11”之外所有192.168.0 .0~192.168.0 .255网断数据;iptables功能远不止于此,想了解更多,参考references。

总结

RAC模型非常广泛地应用在防火墙技术。

2.4 基于属性的访问控制(ABAC)

ABAC定义---来自原始技术文档

Attribut-based access control is an access control method that allows or denies operations requested by a subject to an object based on the assigned attributes of the subject, the assigned attributes of the object, environmental conditions, and a set of policies associated with those attributes and conditions.

解读

基于属性的访问控制,根据主体的指派属性、客体的指派属性、环境条件和与这些属性和条件相关的一组策略,允许或拒绝主体对客体所请求的操作。

属性可以是和用户、网络、设备的任何特征,比如:

1 用户属性可以是:身份,归属部门,使用的设备型号等;

2 网络属性可以是:本地网络,无线网络,内部网络,广域网络等;

3 设备类型可以是:防火墙,代理服务器,Web服务器,数据库服务器等。

例子

没有真实在项目上过的例子,但是听到过隔壁项目有类似的需求,如:

“允许用户使用平板电脑或智能手机访问APP”
“禁止用户使用低于iOS13的系统访问APP”
“法律黑名单用户禁止发起任何银行转账”

回归敏捷

每一种模型都采用不同的方法来控制主体如何访问客体,经过上述的理论加案例,应该能够明显发现各有特点:这些模型有的内置在不同操作系统内核中,有的通过合适代码架构融入到业务的核心模块中,提供合适的、精确的访问控制。

项目交付中的AC (此AC非彼AC)

在项目上,如何选择合适的Access Control,需要PO & BA & TL & InfoSec 根据业务需求、安全需求,结合项目在市场的地位、受众、风险等因素,进行决策使用何种方式,

简单整理几种模型特点供参考:

名字优点缺点典型应用
DAC模型非常灵活,适合个体用户单机使用数据量较大时,不建议采用文件权限控制
MAC权限管控非常惊喜,适合高敏感企业灵活性和扩展性较差军工,银行等机构
RBAC以权限职责划分,快速高效进行权限管理-网优系统,论坛系统
rBAC规则往往容易上手且维护成本非常低应用范围较窄防火墙
ABAC属性定制灵活,方便定制过滤规则应用范围较窄SDN网络

References

OWASP https://owasp.org/Top10/zh_CN/A01_2021-Broken_Access_Control/

Finance Cases https://www.secrss.com/articles/25933

IMI https://identitymanagementinstitute.org/access-control-types-and-models/

SELinux https://en.wikipedia.org/wiki/Security-Enhanced_Linux

Iptables https://wiki.archlinux.org/title/iptables

本文由 mdnice 多平台发布

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
目标检测(Object Detection)是计算机视觉领域的一个核心问题,其主要任务是找出图像中所有感兴趣的目标(物体),并确定它们的类别和位置。以下是对目标检测的详细阐述: 一、基本概念 目标检测的任务是解决“在哪里?是什么?”的问题,即定位出图像中目标的位置并识别出目标的类别。由于各类物体具有不同的外观、形状和姿态,加上成像时光照、遮挡等因素的干扰,目标检测一直是计算机视觉领域最具挑战性的任务之一。 二、核心问题 目标检测涉及以下几个核心问题: 分类问题:判断图像中的目标属于哪个类别。 定位问题:确定目标在图像中的具体位置。 大小问题:目标可能具有不同的大小。 形状问题:目标可能具有不同的形状。 三、算法分类 基于深度学习的目标检测算法主要分为两大类: Two-stage算法:先进行区域生成(Region Proposal),生成有可能包含待检物体的预选框(Region Proposal),再通过卷积神经网络进行样本分类。常见的Two-stage算法包括R-CNN、Fast R-CNN、Faster R-CNN等。 One-stage算法:不用生成区域提议,直接在网络中提取特征来预测物体分类和位置。常见的One-stage算法包括YOLO系列(YOLOv1、YOLOv2、YOLOv3、YOLOv4、YOLOv5等)、SSD和RetinaNet等。 四、算法原理 以YOLO系列为例,YOLO将目标检测视为回归问题,将输入图像一次性划分为多个区域,直接在输出层预测边界框和类别概率。YOLO采用卷积网络来提取特征,使用全连接层来得到预测值。其网络结构通常包含多个卷积层和全连接层,通过卷积层提取图像特征,通过全连接层输出预测结果。 五、应用领域 目标检测技术已经广泛应用于各个领域,为人们的生活带来了极大的便利。以下是一些主要的应用领域: 安全监控:在商场、银行
目标检测(Object Detection)是计算机视觉领域的一个核心问题,其主要任务是找出图像中所有感兴趣的目标(物体),并确定它们的类别和位置。以下是对目标检测的详细阐述: 一、基本概念 目标检测的任务是解决“在哪里?是什么?”的问题,即定位出图像中目标的位置并识别出目标的类别。由于各类物体具有不同的外观、形状和姿态,加上成像时光照、遮挡等因素的干扰,目标检测一直是计算机视觉领域最具挑战性的任务之一。 二、核心问题 目标检测涉及以下几个核心问题: 分类问题:判断图像中的目标属于哪个类别。 定位问题:确定目标在图像中的具体位置。 大小问题:目标可能具有不同的大小。 形状问题:目标可能具有不同的形状。 三、算法分类 基于深度学习的目标检测算法主要分为两大类: Two-stage算法:先进行区域生成(Region Proposal),生成有可能包含待检物体的预选框(Region Proposal),再通过卷积神经网络进行样本分类。常见的Two-stage算法包括R-CNN、Fast R-CNN、Faster R-CNN等。 One-stage算法:不用生成区域提议,直接在网络中提取特征来预测物体分类和位置。常见的One-stage算法包括YOLO系列(YOLOv1、YOLOv2、YOLOv3、YOLOv4、YOLOv5等)、SSD和RetinaNet等。 四、算法原理 以YOLO系列为例,YOLO将目标检测视为回归问题,将输入图像一次性划分为多个区域,直接在输出层预测边界框和类别概率。YOLO采用卷积网络来提取特征,使用全连接层来得到预测值。其网络结构通常包含多个卷积层和全连接层,通过卷积层提取图像特征,通过全连接层输出预测结果。 五、应用领域 目标检测技术已经广泛应用于各个领域,为人们的生活带来了极大的便利。以下是一些主要的应用领域: 安全监控:在商场、银行
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值