Welcome To openEuler Community
Hey @fundawang , thanks for your contribution to the community.
Bot Usage Manual
I'm the Bot here serving you. You can find the instructions on how to interact with me at Here . That means you can comment below every pull request or issue to trigger Bot Commands. You can self-configure the PR merge rules for this repository. For more details, please refer to Here.
Contact Guide
If you have any questions, please contact the SIG: Base-service ,
and any of the maintainers: @dillon_chen, @licihua, @overweight, @shenyangyang, @xujing99, @zhujianwei001 ,
and any of the committers: @hubin1305, @jiayi0118, @luckky7, @lvying6, @znzju .


【任务 #85 · openEuler-26.09】CVE-2026-77214
1. 是否受影响
结论:受影响。
CVE-2026-77214 为 libexpat XML_ParseBuffer 堆缓冲区越界读漏洞:函数使用调用方提供的 len 直接执行 parser->m_bufferEnd += len,缺少容量校验,可越过堆缓冲区末尾。Step 4 源码影响性分析确认漏洞代码存在于本分支源码(XML_ParseBuffer 位于 lib/xmlparse.c:2437,漏洞模式 parser->m_bufferEnd += len; 位于 lib/xmlparse.c:2482,无容量校验),修复尚未合入,需要修复。
- openEuler-26.09(2.8.4):受影响
2. 修复补丁
上游社区修复补丁:
3. 补丁适配情况
[原补丁] backport-CVE-2026-77214.patch,已适配(adapted,置信度 high):
- 冲突原因:上游补丁 3 个 hunk 内容与本版本 baseline 零冲突,唯一冲突为路径前缀——diff 路径携带
expat/顶级前缀,而源码树根目录直接是 lib/、tests/,默认 -p1 应用报 No such file or directory。 - 适配内容:仅剥离
expat/路径前缀(expat/lib/xmlparse.c → lib/xmlparse.c,expat/tests/basic_tests.c → tests/basic_tests.c),与兄弟补丁的无前缀路径约定一致;diffstat 与 diff 按适配后真实改动重新生成,原始 header(From/From:/Date:/Subject/提交正文)逐字节保留,核心 46 行新增与原补丁逐字节一致,修复逻辑保真。 - 落地验证:适配补丁已成功
git apply到源码目录,git diff --stat确认 2 files changed, 46 insertions(+)(lib/xmlparse.c +5、tests/basic_tests.c +41),与原补丁统计一致。
无冲突项明细,无前置补丁。
4. PR 提交情况
已提交 PR:
- openEuler-26.09:https://gitcode.com/src-openeuler/expat/merge_requests/402
──────── 复制以下内容回填 issue ────────
受影响版本排查(受影响/不受影响):
1.openEuler-26.09(2.8.4): 受影响
ABI 变化:否
原因说明:
1.正常修复
────────────────────────────────────────


