漏洞概述 在 的 Dashboard 模块和 OAuth 端点中,存在对象级授权缺失的问题。具体包括以下三个相关授权问题: 1. 水平越权(Horizontal IDOR):Staff 用户通过修改模块主键可以访问和修改其他 Staff 用户的 Dashboard 模块。 2. 未认证的 OAuth 凭证撤销:Google Analytics 和 Yandex Metrika 的 OAuth 凭证撤销端点可以在没有认证或所有权检查的情况下被调用。 3. OAuth 状态滥用:Google Analytics 和 Yandex Metrika 的 OAuth 流程使用模块主键作为 ,这可能导致攻击者绑定受害者的第三方凭证到其自己的模块。 影响范围 Dashboard 模块水平 IDOR:Staff 用户可以访问和修改其他 Staff 用户的 Dashboard 模块。 未认证的 OAuth 凭证撤销:任何人都可以撤销其他用户的 OAuth 凭证。 OAuth 状态滥用:攻击者可以利用此漏洞将受害者的第三方凭证绑定到自己的模块。 修复方案 1. 作用域 Dashboard 模块更新/查询操作:确保这些操作仅对当前用户有效。 2. 验证模块所有权:在每次更新、撤销、授权和回调操作前验证模块的所有权。 3. 要求认证 Staff 访问撤销端点:确保只有认证的 Staff 用户才能访问撤销端点。 4. 使撤销端点仅支持 POST 并受 CSRF 保护:增加安全性。 5. 使用不可预测的 OAuth 值:绑定到会话、当前用户、模块主键和过期时间。 POC 代码 Finding 1: Dashboard module horizontal IDOR 相关代码: Proof of concept: Finding 2: Unauthenticated OAuth credential revoke 相关代码: Proof of concept: Finding 3: OAuth state misuse 相关代码: Proof of concept: 1. Attacker staff user creates their own Google Analytics or Yandex Metrika dashboard module and notes module pk A. 2. Attacker causes a victim to visit or . 3. Victim completes the third-party OAuth flow. 4. The callback resolves module A from the value and stores the victim's third-party token in the attacker's module.