Revive Adserver 分页参数无限制漏洞导致资源耗尽与大日志提取

本文披露了Revive Adserver中一个与日志查看器相关的安全漏洞。攻击者通过操纵未经验证的`setPerPage`查询参数,可请求超大分页结果集,从而导致数据库资源耗尽、应用响应缓慢或崩溃,并可能实现大量日志数据的批量提取。

Revive Adserver 报告 #3413890 - 不受限制的 setPerPage 允许超大结果集 / 资源耗尽 / 批量日志提取

报告ID: #3413890 状态: 已解决 严重性: 中 (6.5) CVE ID: CVE-2025-55128

描述

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

复现步骤

  1. 以具有日志查看权限的用户身份认证。
  2. setPerPage 的常规取值范围是 10 到 100。将 setPerPage 的值设置为 300 时,网站仍然返回结果(见下方截图)。

![日志查看器界面截图,显示setPerPage参数为300时的结果](F4972841: image.png) 图1:setPerPage参数为300时的响应截图

![应用程序尝试处理超大分页参数的截图](F4972842: image.png) 图2:应用程序处理超大分页参数时的界面状态

![setPerPage值在允许范围内时的典型界面](F4972847: image.png) 图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:57vidang04 进一步指出,在日志查看器中,无论是普通用户还是管理员都无法删除日志条目,随着时间的推移,日志量会无限增长。这使得认证用户有可能以“检查日志”为名,通过操控 setPerPage 合法地请求非常大的结果集,从而实现大量数据的单次操作批量提取。
  • 2025年11月11日,UTC 07:36vidang04 询问进展。
  • 2025年11月11日,UTC 08:55mbeccati 回复,表示补丁的规模超出了简单的两行代码修复,并且正在检查其他使用分页器的脚本是否存在类似问题。
  • 2025年11月11日,UTC 09:32mbeccati 关闭报告并将状态改为“已解决”。提供了补丁文件 h1-3413890.patch (F4990259) 以修复应用程序中多个部分的问题,并计划在下周发布安全修复版本。
  • 2025年11月11日,UTC 09:33mbeccati 将严重性从高 (7.5) 更新为中 (6.5),因为攻击需要一定权限。
  • 约13天前
    • 更新弱点为“未限制的资源分配”,移除“不受控的资源消耗”。
    • 更新 CVE 引用为 CVE-2025-55128。
    • 请求并最终披露了此报告。公开披露链接:Revive Adserver 安全公告 SA-2025-004
  • 6天前vidang04 就 CVE 条目中其姓名错误的问题提出更正请求,并提供了相关截图证据。
  • 5天前mbeccati 回复道歉,表示在发布安全公告前已发现错误,但 CVE 条目仍有误,已请求编辑。

总结

此漏洞属于“未限制的资源分配”弱点,已在后续版本中通过应用补丁得到修复。它强调了在服务器端对所有用户输入(包括控制分页、排序等功能的参数)进行严格验证和限制的重要性,以防止资源耗尽攻击和潜在的数据泄露。

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