CVE-2026-111441: HLL 反序列化 lenTotal/lenUsed 校验缺失导致堆越界写

Published Oct 19, 2026
·
Updated

在 openGauss-server 的 src/gausskernel/cbb/utils/hll/hll.cpp 中,内置函数 HllObjectUnpack() 存在长度校验缺陷。该函数从用户提供的 packed HLL 解析 lenUsed 与 lenTotal 后,仅检查输入长度足以覆盖 HLLHEADSIZE + lenUsed,随后按 lenTotal 分配缓冲区、按 lenUsed 调用 memcpys() 拷贝输入,既未校验 lenTotal >= lenUsed,也将 memcpys() 目标大小写成 lenUsed 而非实际分配的 lenTotal,导致安全拷贝无法拦截越界写。hllin()、hllprint()、hllcardinality() 等 SQL 入口会走同一解包路径。因此,普通数据库连接用户只需构造 lenTotal 小于 lenUsed 的畸形 packed HLL(例如经 ::hll 进入 hllin()),即可触发服务端堆越界写,存在内存破坏风险。此问题随 packed HLL 解包函数 HllObjectUnpack() 进入代码,v2.1.0 起即存在。受影响版本包括 2.1.0、3.0.x、3.1.x、5.0.x、5.1.0、6.0.x,以及 7.0.0-RC1、7.0.0-RC2、7.0.0-RC3。该问题已在 7.0.0-LTS 版本修复,通过在 HllObjectUnpack() 中补齐 lenUsed <= lenTotal 校验,并将 memcpys() 的目标大小改为实际分配的 lenTotal。修复 PR 见 https://gitcode.com/opengauss/openGauss-server/pull/9380 。

Affected Software

1 affected component
openGauss openGauss-server=2.1.0, =3.0.x, =3.1.x, =5.0.x, =5.1.0, =6.0.x, =7.0.0-RC1, =7.0.0-RC2, =7.0.0-RC3

Event History

Oct 19, 2026
CVE Published
via MITRE·02:31 AM
Data Sourced
via MITRE·02:31 AM
DescriptionSeverityWeakness
Data Sourced
via NVD·03:16 AM
DescriptionSeverityWeakness

Frequently Asked Questions

1

攻击者需要具备哪些权限或条件?

攻击者只需拥有普通数据库连接用户权限,无需用户交互。其需要提交构造为 lenTotal 小于 lenUsed 的畸形 packed HLL 数据,例如通过 ::hll 触发 hll_in() 处理。

2

哪些 SQL 操作可能触发易受攻击的代码路径?

hll_in()、hll_print() 和 hll_cardinality() 等 SQL 入口会使用同一 HllObjectUnpack() 解包路径。处理攻击者可控的 packed HLL 数据的其他同一路径调用也会受到影响。

3

如何判断部署是否可能受影响?

已列出的受影响版本包括 2.1.0、3.0.x、3.1.x、5.0.x、5.1.0、6.0.x,以及 7.0.0-RC1、7.0.0-RC2 和 7.0.0-RC3。代码层面可检查 HllObjectUnpack() 是否校验 lenUsed <= lenTotal,并确认 memcpy_s() 的目标大小是否使用实际分配的 lenTotal。

4

已知修复是什么?

该问题已在 7.0.0-LTS 修复。修复在 HllObjectUnpack() 中增加 lenUsed <= lenTotal 校验,并将 memcpy_s() 的目标大小改为 lenTotal。

Contact

SecAlerts Pty Ltd.
132 Wickham Terrace
Fortitude Valley,
QLD 4006, Australia
info@secalerts.co
By using SecAlerts services, you agree to our services end-user license agreement. This website is safeguarded by reCAPTCHA and governed by the Google Privacy Policy and Terms of Service. All names, logos, and brands of products are owned by their respective owners, and any usage of these names, logos, and brands for identification purposes only does not imply endorsement. If you possess any content that requires removal, please get in touch with us.
© 2026 SecAlerts Pty Ltd.
ABN: 70 645 966 203, ACN: 645 966 203