
原文标题:BACScan: Automatic Black-Box Detection of Broken-Access-Control Vulnerabilities in Web Applications
原文作者:Fengyu Liu, Yuan Zhang, Enhao Li, Wei Meng, Youkun Shi, Qianheng Wang, Chenlin Wang, Zihan Lin, Min Yang原文链接:https://doi.org/10.1145/3719027.3744825发表会议:ACM CCS 2025笔记作者:王昌坤@安全学术圈主编:黄诚@安全学术圈
1 研究背景
越权访问控制(Broken-Access-Control,BAC)漏洞连续多年位居 OWASP Top 10 最严重风险之列。攻击者可借此绕过访问控制机制,读取、修改甚至删除他人的敏感数据。现有黑盒检测普遍依赖"响应相似度判定器":配置攻击者与受害者两个账号,用攻击者会话重放受害者专属页面的请求,若响应内容高度相似就判定存在越权。
这个判定器隐含一个错误假设——越权请求的直接响应总会携带"攻击是否成功"的证据。这一假设对读型越权(RBAC,如 SELECT)成立:泄露的数据直接出现在响应里。但对修改型越权(MBAC,如 INSERT/UPDATE/DELETE)完全失效:修改请求的直接响应往往不反映修改是否成功。论文测得,响应相似度判定器对 MBAC 检测的假阳性率高达 70.97%、假阴性率高达 86.96%。本文要解决的问题是:能否在黑盒下,通过观察修改操作在别处的反馈,可靠判断未授权修改是否发生。

2 核心方法与系统设计
2.1 反馈驱动判定器与 IDDG
论文的关键观察是:修改页所修改的数据,通常会显示在某个专门"查看数据"的状态页上。例如提交订单页改动数据,订单列表页展示该数据——检查订单列表页就能判断订单提交是否成功。据此,BACScan 的反馈驱动判定器分两步:先用受害者账号爬取应用、识别展示修改相关数据的状态页;再用攻击者账号重放修改请求、重访状态页获取反馈,若数据被未授权改动则判定漏洞。
为表达这种依赖关系,论文提出跨页数据依赖图(Inter-page Data Dependency Graph,IDDG),用跨页数据依赖边(IDDE)连接修改页与状态页,并记录操作类型(INSERT/UPDATE/DELETE)。论文沿用 Black Widow 的约定:处理 GET 请求的读页视为状态页,处理 POST/PUT/DELETE 请求的页视为修改页。
2.2 两大挑战
实现反馈驱动判定器需要解决两个挑战:
如何准确、高效地识别提供反馈的状态页。 黑盒下只有 HTTP 请求与响应可用,而现代 Web 应用有成千上万个请求,逐一分析开销巨大。
如何把应用导航到正确状态以收集有效反馈。 删除操作可能永久移除数据,导致重放时目标数据已不存在;修改请求还可能携带 CSRF 令牌等参数,导致重放失败。
2.3 BACScan 系统架构
BACScan 由 IDDG 构建模块与漏洞检测模块组成,构建 IDDG 分四步:
页面探索:爬虫通过提取静态 URL、提交表单、交互 iframe、触发 JavaScript 事件四类动作探索页面,生成导航图。
令牌插入:拦截发往修改页的请求,把除日期、邮箱等结构化参数外的值替换为 6 位小写伪随机令牌。
层级遍历:用评分算法(URL 相似度 + 请求参数相关性 + 导航距离,权重 0.4/0.3/0.3)优先访问最可能提供反馈的页面,找到令牌后建立 IDDE 边。
重放与验证:用攻击者会话重放修改请求,沿 IDDE 重访状态页,依据令牌的出现/消失判定漏洞。
检测阶段,MBAC 用反馈驱动判定器:INSERT 看新令牌出现、UPDATE 看新旧令牌更替、DELETE 看旧令牌消失;对 DELETE 还先回节点簇重新插入令牌再重放,避免"删除已不存在的数据"。RBAC 则沿用三步式响应相似度判定器(阈值 0.7)。


3 实验设计与主要结果
3.1 数据集与有效性

