Revive Adserver漏洞分析:未受限制的setPerPage参数导致资源耗尽与大规模日志泄露

报告详细描述了Revive Adserver日志查看器中存在的安全漏洞。攻击者通过操纵setPerPage查询参数并传入极大数值,可导致数据库负载过高、应用响应缓慢,并可能一次性获取海量日志条目,造成资源耗尽与数据泄露风险。

Revive Adserver 漏洞报告 #3413890 - 未受限制的setPerPage允许获取巨大结果集 / 资源耗尽 / 批量日志检索

报告者: vidang04 报告日期: 2025年11月6日 上午8:45 (UTC) 状态: 已解决 严重性: 中 (6.5) CVE ID: CVE-2025-55128 弱点分类: 无限制或节流的资源分配

漏洞描述

setPerPage查询参数用于控制日志查看器的分页功能,但该参数在服务器端未经验证或设置上限。攻击者可以提供一个极大的数值(例如setPerPage=100000000000000000),应用程序在构建结果集时会尝试满足该值。此行为可能导致:

  • 数据库负载过重
  • 响应数据量巨大
  • 应用程序响应缓慢
  • 可能实现日志条目的批量检索

复现步骤

  1. 以具有日志查看权限的用户身份进行身份验证。
  2. setPerPage参数的典型值范围为10到100。
  3. setPerPage的值设置为300时,网站仍然会返回结果。

相关截图(已省略具体文件名与ID):

  • 展示了setPerPage设置为允许范围内的典型界面。
  • 展示了设置超出范围值(如300)后的结果界面。

影响

  • 如果服务器尝试查询/渲染极大的N条记录 → 内存/CPU/数据库I/O急剧增加 → 可能导致超时、内存溢出(OOM)、崩溃(拒绝服务,DoS)。
  • 如果后端在单个响应中返回所有数据 → 带宽和时间负载沉重,浏览器客户端可能卡死。

沟通时间线

  • 2025年11月6日 上午9:47 (UTC) - mbeccati (Revive Adserver 员工) 发表评论:

    感谢报告。我对这个报告有点犹豫。修复它固然是好事,但如果用户在一个安装实例上拥有合法账户,可以做很多事情让服务器过载,我很难认为这可以被称为一个漏洞。

  • 2025年11月6日 上午9:57 (UTC) - vidang04 发表评论:

    在日志查看器中,无论是普通用户还是管理员都无法删除日志条目,随着时间的推移,日志量可能会无限增长。这使得经过身份验证的用户可以假借“检查日志”之名,通过操纵setPerPage合法地请求非常大的结果集,从而在一次操作中批量检索大量数据。

  • 2025年11月11日 上午8:55 (UTC) - mbeccati 发表评论:

    感谢您的耐心等待。补丁的改动比两行代码的修复要大。我也在检查其他使用分页器的脚本,看是否存在类似问题。

  • 2025年11月11日 上午9:32 (UTC) - mbeccati 将报告状态更改为“已解决”:

    附件补丁文件h1-3413890.patch应能修复应用程序多个部分的问题。除非计划有变,我们预计下周发布一个安全修复版本。

  • 此后,项目方更新了严重性等级(从7.5降至6.5,以反映攻击需要一定权限)、弱点分类,并分配了CVE-2025-55128。

  • 2025年11月19日,报告被公开披露。

附加说明

报告披露后,报告者vidang04就漏洞公告中的署名问题(请求更正为“Dang Hung Vi”)与项目方进行了后续沟通,项目方确认CVE条目存在错误并已请求修改。

comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计