Revive Adserver 报告 #3413890 - 不受限制的 setPerPage 允许超大结果集 / 资源耗尽 / 批量日志提取
报告ID: #3413890 状态: 已解决 严重性: 中 (6.5) CVE ID: CVE-2025-55128
描述
setPerPage查询参数用于控制日志查看器的分页,但服务器端未对其进行验证或限制。攻击者可以提供一个极大的数值(例如 setPerPage=100000000000000000),应用程序在构建结果集时会尝试满足该值。此行为可能导致数据库负载过重、响应数据过大、应用程序变慢,并可能实现日志条目的批量提取。
复现步骤
- 以具有日志查看权限的用户身份认证。
setPerPage的常规取值范围是 10 到 100。将setPerPage的值设置为 300 时,网站仍然返回结果(见下方截图)。
 图1:setPerPage参数为300时的响应截图
 图2:应用程序处理超大分页参数时的界面状态
 图3:setPerPage值在正常允许范围内(10-100)的典型界面
影响
- 拒绝服务 (DoS):如果服务器尝试查询/渲染极大的 N 条记录,将导致内存、CPU、数据库 I/O 急剧增加,可能引发超时、内存不足或崩溃。
- 客户端/带宽压力:如果后端在单个响应中返回所有数据,将产生巨大的带宽和时间消耗,可能导致浏览器客户端无响应。
- 数据批量提取:攻击者可能通过此漏洞,在一次操作中批量检索大量日志数据。
时间线与讨论
- 2025年11月6日,UTC 08:45:漏洞报告者
vidang04提交报告。 - 2025年11月6日,UTC 09:47:Revive Adserver 团队成员
mbeccati发表评论,表示虽然修复此问题是好事,但由于拥有合法账户的用户已有多种方式可对服务器造成负载,因此对此问题是否构成漏洞持保留态度。 - 2025年11月6日,UTC 09:57:
vidang04进一步指出,在日志查看器中,无论是普通用户还是管理员都无法删除日志条目,随着时间的推移,日志量会无限增长。这使得认证用户有可能以“检查日志”为名,通过操控setPerPage合法地请求非常大的结果集,从而实现大量数据的单次操作批量提取。 - 2025年11月11日,UTC 07:36:
vidang04询问进展。 - 2025年11月11日,UTC 08:55:
mbeccati回复,表示补丁的规模超出了简单的两行代码修复,并且正在检查其他使用分页器的脚本是否存在类似问题。 - 2025年11月11日,UTC 09:32:
mbeccati关闭报告并将状态改为“已解决”。提供了补丁文件h1-3413890.patch(F4990259) 以修复应用程序中多个部分的问题,并计划在下周发布安全修复版本。 - 2025年11月11日,UTC 09:33:
mbeccati将严重性从高 (7.5) 更新为中 (6.5),因为攻击需要一定权限。 - 约13天前:
- 更新弱点为“未限制的资源分配”,移除“不受控的资源消耗”。
- 更新 CVE 引用为 CVE-2025-55128。
- 请求并最终披露了此报告。公开披露链接:Revive Adserver 安全公告 SA-2025-004
- 6天前:
vidang04就 CVE 条目中其姓名错误的问题提出更正请求,并提供了相关截图证据。 - 5天前:
mbeccati回复道歉,表示在发布安全公告前已发现错误,但 CVE 条目仍有误,已请求编辑。
总结
此漏洞属于“未限制的资源分配”弱点,已在后续版本中通过应用补丁得到修复。它强调了在服务器端对所有用户输入(包括控制分页、排序等功能的参数)进行严格验证和限制的重要性,以防止资源耗尽攻击和潜在的数据泄露。