漏洞概述 该漏洞涉及 库中的 FlateDecode 参数和图像解码限制。具体问题是某些过滤器(如 FlateDecode、LZWDecode、RunLengthDecode 和 JBIG2Decode)在处理数据时可能产生较大的压缩比,导致内存使用量过大,从而引发安全问题。 影响范围 受影响的过滤器:FlateDecode、LZWDecode、RunLengthDecode、JBIG2Decode。 默认限制: - 对于 FlateDecode、LZWDecode、RunLengthDecode 过滤器,最大输出长度默认为 75 MB。 - 对于 JBIG2Decode 过滤器,最大输出长度默认为 75 MB。 - 对于所有流,最大允许的 字段值默认为 75 MB。 - 对于所有数组基流,最大允许输出长度默认为 75 MB。 - 对于 JBIG2Decode 过滤器,调用外部 工具可以被禁用。 - 对于 FlateDecode 过滤器,尝试恢复的字节数默认为 5 MB。 - 对于 FlateDecode 过滤器,最大缓冲区大小默认为 75 MB。 - 对于 FlateDecode 过滤器,最大列数默认为 256,000。 - 对于 FlateDecode 过滤器,最大行长度默认为 4 MB。 修复方案 1. 增加输出长度限制: - 在 中增加了以下常量: 2. 增加行数限制: - 在 中增加了行数限制: 3. 增加列数限制: - 在 中增加了列数限制: 4. 增加颜色值限制: - 在 中增加了颜色值限制: 5. 增加每组件位数限制: - 在 中增加了每组件位数限制: 6. 增加缓冲区大小限制: - 在 中增加了缓冲区大小限制: 7. 增加测试用例: - 在 中增加了测试用例,确保上述限制生效: POC 代码 以上总结涵盖了漏洞概述、影响范围、修复方案以及 POC 代码。