OWASP Top 10 2017 A5 深度剖析:Broken Access Control 访问控制失效的判定、防护与攻击场景
应用安全【免费下载链接】Top10Official OWASP Top 10 Document Repository项目地址https://gitcode.com/gh_mirrors/top/Top10点击查看免费下载导读本文基于 OWASP 官方 Top 10 文档仓库中 2017/en/0xa5-broken-access-control.md 展开系统解读 A5:2017访问控制失效的风险评级、漏洞判定标准、九条防护建议与两个典型攻击场景。读完本文你将掌握访问控制失效的 6 类常见形态越权访问、直接对象引用、元数据篡改、CORS 配置错误、强制浏览等理解服务端强制、默认拒绝的防护原则并了解该风险在 2021 版中升为榜首的演进脉络。一、风险背景什么是 A5:2017 Broken Access Control在 2017 版 Top 10 总览 中A5:2017 的官方定义为对已认证用户所能执行操作的约束往往没有被正确实施。攻击者可利用这些缺陷访问未授权的功能或数据例如访问其他用户的账户、查看敏感文件、修改其他用户的数据、更改访问权限等。访问控制Access Control用于强制执行安全策略确保用户不能超出其被授权的权限范围行动。一旦失效通常会导致未授权的信息泄露、数据被修改或销毁或执行超出用户权限范围的业务功能。其业务影响取决于应用程序与数据本身的保护需求——同一漏洞在不同业务场景如公开信息网站与医疗健康系统中造成的危害可能截然不同这一观点在 风险说明文档 中被反复强调。2017 版的合并重组值得注意的是A5 是 2017 版的一次重大合并产物。根据 2017 版发布说明A4-Insecure Direct Object References不安全的直接对象引用与A7-Missing Function Level Access Control缺失功能级访问控制合并为A5:2017-Broken Access Control与此同时A8-Cross-Site Request ForgeryCSRF因主流框架已内置防御、仅在约 5% 应用中被发现而退出 Top 10。这一合并反映了社区对授权Authorization问题的重新聚焦无论是对象级访问控制还是功能级访问控制本质上都属于同一个核心弱点——权限约束未被正确实施。二、风险评级解析为什么是 Exploitability 2 / Prevalence 2 / Detectability 2 / Technical 3A5:2017 章节开头给出的风险因素表如下| Threat agents / Attack vectors | Security Weakness | Impacts | | -- | -- | -- | | Access Lvl : Exploitability 2 | Prevalence 2 : Detectability 2 | Technical 3 : Business | | 访问控制的利用是攻击者的核心技能。SAST 与 DAST 工具可以检测访问控制的缺失但无法验证已存在的访问控制是否真正生效。访问控制可通过人工方式检测在某些框架中也可通过自动化方式发现其缺失。 | 由于缺乏自动化检测手段且应用开发者缺乏有效的功能性测试访问控制弱点十分常见。访问控制的检测通常不适用于自动化静态或动态测试人工测试是发现缺失或无效访问控制的最佳方式包括 HTTP 方法GET 与 PUT 等、控制器、直接对象引用等。 | 技术影响是攻击者以用户或管理员身份行事或用户使用特权功能或创建、访问、更新、删除每一条记录。业务影响取决于应用程序和数据本身的保护需求。 |要理解这些评级Exploitability 2、Prevalence 2、Detectability 2、Technical 3需要结合 2017 版统一的风险评级方法论。根据 风险因素详解 与 风险评级说明2017 版对每个弱点采用3 个可能性因子流行度 Prevalence、可检测性 Detectability、可利用难度 Ease of Exploit和1 个影响因子技术影响 Technical Impact每个因子按 1低到 3高评分流行度数据来自多个组织的贡献数据汇总可检测性、可利用难度和技术影响则基于与各 Top 10 类别相关的 CVE 分析得出最终风险排名 可能性评级 × 平均技术影响。A5 的评分组合2/2/2/3直观反映了这类弱点的特征普遍存在但难以自动检测一旦被利用则技术影响严重Technical 3。这正是在 0xa5 文档 中反复强调人工测试是检测访问控制缺陷的最佳方式的原因。需要强调的是该评级是面向典型 Web 应用的通用估计。正如 风险评级说明 所指出的这套方法不计算威胁主体出现的可能性也不考虑具体应用的业务影响——即使弱点本身很严重如果不存在具备攻击条件的威胁主体或相关资产业务影响可忽略实际风险也可能很低。每个组织都应根据自身的威胁主体与业务影响重新评估。三、漏洞判定你的应用是否容易受到访问控制攻击根据 A5:2017 文档 的Is the Application Vulnerable?章节访问控制失效通常表现为以下 6 类常见形态1. 绕过访问控制检查攻击者通过修改 URL、篡改内部应用状态或 HTML 页面来绕过访问控制检查或直接使用自定义 API 攻击工具。这类攻击的根源在于访问控制检查放置在了客户端可控的位置而非不可信数据无法触及的服务端。2. 直接对象引用Insecure Direct Object References允许更改主键primary key指向其他用户的记录从而查看或编辑他人的账户。典型形态即原 A4:2017 的内容应用直接使用用户可控的标识符如账户 ID查询数据而不校验归属关系。3. 越权提升Elevation of Privilege未登录即可以用户身份操作或以普通用户身份执行管理员功能。这是功能级访问控制原 A7:2017缺失的典型表现——特权接口缺少角色校验。4. 元数据篡改Metadata Manipulation重放或篡改 JSON Web TokenJWT访问控制令牌篡改 Cookie 或隐藏字段以提升权限滥用 JWT 失效机制如注销后令牌仍可用。5. CORS 配置错误CORS 错误配置允许未授权的 API 访问。攻击者可借助错误配置的跨域资源共享策略使恶意站点以受害用户身份调用目标 API。6. 强制浏览Force Browsing未认证用户强制访问需要认证的页面普通用户强制访问特权页面访问缺少访问控制的 API 的 POST、PUT、DELETE 方法——即使 GET 接口有校验若写操作接口未加控制同样构成严重缺陷。判定要点从源码审计与测试角度检测访问控制缺陷的最佳途径是人工测试逐一验证 HTTP 方法GET vs PUT 等、控制器、直接对象引用等是否存在缺失或无效的访问控制。自动化静态SAST或动态DAST测试通常难以有效覆盖此类缺陷——这正是文档给出的评级中 Detectability 仅为 2 的实证依据。四、防护指南九条可落地的访问控制加固措施访问控制只有在受信任的服务端代码或无服务器 API中强制执行才有效——因为在那里攻击者无法修改访问控制检查或相关元数据。在客户端实施访问控制检查是无效的如仅靠隐藏按钮、前端路由守卫因为攻击者可完全控制客户端。基于 A5:2017 文档 的How To Prevent章节具体防护措施如下1. 默认拒绝Deny by Default除公开资源外默认拒绝所有访问。这是最小权限原则的直接落地访问仅应授予特定能力、特定角色或特定用户而非对所有人开放。2. 访问控制机制只实现一次并全局复用将访问控制机制实现为单一、可复用的组件并在整个应用中复用同时尽量减少 CORS 的使用。避免在每处接口各自实现校验逻辑——分散实现极易遗漏。3. 模型层强制记录归属Record Ownership模型级访问控制应强制实施记录所有权而不是默认接受用户可创建、读取、更新或删除任意记录。这意味着数据访问层必须校验该记录是否属于当前用户而非仅校验用户是否已登录。4. 业务限额由领域模型强制独特的业务限额需求应由领域模型domain models强制实施。例如每个账户每日转账上限这类业务规则不能依赖客户端校验必须在服务端领域逻辑中强制执行。5. 关闭目录列举并清理文件元数据禁用 Web 服务器目录列举并确保 Web 根目录下不存在文件元数据如.git目录和备份文件。攻击者可通过目录列举发现敏感文件或通过.git泄露源码与历史版本。6. 记录访问控制失败并告警记录访问控制失败日志在适当时机如重复失败通知管理员。这是检测持续攻击尝试的基础也为事件响应提供依据。7. 对 API 与控制器实施速率限制对 API 和控制器访问进行速率限制Rate Limit以降低自动化攻击工具造成的危害。限制可基于 IP、账户或会话维度实施。8. 注销后服务端使 JWT 令牌失效JWT 令牌应在注销后在服务端失效。对于有状态会话服务端销毁会话标识对于无状态 JWT应使其短生命周期以缩小攻击窗口——这一点在 2021 版中进一步演化为有状态会话标识符注销后应在服务端失效无状态 JWT 应保持短生命周期长生命周期 JWT 强烈建议遵循 OAuth 标准撤销访问见 2021 版对应章节。9. 将访问控制测试纳入开发流程开发人员和 QA 人员应编写功能性的访问控制单元测试与集成测试。包括单元测试验证每个控制器/API 的角色与权限校验逻辑集成测试以不同角色匿名、普通用户、管理员实际调用接口验证越权场景被正确拒绝。五、攻击场景剖析场景一通过直接对象引用越权访问任意账户应用在 SQL 调用中直接使用了未经验证的数据来访问账户信息pstmt.setString(1, request.getParameter(acct)); ResultSet results pstmt.executeQuery();攻击者只需在浏览器中修改acct参数即可发送任意账户编号http://example.com/app/accountInfo?acctnotmyacct如果服务端未正确校验该账户是否属于当前用户攻击者就能访问任意用户的账户信息。这正是 CWE-639Authorization Bypass Through User-Controlled Key与 CWE-566Authorization Bypass Through User-Controlled SQL Primary Key的典型体现。对应防护模型层强制记录所有权校验而非仅凭传入 ID 直接查询。场景二强制浏览特权页面攻击者直接强制浏览目标 URL而管理员页面本应要求管理员权限http://example.com/app/getappInfo http://example.com/app/admin_getappInfo如果未认证用户能访问其中任意页面即为缺陷如果非管理员用户能访问管理员页面同样为缺陷。这类攻击的关键点在于应用在 UI 层面隐藏了管理入口但后端接口缺少对应的角色校验——攻击者只需猜测或枚举 URL 即可直达特权功能。对应防护默认拒绝 服务端统一访问控制机制并在集成测试中验证非管理员角色对管理员接口的访问被拒绝。六、关联 CWE 与 2021 版演进相关 CWE 映射0xa5-broken-access-control.md 的 References 部分列出的外部参考主要映射到以下 CWE在仓库的 2021 版 A01 章节 中该风险已扩展映射至 34 个 CWE此处仅列 2017 版直接引用的核心项CWE-22: Improper Limitation of a Pathname to a Restricted Directory路径遍历CWE-284: Improper Access Control (Authorization)CWE-285: Improper AuthorizationCWE-639: Authorization Bypass Through User-Controlled Key2021 版升至榜首的访问控制失效在 2021 版对应章节 中访问控制失效从 2017 年的第 5 位升至 A01 榜首约94% 的应用被测试过某种形式的访问控制失效平均发生率3.81%在贡献数据集中出现次数最多超过318,000 次新增映射包括 CWE-200向未授权行为者暴露敏感信息、CWE-201敏感信息混入发送数据、CWE-352CSRF等。2021 版对防护建议的演进主要体现在会话/令牌处理上有状态会话标识符应注销即失效无状态 JWT 应短生命周期长生命周期 JWT 建议按 OAuth 标准撤销访问。这与 2017 版JWT 应在服务端注销失效的基线一脉相承但给出了更精细的无状态令牌处理策略。七、总结与自查清单访问控制失效是 Web 应用安全中最普遍、技术影响最严重Technical 3的风险类别之一其核心症结在于权限约束未被正确实施。由于自动化工具难以有效检测人工测试与功能性的单元/集成测试是发现此类缺陷的主要手段。面向开发团队的最终自查清单除公开资源外所有接口默认拒绝访问访问控制校验集中在服务端统一组件避免分散实现数据访问层校验记录所有权杜绝直接对象引用业务限额规则在领域模型中强制执行已关闭目录列举Web 根目录无.git与备份文件访问控制失败已记录日志并配置告警API 与控制器已实施速率限制注销后服务端令牌/会话已失效已为访问控制编写单元测试与集成测试覆盖匿名/普通/管理员三类角色。延伸阅读仓库内A5:2017 官方章节全文2017 版 Top 10 完整风险列表风险评级方法论说明2017 版发布说明含 A4/A7 合并为 A5 的说明2021 版 A01:2021 – Broken Access Control榜首演进与 34 个 CWE 映射2021 版与历版对比文档赞分享应用安全【免费下载链接】Top10Official OWASP Top 10 Document Repository项目地址https://gitcode.com/gh_mirrors/top/Top10点击查看免费下载相关推荐OWASP Top 10 2017 A2:2017 失效的身份认证Broken Authentication漏洞判定清单、防护措施与攻击场景深度解析OWASP Top 10 2017 A2:2017 失效的身份认证Broken Authentication漏洞判定清单、防护措施与攻击场景深度解析 导读应用安全OWASP Top 10漏洞详解从注入攻击到访问控制失效OWASP Top 10漏洞详解从注入攻击到访问控制失效 OWASP Top 10是全球最权威的Web应用程序安全风险清单为开发者和安全从业者提供了最关键的应用安全OWASP Top 10 2017 深度解读A1 Injection 注入漏洞的威胁模型、攻击原理与防护实战OWASP Top 10 2017 深度解读A1 Injection 注入漏洞的威胁模型、攻击原理与防护实战 导读 本文以 OWASP Top 10 2017应用安全上一篇EPPlus深度解析构建高性能Excel数据导出引擎的实战指南下一篇THU-PPT-Theme清华主题PPT模板的全新自动化方案创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

