CVE-2026-32874UltraJSON 是一个用纯 C 编写的快速 JSON 编解码器,适用于 Python 3.7+。在 5.4.0 至 5.11.0 版本中,存在一个累积性内存泄漏漏洞。当解析超出特定范围的大整数时,无论解析成功与否,都会泄露内存。攻击者可通过发送特制的恶意 JSON 数据导致服务内存耗尽,从而引发拒绝服务攻击。该问题已在 5.12.0 版本中修复。
该漏洞源于 UltraJSON 在处理 JSON 中的大整数(即超出 [-2^63, 2^64 - 1] 范围的整数)时的逻辑缺陷。解析器会为整数的字符串形式分配内存,但在某些错误处理路径或特定输入条件下未能正确释放该内存。具体来说,泄露的内存包括整数字符串副本及一个 NULL 字节。由于泄漏是累积的,且不受 Python `sys.get_int_max_str_digits()` 限制的有效约束(即使被拒绝也会发生泄漏),攻击者可以通过发送包含大量此类大整数的 JSON 载荷,不受限制地消耗服务器内存,最终导致系统崩溃或服务不可用(DoS)。任何调用 `ujson.loads()` 等函数处理不可信输入的服务均受影响。