CVE-2026-21696CVE-2026-21696是Pterodactyl Wings服务器控制平面中的一个中等严重性拒绝服务漏洞。该漏洞存在于Wings 1.7.0至1.12.0之前的版本中,源于 Wings 在处理活动日志条目时未考虑SQLite数据库的最大参数限制。当Wings尝试在单个SQL查询中删除超过32766条活动日志记录时,会触发SQL logic error (too many SQL variables),导致删除操作失败。由于这些条目无法被删除,Wings会无限循环地将相同的活动数据重复上传到面板,每次都会增加新的活动记录,最终导致面板数据库服务器的磁盘空间被耗尽,造成服务中断。攻击者可以利用此漏洞通过低权限账户触发大量活动日志的生成,从而实施拒绝服务攻击。
该漏洞的技术根源在于SQLite 3.32.0引入的32766个SQL变量限制。当Wings处理活动日志时,会将已处理的日志条目从本地SQLite数据库中删除。然而,在activity_cron.go和sftp_cron.go的实现中,删除操作使用单个SQL DELETE语句配合IN子句包含所有待删除记录的主键。当活动日志数量超过32766条时,SQLite会抛出SQL logic error: too many SQL variables (1)错误,导致删除操作完全失败且不回滚任何记录。被标记为已处理的日志条目永久保留在数据库中,但由于状态已被更新,这些条目在后续cron任务运行时会被重新读取、处理和发送。由于每次处理都会累积新的活动记录,数据量呈指数级增长,最终导致面板数据库所在服务器的磁盘空间被完全占用。攻击者只需创建一个能产生大量活动日志的场景(如频繁的SFTP连接、文件操作等),即可在cron任务运行时触发该漏洞。