ESP32+MicroPython开发环境搭建指南:从驱动到点灯

ESP32+MicroPython开发环境搭建指南:从驱动到点灯

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/9 1:11:49 阅读更多 →
锂电池寿命预测实战:基于LSTM与RNN的时间序列建模与PyTorch实现

锂电池寿命预测实战:基于LSTM与RNN的时间序列建模与PyTorch实现

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/9 1:10:48 阅读更多 →
树莓派Pico硬件控制实战:从GPIO/PWM到舵机与OLED

树莓派Pico硬件控制实战:从GPIO/PWM到舵机与OLED

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/9 1:10:48 阅读更多 →

最新新闻

HARA与风险评估方法

HARA与风险评估方法

EPS electronic power steering, 电子助力转向系统 发现了问题,下面就要制定措施 内容来源 : https://www.bilibili.com/video/BV1GdeQ6xEHi?spm_id_from333.788.videopod.sections&vd_source473185c2a7a9b79ef8fcea7dce5ca501

2026/10/9 5:34:40 阅读更多 →
AI应用安全防线:从提示注入到Agent攻防的纵深防御指南

AI应用安全防线:从提示注入到Agent攻防的纵深防御指南

上个月帮一个做企业内部知识库问答的团队做AI应用开发安全评审,聊到一半,团队负责人问了我一个问题:"我们的Agent已经接了20多个外部工具,如果检索到的某份文档里藏着恶意指令,Agent会不会照着执行?&q…

