Odin压缩组件因缺乏边界检查允许越界写入导致内存破坏
攻击者可通过构造恶意的压缩数据流(如截断的DEFLATE流或特定模式的零字节流),触发zlib.inflate或gzip.load函数在内部缓冲区扩容至COMPRESS_OUTPUT_ALLOCATE_MAX上限后继续执行写入操作,由于grow_buffer函数在达到上限时未返回错误且write_byte等底层写入过程缺失后续长度校验并禁用了边界检查,导致数据被写入堆内存块之外,造成堆缓冲区溢出,进而引发拒绝服务、任意代码执行或敏感信息泄露。
组件
Odin是一种系统级编程语言及其标准库集合,其core/compress模块旨在为应用程序提供高效的流式与缓冲式数据压缩解压功能,该组件通过动态内存管理机制处理可变长度的输入输出数据流,核心设计目标是实现高性能的Zlib及Gzip协议兼容处理,并在资源受限环境中保持低开销的数据转换能力。
类型
Out-of-bounds Write (CWE-787)
仓库
处置建议
- 修复此类漏洞需在缓冲区扩容逻辑中增加严格的上限校验,确保当当前长度达到预设最大值时立即返回错误而非静默失败;同时在所有底层写入操作前重新验证剩余空间是否充足,若空间不足则终止处理并上报错误;此外应移除关键的#no_bounds_check编译指令以启用默认运行时安全检查。
php-src pdo_pgsql驱动因预准备语句列数变化引发越界读取导致服务崩溃
当启用PDO::ATTR_EMULATE_PREPARES模式时,若预准备语句在第二次执行返回的列数多于首次执行,内部数组S->cols和stmt->columns仍保持初始大小分配,导致索引越界读取。攻击者可通过并发执行ALTER TABLE添加列或切换视图改变结果集结构,触发zend_symtable_update使用悬空指针,造成堆缓冲区溢出,进而引发进程崩溃或潜在的信息泄露,严重影响系统可用性。
组件
php-src是PHP语言的源代码仓库,其pdo_pgsql扩展作为核心数据访问组件,负责实现PHP应用程序与PostgreSQL数据库之间的标准化连接与交互。该模块采用面向对象架构设计,旨在提供高效的预处理语句执行、参数绑定及结果集解析功能,确保在复杂业务逻辑中能够安全、稳定地处理大规模并发数据库查询请求,是企业级Web应用后端数据持久层的关键依赖。
类型
Out-of-bounds Read (CWE-125)
仓库
处置建议
- 建议禁用模拟预处理模式以利用原生驱动保护,或在代码层面严格校验动态变化的结果集元数据,确保每次执行前重新分配并验证列描述数组的大小与内存边界。