【任务 #85 · openEuler-24.03-LTS】CVE-2026-77214
1. 是否受影响
- 结论:受影响
- 原因:XML_ParseBuffer 在累加解析长度前缺少容量边界检查,漏洞行
parser->m_bufferEnd += len位于 expat 2.5.0 的 lib/xmlparse.c:2535,此前无任何容量校验,与 CVE 描述完全吻合。Step 4 源码影响性分析判为 NEEDS_ADAPTATION:核心修复 hunk(新增len <= EXPAT_SAFE_PTR_DIFF(m_bufferLim, m_bufferEnd)边界检查)可精确定位,插入点(2522-2524 行)逐字存在,所需符号齐备,且修复未预先应用(同类容量检查仅存在于 XML_GetBuffer:2586),漏洞代码存在于本版本源码,需要修复。 - 分支状态:
- openEuler-24.03-LTS(2.5.0):受影响
2. 修复补丁
3. 补丁适配情况
- 存在适配:
backport-CVE-2026-77214.patch(状态:adapted,置信度:high) - 冲突原因:原补丁 3 个 hunk 在 expat 2.5.0 上
git apply --check -p1/-p2均失败(0 个可直接应用),上游与 2.5.0 在路径前缀、代码行号及上下文上存在差异。 - 适配内容(核心修复逻辑完全保真,核心 +/- 变更行 45/46 逐字节一致,发明代码 0 行):
- 核心修复 hunk:路径前缀
expat/剥离为lib/xmlparse.c;插入点从上游行 2426 重定位到 2522(XML_ParseBuffer 状态 switch 收尾之后、// Detect and avoid integer overflow之前);尾随上下文由上游的if ((uint64_t)len > UINT64_MAX - ...调整为 2.5.0 的if (len > XML_INDEX_MAX - ...;5 行 CVE 修复代码(容量校验 →XML_ERROR_INVALID_ARGUMENT+XML_STATUS_ERROR)逐字节保留。 - 测试 hunk:从 2.5.0 尚不存在的
tests/basic_tests.c(上游 2.6.0 才拆分)重定位到tests/runtests.c:4029(锚点test_negative_len_parse_buffer的 END_TEST 之后);唯一核心行修改为删除set_subtest(...)诊断行(该符号在 2.5.0 全树不存在,纯诊断辅助、不影响断言语义),其余 39 行逐字节一致。 - 注册 hunk:重定位到 runtests.c 的
make_suite()(原make_basic_test_case),尾随上下文#if XML_CONTEXT_BYTES > 0→#if defined(XML_CONTEXT_BYTES),注册行逐字节保留。
- 核心修复 hunk:路径前缀
- 落地验证:适配补丁已
git apply到源码目录(相对 baseline 6d43b78 的git diff --stat:lib/xmlparse.c +5、tests/runtests.c +40,共 45 insertions,与补丁内容完全一致);gcc 语法检查通过;测试套件 352 checks / 0 failed。
4. 是否提交 PR
──────── 复制以下内容回填 issue ────────
受影响版本排查(受影响/不受影响):
1.openEuler-24.03-LTS(2.5.0): 受影响
ABI 变化:否
原因说明:
1.正常修复
────────────────────────────────────────


一、漏洞信息
漏洞编号:CVE-2026-77214
漏洞归属组件:expat
漏洞归属的版本:2.8.1
CVSS评分:
BaseScore:8.2 High
Vector:CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:L
漏洞简述:
libexpat before commit 13c5f63 contains a heap buffer over-read vulnerability in xmlparse.c. XML_ParseBuffer advances the parse buffer end with parser->m_bufferEnd += len using a caller-supplied length that is not validated against the allocated buffer size, so repeated XML_ParseBuffer calls move m_bufferEnd past the end of the heap allocation and subsequent parsing reads out of bounds. Reaching this path requires a parse buffer to already be present; otherwise XML_ParseBuffer returns XML_ERROR_NO_BUFFER. A buffer is present after a prior call to XML_GetBuffer, either directly (the common case) or indirectly through a prior XML_Parse call that allocates the buffer internally. The over-read discloses adjacent heap memory to the calling application, recovering heap pointers, libc function pointers, and code pointers sufficient to defeat ASLR and build further exploitation primitives.
漏洞公开时间:2026-10-07 23:17:53
漏洞创建时间:2026-10-06 16:59:48
漏洞详情参考链接:
https://nvd.nist.gov/vuln/detail/CVE-2026-77214
更多参考(点击展开)
无
漏洞分析指导链接:
https://atomgit.com/openeuler/cve-manager/blob/master/cve-vulner-manager/doc/md/manual.md
漏洞数据来源:
其他
漏洞补丁信息:
详情(点击展开)
无
二、漏洞分析结构反馈
影响性分析说明:
libexpat before commit 13c5f63 contains a heap buffer over-read vulnerability in xmlparse.c. XML_ParseBuffer advances the parse buffer end with parser->m_bufferEnd += len using a caller-supplied length that is not validated against the allocated buffer size, so repeated XML_ParseBuffer calls move m_bufferEnd past the end of the heap allocation and subsequent parsing reads out of bounds. Reaching this path requires a parse buffer to already be present; otherwise XML_ParseBuffer returns XML_ERROR_NO_BUFFER. A buffer is present after a prior call to XML_GetBuffer, either directly (the common case) or indirectly through a prior XML_Parse call that allocates the buffer internally. The over-read discloses adjacent heap memory to the calling application, recovering heap pointers, libc function pointers, and code pointers sufficient to defeat ASLR and build further exploitation primitives.
openEuler评分:
8.2
Vector:CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:L
受影响版本排查(受影响/不受影响):
1.master(2.8.5):受影响
2.openEuler-20.03-LTS-SP4(2.2.9):受影响
3.openEuler-22.03-LTS-SP4(2.4.1):受影响
4.openEuler-24.03-LTS-Next(2.8.5):受影响
5.openEuler-24.03-LTS-SP1(2.5.0):受影响
6.openEuler-24.03-LTS-SP3(2.5.0):受影响
7.openEuler-24.03-LTS-SP4(2.8.1):受影响
修复是否涉及abi变化(是/否):
1.master(2.8.5):否
2.openEuler-20.03-LTS-SP4(2.2.9):否
3.openEuler-22.03-LTS-SP4(2.4.1):否
4.openEuler-24.03-LTS-Next(2.8.5):否
5.openEuler-24.03-LTS-SP1(2.5.0):否
6.openEuler-24.03-LTS-SP3(2.5.0):否
7.openEuler-24.03-LTS-SP4(2.8.1):否
原因说明:
1.master(2.8.5):正常修复
2.openEuler-20.03-LTS-SP4(2.2.9):正常修复
3.openEuler-22.03-LTS-SP4(2.4.1):正常修复
4.openEuler-24.03-LTS-Next(2.8.5):正常修复
5.openEuler-24.03-LTS-SP1(2.5.0):正常修复
6.openEuler-24.03-LTS-SP3(2.5.0):正常修复
7.openEuler-24.03-LTS-SP4(2.8.1):正常修复