Revive Adserver | 报告 #3413890 - 无限制的setPerPage参数允许获取超大结果集 / 资源耗尽 / 批量日志获取
报告时间: 2025年11月6日,上午8:45 (UTC) 报告者: vidang04 报告给: Revive Adserver 状态: 已解决 严重性: 中等 (CVSS 6.5) CVE ID: CVE-2025-55128 弱点: 未限制或节流的资源分配
漏洞描述
setPerPage 查询参数用于控制日志查看器的分页功能,但在服务器端未进行验证或设置上限。攻击者可以提供一个极大的数值(例如 setPerPage=100000000000000000),应用程序在处理时会尝试兑现该值来构建结果集。此行为可能导致数据库工作负载过大、生成超大响应、应用程序变慢,并可能实现日志条目的批量获取。
复现步骤
-
以一个拥有日志查看权限的用户身份进行身份验证。
-
setPerPage的正常取值范围是10到100。但将setPerPage的值设置为300时,站点仍然会返回结果。截图显示了当
setPerPage值在允许范围内时的典型界面。
影响
- 如果服务器尝试查询/渲染极大数量的记录(N),将导致内存/CPU/数据库I/O急剧增加,进而可能引发超时、内存溢出(OOM)甚至崩溃(拒绝服务,DoS)。
- 如果后端在一个响应中返回所有数据,将导致带宽和时间负载过重,浏览器客户端可能卡死。
时间线与处置过程
- 2025年11月6日,上午9:47 (UTC): Revive Adserver 团队成员 mbeccati 评论表示,虽然有修复的必要性,但由于拥有合法账户的用户可以通过多种方式使服务器过载,因此对该问题是否构成漏洞持保留态度。
- 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)”,以反映攻击需要一定权限(认证用户)。
- 2025年11月19日,上午6:55 (UTC): 弱点更新为“未限制或节流的资源分配”。
- 2025年11月19日,下午1:00 (UTC): 报告被公开披露,安全公告链接发布。
后续沟通
报告披露后,报告者 vidang04 就公开公告中的名字拼写错误提出了更正请求,并确认了正确的署名应为 “Dang Hung Vi”。Revive Adserver 团队成员 mbeccati 对此表示歉意,并说明虽然安全公告发布前已发现错误,但CVE条目信息仍有误,已请求修改。