2026/10/9 5:34:40 阅读更多 →
WALL-OSS 模型详解

WALL-OSS 模型详解

WALL 模型详解 WALL (本项目) 基本信息 项目 内容 全称 WALL Series Foundation Model 机构 开源项目 架构 Transformer + Flow Matching 动作类型 连续动作 训练方式 模仿学习 (Flow Matching) 模型架构图 输入图像(三视角) ├── faceImg (正面相机) ├…

2026/10/9 5:34:40 阅读更多 →
第二章:1、Embedding与向量数据库

第二章:1、Embedding与向量数据库

一、Embedding 原理详解1. 什么是 Embedding?定义:将一段文本转换为 float[] 数组(如1536个浮点数),这个数组即为文本的“语义指纹”。类比:如同每个人有独一无二的指纹,每段文本也有独特的向量…

2026/10/9 5:34:40 阅读更多 →
品牌档位约束的Prompt条件生成:低端/中端/高端话术模板与错配检测

品牌档位约束的Prompt条件生成:低端/中端/高端话术模板与错配检测

一、问题定义 LLM生成slogan默认输出“中庸档”表达——功能与情绪各占一半的通用句式。但品牌实践存在明确的档位规律: 低端品牌:直接给好处(多、快、好、省); 中端品牌:不卖产品,卖向往&#…

