Revive Adserver 日志查看器分页参数漏洞:无限制setPerPage导致资源耗尽与数据泄露

报告揭示了Revive Adserver中一个严重的安全漏洞。攻击者可利用未经验证的分页参数`setPerPage`,通过提交极大数值导致数据库负载激增、应用响应缓慢甚至崩溃,并可借此批量获取大量日志数据。

漏洞报告 #3413890:无限制 setPerPage 参数导致巨大结果集 / 资源耗尽 / 批量日志获取

报告人: vidang04 提交时间: 2025年11月6日 上午8:45 (UTC) 报告至: Revive Adserver

描述

setPerPage 查询参数用于控制日志查看器的分页,但在服务器端未经过验证或限制。攻击者可以提供一个极大的数值(例如 setPerPage=100000000000000000),应用程序在构建结果集时会尝试满足此值。此行为可能导致数据库负载过重、响应数据庞大、应用程序变慢,并可能实现日志条目的批量获取。

复现步骤

  1. 以具有日志查看权限的用户身份认证。
  2. setPerPage 的正常取值范围是10到100。将 setPerPage 的值设为300后,网站仍会返回结果(参见附图)。

这是 setPerPage 值在允许范围内的典型界面:

影响

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

时间线与讨论

  • 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 应能修复应用程序多个部分的问题,并计划在下周发布安全修复版本。
  • 2025年11月11日 上午9:33 (UTC): mbeccati 将严重等级从高 (7.5) 调整为中 (6.5),以反映攻击需要一定权限。
  • 约7天前: mbeccati 更新了弱点分类,增加了“无限制或节流的资源分配”,移除了“不受控制的资源消耗”。
  • 约7天前: mbeccati 更新了CVE引用为 CVE-2025-55128
  • 约7天前: mbeccati 请求并公开了此报告。公开链接:https://www.revive-adserver.com/security/revive-sa-2025-004/

报告摘要

  • 报告ID: #3413890
  • 状态: 已解决
  • 严重性: 中 (6.5)
  • 公开时间: 2025年11月19日 下午1:00 (UTC)
  • 弱点: 无限制或节流的资源分配
  • CVE ID: CVE-2025-55128
  • 奖金: 无
comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计