Revive Adserver | 报告 #3413890 - 未受限制的 setPerPage 参数允许获取超大结果集 / 资源耗尽 / 批量日志检索
报告时间: 2025年11月6日,上午8:45 (UTC) 报告人: vidang04 报告平台: HackerOne
描述
日志查看器中的 setPerPage 查询参数用于控制分页,但服务器端未对其进行验证或设置上限。攻击者可以提供一个极大的数值(例如 setPerPage=100000000000000000),应用程序在构建结果集时会尝试满足该值。此行为可能导致数据库工作负载过重、响应数据巨大、应用程序变慢,并可能实现日志条目的批量检索。
复现步骤
- 以有权访问日志查看功能的用户身份进行认证。
setPerPage参数的通常取值范围是 10 到 100。将其值设置为 300 后,网站仍会返回结果(参见下方截图)。
(此处为图片占位符,原报告包含多张图片:F4972841: image.png, F4972842: image.png, F4972847: image.png,展示了正常界面与参数被篡改后的界面对比。)
影响
- 如果服务器尝试查询/渲染一个极大的 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日,上午7:36 (UTC): vidang04 询问是否有进一步更新。
-
2025年11月11日,上午8:55 (UTC): mbeccati 回复:
感谢您的耐心等待。补丁比两行代码的修复要大一些。我也在检查其他使用分页器的脚本,看看是否存在类似问题。
-
2025年11月11日,上午9:32 (UTC): mbeccati 将报告状态更改为“已解决”并关闭报告:
随附的补丁文件
h1-3413890.patch(F4990259) 应该能修复应用程序中多个部分的问题。除非计划有变,我们预计下周发布一个安全修复版本。 -
2025年11月11日,上午9:33 (UTC): mbeccati 将严重等级从 高 (7.5) 更新为 中 (6.5),并更新了CVSS评分以反映攻击需要一定权限。
-
约12天前: mbeccati 更新了漏洞类型,从“不受控制的资源消耗”改为“资源分配无限制或无限流”,并添加了CVE参考编号
CVE-2025-55128。随后请求并公开了此报告(公开链接:https://www.revive-adserver.com/security/revive-sa-2025-004/)。 -
4天前: vidang04 就CVE披露中的名字拼写错误提出了更正请求,希望被署名为 “Dang Hung Vi”。mbeccati 随后承认了错误并已请求编辑。
报告摘要
- 报告 ID: #3413890
- 状态: 已解决
- 严重性: 中 (6.5)
- 弱点类型: 资源分配无限制或无限流
- CVE ID: CVE-2025-55128
- 公开日期: 2025年11月19日,下午1:00 (UTC)
- 赏金: 无