2026/10/9 5:34:40 阅读更多 →
基于微信小程序的智能拍卖系统设计与实现复盘

基于微信小程序的智能拍卖系统设计与实现复盘

去年做毕业设计选题时,我在几个平台搜了一圈"智能拍卖小程序",下载过好几个标着"完整源码文档"的压缩包。解压之后发现问题都差不多:要么是几年前的老项目,登录接口还是旧版wx.getUserInfo,要么核…

2026/10/9 5:33:39 阅读更多 →

日新闻

Java时间API实战:LocalDate、Date与ZonedDateTime的转换与避坑指南

Java时间API实战:LocalDate、Date与ZonedDateTime的转换与避坑指南

Java时间API这个话题,隔三差五就会在群里被翻出来讨论一次。上周还有个同事线上处理一个订单超时问题,排查到最后发现是ZonedDateTime序列化后时区丢了,用户在下单当天晚上看到的时间整整差了8个小时。这类问题几乎每个做Java开发的人都遇到过…

2026/10/9 0:00:49 阅读更多 →
EasyTier实践:从NAT穿透到子网代理的异地组网部署与排错

EasyTier实践:从NAT穿透到子网代理的异地组网部署与排错

前几个月我手头有好几台机器需要互相访问:办公室台式机、家里 NAS、还有一台云主机。如果只是偶尔传个文件倒还好,问题是工作场景经常要在几处环境之间来回切换,每次都先登录跳板机再层层代理,实在折腾。我先后试过端口映射、自建…

2026/10/9 0:00:49 阅读更多 →
AI Agent工程实战:从七要素到七个决策点的系统设计指南

AI Agent工程实战:从七要素到七个决策点的系统设计指南

AI Agent 这个词在过去一年里被反复提及,但真正动手搭过一套能跑起来的 Agent 系统的人都知道,从"知道它是什么"到"让它稳定干活"之间隔着一整套工程决策。我前后参与过几个 Agent 项目的落地,从最初用现成框架拼装&…

2026/10/9 0:01:50 阅读更多 →

周新闻

KT148A语音芯片外挂8002D功放的工程实践指南

KT148A语音芯片外挂8002D功放的工程实践指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/8 15:26:32 阅读更多 →
LLC谐振变换器增益公式推导:从FHA等效到完整归一化表达式

LLC谐振变换器增益公式推导:从FHA等效到完整归一化表达式

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/8 15:26:40 阅读更多 →
ARM架构深度解析:从RISC设计理念到交叉编译实战

ARM架构深度解析:从RISC设计理念到交叉编译实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/8 10:10:36 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/8 21:13:17 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/8 15:26:17 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/7 13:34:55 阅读更多 →