论文在 20 个流行开源 Web 应用上评估:14 个测试集(7 个 PHP + 7 个 Java)与 6 个 ground-truth 集(含 44 个已知漏洞,24 个 MBAC + 20 个 RBAC)。
BACScan 共检出 89 个 BAC 漏洞,其中 54 个为 0-day、35 个为已知漏洞;截至写作时 39 个被开发者确认、35 个获得 CVE。在 ground-truth 集上,MBAC 检测达到**精确率 100.00%、召回率 83.33%**,RBAC 达到精确率 83.33%、召回率 75.00%。8 个假阳性主要来自响应相似度算法的固定阈值失效,9 个假阴性中 2 个由 IDDG 构建不完整、7 个由爬虫覆盖不足引起。

3.2 与基线对比
在统一漏洞集上对比 EvoCrawl(NDSS 2025 SoTA)与 BurpSuite(含 Autorize 扩展),BACScan 在 MBAC 检测上大幅领先:**MBAC 精确率 100.00%、召回率 92.98%**,而 EvoCrawl 为 51.52%/29.82%、BurpSuite 为 62.00%/54.39%。RBAC 上 BACScan 也保持领先或接近(81.82%/87.80%)。基线的假阳性与假阴性根源于响应相似度判定的固有缺陷:许多修改操作返回与结果无关的响应,或返回与请求者身份绑定的内容,导致相似度误判。

3.3 效率与 IDDG 质量
BACScan 平均 1.1 小时完成单应用检测,而禁用层级策略、随机选页的 BACScan-Random 平均需 2.3 小时,性能下降 **109.10%。BACScan 共构造 1135 个 IDDE,随机抽样 10%(113 个)人工验证仅 4 个错误(3.54%**)。值得注意的是,DELETE 型 IDDE 只占 31.40%,但 DELETE 型 MBAC 占检出漏洞的 **48.89%**——开发者常用数据索引直接实现删除而遗漏授权检查,凸显了重放修复策略的价值。

4 总结
本文揭示了一类不同于传统恶意 Server 攻击的越权检测难题:修改型越权漏洞的"修改结果"并不出现在修改请求的直接响应里,而是显现在与之有数据依赖的状态页上。BACScan 用一张跨页数据依赖图把"看状态页反馈"做成了可工程化的黑盒判定器,在 20 个真实应用上检出 89 个漏洞(54 个 0-day、35 个 CVE),改型检测的精确率与召回率显著超越现有基线。
论文的主要局限在于数据集只覆盖便于部署的开源应用,部分假阴性来自爬虫覆盖不足与结构化参数无法替换令牌。但这些问题并未削弱核心结论。本文最重要的启示是:黑盒安全检测不能只盯着操作请求的直接响应,还必须分析跨页面、跨操作的数据依赖与副作用反馈,才能真正覆盖修改类越权漏洞。
5 主要贡献
提出反馈驱动判定器:论文将改型越权检测的判断信号从"修改请求的直接响应"转移到"操作相关状态页的反馈",用令牌的插入/消失可靠判定未授权修改是否成功。
引入跨页数据依赖图 IDDG:用数据依赖边连接修改页与状态页,为反馈驱动判定器提供可工程化的状态页定位依据。
设计层级遍历评分算法:以 URL 相似度、参数相关性、导航距离三个因子优先访问最可能提供反馈的页面,把单应用检测时间从随机遍历的 2.3 小时压到 1.1 小时。
验证黑盒改型漏洞检测的现实可行性:在 20 个真实应用上检出 89 个漏洞、54 个 0-day 与 35 个 CVE,改型检测精确率 100%,证明反馈驱动判定器不是理论设想。
附录
论文承诺在发表后开源其原型系统。当前未公开代码仓库地址,可关注原文 DOI 页面获取后续开源链接。
相关资源:
原文 DOI:https://doi.org/10.1145/3719027.3744825
安全学术圈招募队友-ing
有兴趣加入学术圈的请联系 secdr#qq.com
声明:本文来自安全学术圈,版权归作者所有。文章内容仅代表作者独立观点,不代表安全内参立场,转载目的在于传递更多信息。如有侵权,请联系 anquanneican@163.com。