已关闭
CVE-2026-88815 #20
openeuler-ci-bot创建于  22 天前关闭于  13 天前
openeuler-ci-bot
openeuler-ci-bot成员
22 天前 创建

一、漏洞信息
漏洞编号:CVE-2026-88815
漏洞归属组件:perl-DBI
漏洞归属的版本:1.643,1.646,1.647,1.648,1.651,1.652
CVSS评分:
BaseScore:6.2 Medium
Vector:CVSS:3.1/AV:L/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H
漏洞简述:
DBI versions before 1.654 for Perl incorrectly treat numeric values as strings in sql_type_cast_svpv.When casting to SQL_NUMERIC, sql_type_cast_svpv passes the string pointer and length of the SV to grok_number without stringifying it first. An integer (IV) or floating-point (NV) value has no valid string pointer, so grok_number reads from an invalid address, triggering a segmentation fault.This is reachable in Perl using the sql_type_cast function: my $num = 42; DBI::sql_type_cast( $num, DBI::SQL_NUMERIC, 0 );
漏洞公开时间:2026-09-29 01:17:52
漏洞创建时间:2026-09-29 04:58:00
漏洞详情参考链接:
https://nvd.nist.gov/vuln/detail/CVE-2026-88815

更多参考(点击展开)
参考来源 参考链接 来源链接
https://github.com/perl5-dbi/dbi/commit/e5ad87e5602da995d28b4d65df222368b58d6702.patch
https://nvd.nist.gov/vuln/detail/CVE-2026-88815
https://cwe.mitre.org/data/definitions/502.html
https://www.first.org/epss
https://github.com/perl5-dbi/dbi/security/advisories/GHSA-c8vq-w3wr-6979
http://www.openwall.com/lists/oss-security/2026/09/28/12
https://metacpan.org/release/HMBRAND/DBI-1.654/changes
https://github.com/secwatch-io/sessionvault-poc

漏洞分析指导链接:
https://atomgit.com/openeuler/cve-manager/blob/master/cve-vulner-manager/doc/md/manual.md
漏洞数据来源:
七彩瞬析开源风险感知平台
漏洞补丁信息:

详情(点击展开)
影响的包 修复版本 修复补丁 问题引入补丁 来源
https://github.com/perl5-dbi/dbi/commit/e5ad87e5602da995d28b4d65df222368b58d6702.patch nvd

二、漏洞分析结构反馈
影响性分析说明:
DBI versions before 1.654 for Perl incorrectly treat numeric values as strings in sql_type_cast_svpv.When casting to SQL_NUMERIC, sql_type_cast_svpv passes the string pointer and length of the SV to grok_number without stringifying it first. An integer (IV) or floating-point (NV) value has no valid string pointer, so grok_number reads from an invalid address, triggering a segmentation fault.This is reachable in Perl using the sql_type_cast function: my $num = 42; DBI::sql_type_cast( $num, DBI::SQL_NUMERIC, 0 );
openEuler评分:
6.2
Vector:CVSS:3.1/AV:L/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H
受影响版本排查(受影响/不受影响):
1.master(1.652):受影响
2.openEuler-20.03-LTS-SP4(1.643):受影响
3.openEuler-22.03-LTS-SP4(1.643):受影响
4.openEuler-24.03-LTS-Next(1.648):受影响
5.openEuler-24.03-LTS-SP1(1.643):受影响
6.openEuler-24.03-LTS-SP3(1.643):受影响
7.openEuler-24.03-LTS-SP4(1.648):受影响

修复是否涉及abi变化(是/否):
1.master(1.652):否
2.openEuler-20.03-LTS-SP4(1.643):否
3.openEuler-22.03-LTS-SP4(1.643):否
4.openEuler-24.03-LTS-Next(1.648):否
5.openEuler-24.03-LTS-SP1(1.643):否
6.openEuler-24.03-LTS-SP3(1.643):否
7.openEuler-24.03-LTS-SP4(1.648):否

原因说明:
1.master(1.652):正常修复
2.openEuler-20.03-LTS-SP4(1.643):正常修复
3.openEuler-22.03-LTS-SP4(1.643):正常修复
4.openEuler-24.03-LTS-Next(1.648):正常修复
5.openEuler-24.03-LTS-SP1(1.643):正常修复
6.openEuler-24.03-LTS-SP3(1.643):正常修复
7.openEuler-24.03-LTS-SP4(1.648):正常修复

likedislike
openeuler-ci-botopeneuler-ci-bot成员
22 天前 添加了label:CVE/UNFIXED
openeuler-ci-bot
openeuler-ci-bot成员
22 天前 评论:

issue处理注意事项:
1. 提交正常修复分支的修复PR时,必须关联当前issue,否则无法关闭当前issue;
2. 模板内容需要填写完整, 无论是受影响或者不受影响都需要填写完整内容;
3. 以下为模板中需要填写完整的内容, 请复制到评论区回复;
注: 内容的关键词(影响性分析说明, openEuler评分, 受影响版本排查(受影响/不受影响), 修复是否涉及abi变化(是/否), 原因说明)不能省略,省略后cve-manager将无法正常解析填写内容.


影响性分析说明:

openEuler评分: (评分和向量)

受影响版本排查(受影响/不受影响):
1.master(1.652):
2.openEuler-20.03-LTS-SP4(1.643):
3.openEuler-22.03-LTS-SP4(1.643):
4.openEuler-24.03-LTS-Next(1.648):
5.openEuler-24.03-LTS-SP1(1.643):
6.openEuler-24.03-LTS-SP3(1.643):
7.openEuler-24.03-LTS-SP4(1.648):

修复是否涉及abi变化(是/否):
1.master(1.652):
2.openEuler-20.03-LTS-SP4(1.643):
3.openEuler-22.03-LTS-SP4(1.643):
4.openEuler-24.03-LTS-Next(1.648):
5.openEuler-24.03-LTS-SP1(1.643):
6.openEuler-24.03-LTS-SP3(1.643):
7.openEuler-24.03-LTS-SP4(1.648):

原因说明:
1.master(1.652):
2.openEuler-20.03-LTS-SP4(1.643):
3.openEuler-22.03-LTS-SP4(1.643):
4.openEuler-24.03-LTS-Next(1.648):
5.openEuler-24.03-LTS-SP1(1.643):
6.openEuler-24.03-LTS-SP3(1.643):
7.openEuler-24.03-LTS-SP4(1.648):


原因说明填写请参考下方表格(注意:版本是否受影响和版本的原因说明必须对应,例如master版本分支受影响,那原因说明只能是受影响对应的原因之一!):

分支状态
原因说明 使用场景
受影响 正常修复 受影响且需要修复(包含升级版本修复)的漏洞;
受影响且已经修复的漏洞(历史修复PR也需要关联issue);
若因特殊原因无法修复,应修改原因说明为【不修复-特殊原因】,并在安委会备案相关情况。
受影响 暂不修复-漏洞仍在分析中 已关注到相关漏洞,正在处理,未明确漏洞影响和修复方案。
受影响 暂不修复-暂无解决方案或补丁 当前没有可用的修复或补救措施。【影响性分析】中应包含有关为什么没有修复或补救措施的详细说明、上游相关PR等。
受影响 不修复-超出修复范围 没有漏洞的修复计划。当版本停维、软件包宣布生命周期终止或弃用使用。
受影响 不修复-特殊原因导致不再修复 如存在其他特殊情况不修复相关漏洞,或评估后无法升级修复,应在openEuler社区安全委员会例会进行说明备案。
【影响性分析】中应包含不发布修复的详细说明、特殊情况还应有安委会会议纪要。
不受影响 不受影响-组件不存在 软件不受影响,因为易受攻击的组件不在产品中。
不受影响 不受影响-已有内置的内联控制或缓解措施 内置的内联控制或缓解措施可防止攻击者利用漏洞
不受影响 不受影响-漏洞代码不能被攻击者触发 易受攻击的组件存在,并且该组件包含易受攻击的代码。但是,易受攻击的代码的使用方式使得攻击者无法进行任何预期的攻击。
不受影响 不受影响-漏洞代码不在执行路径 易受影响的代码在执行过程中不可访问,包括产品的非预期状态。产品不使用也不执行的组件。
不受影响 不受影响-漏洞代码不存在 产品不受影响,因为漏洞背后的代码在产品中不存在。与component_not_present不同的是,有问题的组件存在,但由于某种原因(例如安全的编译器选项)使漏洞的特定代码不存在于组件中。

issue处理具体操作请参考:
https://atomgit.com/openeuler/cve-manager/blob/master/cve-vulner-manager/doc/md/manual.md
pr关联issue具体操作请参考:
https://docs.atomgit.com/docs/help/home/org_project/pullrequests/pr-related-issue

likedislike
openeuler-ci-botopeneuler-ci-bot成员
22 天前 将 shinwell_hu、openeuler-ci-bot 设为负责人
openeuler-ci-botopeneuler-ci-bot成员
22 天前 添加了label:sig/sig-perl-modules
openeuler-ci-bot
openeuler-ci-bot成员
22 天前 评论:

Welcome To openEuler Community

Hey @openeuler-ci-bot , 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: sig-perl-modules ,
and any of the maintainers: @shinwell_hu ,
and any of the committers: @licunlong, @overweight, @shenyangyang .

likedislike
openeuler-ci-botopeneuler-ci-bot成员
22 天前 修改了issue 的描述
openeuler-ci-botopeneuler-ci-bot成员
22 天前 移除了负责人 openeuler-ci-bot、shenyangyang
hugel
22 天前 评论:

/branches master /name hugel /email 2712504175@qq.com

likedislike
xiaoo_robot
xiaoo_robot
22 天前 评论:

正在自动化处理任务,任务编号:TASK-gitcode__perl-DBI-20-20260929110132,指定分支:master

⏳ 进度更新 (11:51): 已运行 50 分钟 | 当前阶段: Step 5/8 适配补丁

✅ 任务结束 (用时: 54分钟)

likedislike
xiaoo_robotxiaoo_robot
22 天前 关联了pull request:fix: CVE-2026-88815 - master
xiaoo_robot
xiaoo_robot
22 天前 评论:

【任务 #20 · master】CVE-2026-88815

1. 是否受影响

结论:受影响。

原因:DBI 的 sql_type_cast_svpv 在 SQL_NUMERIC 分支中直接把 SV 的字符串指针/长度传给转换函数,未对 IV/NV 标量先做 SvPV 字符串化,导致数值被当作字符串错误处理。源码影响性分析已定位漏洞代码:DBI-1.652/DBI.xs:1923 函数 sql_type_cast_svpv 的 SQL_NUMERIC 分支(1958-1978 行),其中 1961 行 grok_number(SvPVX(sv), SvCUR(sv), &uv) 即 CVE 所述缺陷代码,master 分支源码仍保留该漏洞代码,需要修复。

分支状态:

  • master(1.652):受影响

2. 修复补丁

上游社区补丁:https://github.com/perl5-dbi/dbi/commit/e5ad87e5602da995d28b4d65df222368b58d6702.patch

3. 补丁适配情况

已生成适配补丁 backport-CVE-2026-88815.patch(状态:adapted,置信度:high),无前置补丁。

  • 冲突原因:上游补丁基于未发布的 DBI 1.654,目标为 1.652 基线,共 5 个 hunk。核心修复 hunk(DBI.xs @@ -1957,8 +1957,10 @@)与测试 hunk(t/90sql_type_cast.t @@ -49,6 +49,22 @@)上下文零偏移、可直接应用;其余 3 个 hunk(ChangeLog、dbixs_rev.h、lib/DBI/Changes.pm)为版本元数据/变更日志,其上下文在 1.652 基线不存在,无法直接套用。
  • 适配内容:核心修复逻辑逐字节保真——SQL_NUMERIC 分支新增 STRLEN len; char *p = SvPV(sv, len); 强制字符串化并处理 magic,grok_number 改用 (p, len, &uv),修复 IV/NV 标量未字符串化时直读 SvPVX 原始缓冲区的缺陷;测试 hunk(新增 8 个 IV/NV 用例)原样保留。3 个元数据 hunk 予以跳过,避免捏造 1.654 条目及版本戳(DBIXS_REVISION 参与 DBD 驱动兼容性检查,虚假值会产生误导)。适配补丁真实统计:2 files changed, 19 insertions(+), 1 deletion(-)。
  • 落地验证:补丁已应用到源码目录并提交,git diff --stat 确认 DBI.xs 4 行、t/90sql_type_cast.t 16 行插入;在 HEAD~1 临时 worktree 上 git apply --check 验证通过;grep 确认 DBI.xs:1961 处 SvPV 修复代码真实存在。

4. 修复 PR

已提交 PR(master):https://gitcode.com/src-openeuler/perl-DBI/merge_requests/88

──────── 复制以下内容回填 issue ────────
受影响版本排查(受影响/不受影响):
1.master(1.652): 受影响
ABI 变化:否
原因说明:
1.master(1.652): 正常修复
────────────────────────────────────────

likedislike
xiaoo_robot
xiaoo_robot
22 天前 评论:

正在自动化处理任务,任务编号:TASK-gitcode__perl-DBI-20-20260929171042-0,指定分支:master,使用指定补丁(2个)

⏳ 进度更新 (18:51): 已运行 100 分钟 | 当前阶段: Step 5/8 适配补丁

✅ 任务结束 (用时: 105分钟)

likedislike
xiaoo_robot
xiaoo_robot
22 天前 评论:

正在自动化处理任务,任务编号:TASK-gitcode__perl-DBI-20-20260929171043-1,指定分支:openEuler-24.03-LTS-Next,使用指定补丁(2个)

⏳ 进度更新 (18:16): 已运行 65 分钟 | 当前阶段: Step 5/8 适配补丁

✅ 任务结束 (用时: 67分钟)

likedislike
xiaoo_robotxiaoo_robot
22 天前 关联了pull request:fix: CVE-2026-88815 - openEuler-24.03-LTS-Next
xiaoo_robot
xiaoo_robot
22 天前 评论:

【任务 #20 · openEuler-24.03-LTS-Next】CVE-2026-88815

是否受影响:受影响

漏洞路径函数 sql_type_cast_svpv(DBI.xs:1951,经 DBI.xs:4992 的 sql_type_cast XS 包装与 DBI.xs:553 的 DBIS 函数指针暴露)存在于目标源码 DBI-1.648,漏洞模式 grok_number(SvPVX(sv), SvCUR(sv), &uv) 在 DBI.xs:1989 逐字匹配、尚未修复,漏洞代码存在于本版本源码,需要修复。

分支状态:

  • openEuler-24.03-LTS-Next(版本 1.648):受影响

修复补丁:已找到上游修复补丁:

补丁适配情况:已进行适配,共 2 个补丁:

  1. backport-CVE-2026-88815-1.patch(已适配,置信度 high)
  • 冲突原因:原补丁 5 个 hunk 中 3 个元数据 hunk(ChangeLog、dbixs_rev.h、lib/DBI/Changes.pm)绑定上游 1.654 dev cycle 的版本条目,而基线为 DBI 1.648,对应变更行在源码中不存在,无法逐字移植。
  • 适配内容:参照同系列 Patch6004(backport-CVE-2026-73194.patch,完全相同的 3 文件冲突签名)先例,跳过这 3 个不含安全逻辑的元数据文件;DBI.xs(核心修复:以 SvPV 强制字符串化替代裸 SvPVX/SvCUR 读取)与 t/90sql_type_cast.t(16 条 IV/NV 回归测试)2 个 hunk 原样保留,核心变更行与原补丁逐字节一致,仅 DBI.xs hunk 行号偏移 +28(@@ -1957,8 +1957,10 @@ → @@ -1985,8 +1985,10 @@)。
  • 落地验证:改动已真实应用并提交(commit 0deab9f,基于 baseline d9e5348;diff stat:DBI.xs 4 行、t/90sql_type_cast.t 16 行,共 19 insertions / 1 deletion),生成的补丁在基线临时 worktree 上 git apply --check 验证通过;工作树 grep 证实漏洞模式已消除、修复语句 char *p = SvPV(sv, len) 位于 DBI.xs:1989,后继补丁 backport-CVE-2026-88815-2.patch 依赖的删除上下文逐字节完好,链式适配不受影响。
  1. backport-CVE-2026-88815-2.patch(无冲突,原样应用,置信度 high)

PR 提交情况:已提交 PR:

──────── 复制以下内容回填 issue ────────
受影响版本排查(受影响/不受影响):
1.openEuler-24.03-LTS-Next(1.648): 受影响
ABI 变化:否
原因说明:
1.正常修复
────────────────────────────────────────

likedislike
xiaoo_robotxiaoo_robot
22 天前 关联了pull request:fix: CVE-2026-88815 - master
xiaoo_robot
xiaoo_robot
22 天前 评论:

【任务 #20 · master】CVE-2026-88815

1. 是否受影响:受影响

漏洞本质:sql_type_cast_svpv 处理 SQL_NUMERIC 时直接把 SV 的字符串指针和长度传给 grok_number,未先字符串化 IV/NV 型 SV,导致错误转换。定位证据(Step 4 源码影响性分析):该函数定义于 DBI-1.652/DBI.xs:1923(全源码树唯一 C 实现,另经 DBIXS.h:468 函数指针暴露),其 SQL_NUMERIC 分支(DBI.xs:1961)仍保留漏洞代码 grok_flags = grok_number(SvPVX(sv), SvCUR(sv), &uv);,且修复模式 char *p = SvPV(sv, len); 在该函数中不存在,说明补丁未被预先应用,漏洞代码存在于本版本源码,需要修复。

分支状态:

  • master(1.652):受影响

2. 修复补丁

上游社区已提供修复补丁:

3. 补丁适配情况

已对两个补丁完成适配并应用:

[原补丁] backport-CVE-2026-88815-1.patch(已适配,置信度 high)

  • 冲突原因:原补丁(上游 e5ad87e)共 5 个 hunk,其中 3 个为上游 1.654 未发布线的发布元数据(ChangeLog、dbixs_rev.h、lib/DBI/Changes.pm),与 openEuler 1.652 基线不符——baseline(DBI 1.652,2026-08-15 发布)无 1.653/1.654 条目,强行适配会伪造发布历史。
  • 适配内容:2 个功能 hunk 逐字节保留、偏移 0 干净应用——DBI.xs 修复主体(@@ -1957,8 +1957,10 @@)将 SQL_NUMERIC 分支改用 SvPV(sv, len) 强制字符串化并处理 magic 后再 grok_number(p, len, &uv),修复 IV/NV 标量解析;t/90sql_type_cast.t(@@ -49,6 +49,22 @@)新增 7 个 IV/NV 回归测试用例。3 个元数据 hunk 按非关键文件规则丢弃:dbixs_rev.h 为 dbixs_rev.pl 自动生成的版本戳,仅经调试函数 dbixs_revision() 暴露,保留 baseline 值 652/1810 与包版本自洽;Changes.pm 为 ChangeLog 的 POD 镜像,同理。核心修复与回归测试与上游逐字节一致,修复逻辑保真。
  • 落地验证:已在 master 分支打包仓库应用并提交(commit 622ad95b),补丁应用验证通过(0 失败)。

[原补丁] backport-CVE-2026-88815-2.patch(干净应用,置信度 high)

  • 同 CVE 后续补丁(上游 ff4f1ba,C99 兼容),无冲突、无需适配,直接干净应用。

前置补丁:无。

4. PR 提交情况

已提交 PR:

──────── 复制以下内容回填 issue ────────
受影响版本排查(受影响/不受影响):
1.master(1.652): 受影响
ABI 变化:否
原因说明:
1.正常修复
────────────────────────────────────────

likedislike
hugel
22 天前 评论:
xiaoo_robot
xiaoo_robot
22 天前 评论:

正在自动化处理任务,任务编号:TASK-gitcode__perl-DBI-20-20260929192855-0,指定分支:master,使用指定补丁(2个)

⏳ 进度更新 (20:14): 已运行 45 分钟 | 当前阶段: Step 8/8 生成评论

✅ 任务结束 (用时: 46分钟)

likedislike
xiaoo_robot
xiaoo_robot
22 天前 评论:

正在自动化处理任务,任务编号:TASK-gitcode__perl-DBI-20-20260929192855-1,指定分支:openEuler-22.03-LTS-SP4,使用指定补丁(2个)

⏳ 进度更新 (20:24): 已运行 55 分钟 | 当前阶段: Step 5/8 适配补丁

✅ 任务结束 (用时: 60分钟)

likedislike
xiaoo_robot
xiaoo_robot
22 天前 评论:

正在自动化处理任务,任务编号:TASK-gitcode__perl-DBI-20-20260929192856-2,指定分支:openEuler-20.03-LTS-SP4,使用指定补丁(2个)

⏳ 进度更新 (20:09): 已运行 40 分钟 | 当前阶段: Step 8/8 生成评论

✅ 任务结束 (用时: 41分钟)

likedislike
xiaoo_robotxiaoo_robot
22 天前 关联了pull request:fix: CVE-2026-88815 - openEuler-20.03-LTS-SP4
xiaoo_robot
xiaoo_robot
22 天前 评论:

【任务 #20 · openEuler-20.03-LTS-SP4】CVE-2026-88815

一、是否受影响

结论:受影响。CVE-2026-88815 所述漏洞函数 sql_type_cast_svpv 在本分支源码中精确定位(Step 4 源码影响性分析):DBI-1.643/DBI.xs:1943 定义,其 case SQL_NUMERIC 分支(DBI.xs:1978)中 DBI.xs:1981 仍存在漏洞代码 grok_flags = grok_number(SvPVX(sv), SvCUR(sv), &uv);——将 SV 的原始字符串指针/长度直接传给 grok_number 而未先字符串化 IV/NV,与 CVE 描述逐字吻合,且修复代码(char *p = SvPV(sv, len);)尚未存在,需要修复。

  • openEuler-20.03-LTS-SP4(1.643):受影响

二、是否有修复补丁

有,上游社区补丁:

三、补丁适配情况

存在适配,两个补丁均已落地:

[原补丁] backport-CVE-2026-88815-1.patch(状态:已适配,置信度:高)

  • 冲突原因:原补丁基于上游 1.654-dev,与 1.643 存在差异——ChangeLog 与 lib/DBI/Changes.pm 在 1.643 中不存在(上游 1.65x 将变更日志拆分/重命名而来),dbixs_rev.h 修订号体系完全不同,测试文件排版亦不同。
  • 适配内容:DBI.xs 核心 CVE 修复(SQL_NUMERIC case 改用 SvPV 强制字符串化后再 grok_number)git apply 直接成功、逐字节保留,实际落点 DBI.xs:1977-1984;t/90sql_type_cast.t 仅调整 hunk 行号(49→44)与 4 行上下文(折行排版、unless ($pp)→if (!$pp)),新增 16 行 IV/NV 数字字面量回归测试逐字节保留,插入点与上游语义一致,核心修复逻辑保真。
  • 落地验证:已真实应用到 source_dir 工作区,git apply 干净成功,git diff --stat:DBI.xs 4 +++-、t/90sql_type_cast.t 16 +++++(2 files changed, 19 insertions(+), 1 deletion(-))。
  • 逐文件处置:
    • DBI.xs:未改动,核心安全修复 hunk 直接应用,+/- 行与原补丁逐字节一致
    • t/90sql_type_cast.t:上下文适配(排版差异、unless→if、行号 49→44,插入点语义一致)
    • ChangeLog:丢弃(1.643 baseline 不存在该文件,changelog 由顶层 Changes 承担,纯 changelog 无安全逻辑)
    • dbixs_rev.h:丢弃(dbixs_rev.pl 生成的构建期修订号元数据,baseline 修订号体系与补丁期望完全不同,无安全逻辑)
    • lib/DBI/Changes.pm:丢弃(1.643 的 lib/DBI/ 下不存在,纯 changelog 无安全逻辑)

[原补丁] backport-CVE-2026-88815-2.patch(状态:干净应用,置信度:高)
无冲突,git apply 直接成功。

四、是否提交 PR

已提交 PR(openEuler-20.03-LTS-SP4):https://gitcode.com/src-openeuler/perl-DBI/merge_requests/93

──────── 复制以下内容回填 issue ────────
受影响版本排查(受影响/不受影响):
1.openEuler-20.03-LTS-SP4(1.643): 受影响
ABI 变化:否
原因说明:
1.正常修复
────────────────────────────────────────

likedislike
xiaoo_robotxiaoo_robot
22 天前 关联了pull request:fix: CVE-2026-88815 - master
xiaoo_robot
xiaoo_robot
22 天前 评论:

【任务 #20 · master】CVE-2026-88815

1. 是否受影响:受影响

sql_type_cast_svpv(DBI-1.652/DBI.xs:1923)的 SQL_NUMERIC 分支(DBI.xs:1958-1961)将未字符串化的 IV/NV 数值 SV 的字符串指针与长度(SvPVX/SvCUR)直接传给 grok_number,正是 CVE 描述的漏洞模式;修复代码(SvPV 强制字符串化)尚未存在于源码(全树 grep 零命中),且 1.652 < 1.654 处于受影响版本范围。以上为 Step 4 源码影响性分析结论。

分支状态:

  • master(1.652):受影响

2. 修复补丁

3. 补丁适配情况(存在适配)

  • backport-CVE-2026-88815-1.patch(已适配,置信度 high)
    • 冲突原因:原补丁基于上游 1.654 dev 版本,baseline 为 1.652 发布版;5 个 hunk 中 3 个版本元数据 hunk(ChangeLog、dbixs_rev.h、lib/DBI/Changes.pm)因 baseline 中不存在 1.653/1.654 版本条目而冲突。
    • 适配内容:安全修复主体 DBI.xs(SQL_NUMERIC 分支改用 SvPV 强制字符串化以处理 magic/IV/NV)与回归测试 t/90sql_type_cast.t(新增 8 个用例)两个 hunk 与 baseline 上下文完全一致、逐字节原样保留,核心修复逻辑保真;ChangeLog 与 lib/DBI/Changes.pm 将修复条目追加为 1.652 版本条目最后一项,不改动已发布的版本号/日期行;dbixs_rev.h 时间戳逐字采用补丁原文,DBIXS_REVISION 按原补丁"+1 递增”语义由 1810 改为 1811,DBIXS_VERSION 保持 652 不变。
    • 落地验证:适配后补丁已在 pristine baseline 副本上 git apply --check 验证通过,并已应用到源码工作区(git diff --stat:5 files changed, 26 insertions(+), 3 deletions(-))。
  • backport-CVE-2026-88815-2.patch(干净应用,置信度 high)

4. PR 提交情况

──────── 复制以下内容回填 issue ────────
受影响版本排查(受影响/不受影响):
1.master(1.652): 受影响
ABI 变化:否
原因说明:
1.正常修复
────────────────────────────────────────

likedislike
xiaoo_robotxiaoo_robot
22 天前 关联了pull request:fix: CVE-2026-88815 - openEuler-22.03-LTS-SP4
xiaoo_robot
xiaoo_robot
22 天前 评论:

【任务 #20 · openEuler-22.03-LTS-SP4】CVE-2026-88815

1. 是否受影响:受影响
漏洞函数 sql_type_cast_svpv 定义于 DBI.xs:1943,SQL_NUMERIC 分支直接传 SV 字符串指针/长度的漏洞代码 grok_number(SvPVX(sv), SvCUR(sv), &uv) 精确存在于 DBI.xs:1981(核心 hunk 全部上下文行逐字匹配,仅行号偏移约 +20),修复未预先应用,本版本源码存在漏洞代码,需要修复(Step 4 源码影响性分析判为 NEEDS_ADAPTATION)。

  • openEuler-22.03-LTS-SP4(1.643):受影响

2. 修复补丁:

3. 补丁适配情况:已适配(无前置补丁)

[原补丁] backport-CVE-2026-88815-1.patch(已适配,置信度 high)

  • 冲突原因:上游补丁基于 DBI 1.654(2026),目标分支为 1.643(2012):测试文件排版不同,ChangeLog 与 lib/DBI/Changes.pm 在 1.643 不存在、dbixs_rev.h 内容不同,整补丁无法直接应用。
  • 适配内容:DBI.xs 核心 CVE 修复(SQL_NUMERIC 分支改用 SvPV(sv, len) 强制字符串化,替代裸 SvPVX/SvCUR 读取)经 git apply --check 原样应用,仅行号偏移 +20;t/90sql_type_cast.t 仅重写 6 行上下文行对齐 baseline 排版(hunk 头 @@ -49,6 → @@ -44,6),16 行核心测试 + 行逐字节一致;跳过 3 个纯 changelog/版本戳 hunk(无安全逻辑)。核心修复逻辑保真。
  • 落地验证:适配结果落地为 commit 48cbdfa(baseline 0e4964d 之上),git diff --stat 为 2 files changed, 19 insertions(+), 1 deletion(-);最终补丁对 pristine baseline(git archive 0e4964d)git apply --check 通过。
    冲突项明细:
  • t/90sql_type_cast.t(context_adjusted):上游 1.654 将 @tests 重排为列对齐 + 双引号风格、尾随上下文 if (!pp)改为unless(pp) 改为 unless (pp),baseline 为旧排版 + 单引号 + if (!$pp);适配仅替换 6 行上下文行,核心 16 行逐字节原样插入。
  • ChangeLog(跳过):1.643 无此文件(顶层 Changes 为 POD 格式、无 1.65x 条目),原补丁改写 1.654 dev entry 日期无诚实对应值;纯元数据、无安全逻辑。
  • dbixs_rev.h(跳过):baseline 为 2012 年版本戳(DBIXS_REVISION 15349,无 DBIXS_RELEASE/DBIXS_VERSION 行),补丁针对 2026 年 1832→1833 递增无对应值;该宏仅被只读暴露、全树无一致性校验,跳过不影响安全修复。
  • lib/DBI/Changes.pm(跳过):该文件在 1.643 中不存在(变更记录在顶层 Changes);纯文档元数据、无安全逻辑。

[原补丁] backport-CVE-2026-88815-2.patch:干净应用(applied_clean),无需适配。

4. PR:已提交

──────── 复制以下内容回填 issue ────────
受影响版本排查(受影响/不受影响):
1.openEuler-22.03-LTS-SP4(1.643): 受影响
ABI 变化:否
原因说明:
1.正常修复
────────────────────────────────────────

likedislike
openeuler-ci-botopeneuler-ci-bot成员
21 天前 修改了issue 的描述
Iinfra_team
21 天前 关联了pull request:fix(cve): 修复 CVE-2026-88815 在 perl-DBI 中的漏洞
openeuler-ci-botopeneuler-ci-bot成员
21 天前 关联了pull request:[sync] PR-89: fix: CVE-2026-88815 - openEuler-24.03-LTS-Next
hugel
21 天前 评论:
xiaoo_robot
xiaoo_robot
21 天前 评论:

正在自动化处理任务,任务编号:TASK-gitcode__perl-DBI-20-20260930153513-0,指定分支:openEuler-24.03-LTS-SP1,使用指定补丁(2个)

⏳ 进度更新 (17:40): 已运行 125 分钟 | 当前阶段: Step 8/8 生成评论

✅ 任务结束 (用时: 130分钟)

likedislike
xiaoo_robot
xiaoo_robot
21 天前 评论:

正在自动化处理任务,任务编号:TASK-gitcode__perl-DBI-20-20260930153514-1,指定分支:openEuler-24.03-LTS-SP3,使用指定补丁(2个)

⏳ 进度更新 (16:40): 已运行 65 分钟 | 当前阶段: Step 8/8 生成评论

✅ 任务结束 (用时: 66分钟)

likedislike
Hhugel
21 天前 关联了pull request:fix CVE-2026-78030 CVE-2026-88816 CVE-2026-88815
xiaoo_robotxiaoo_robot
21 天前 关联了pull request:fix: CVE-2026-88815 - openEuler-24.03-LTS-SP3
xiaoo_robot
xiaoo_robot
21 天前 评论:

【任务 #20 · openEuler-24.03-LTS-SP3】CVE-2026-88815

1. 是否受影响:受影响
漏洞函数 sql_type_cast_svpv()(DBI.xs:1943)的 SQL_NUMERIC 分支直接读取 SV 的原始字符串指针/长度传入 grok_number,漏洞行 grok_number(SvPVX(sv), SvCUR(sv), &uv) 逐字存在于 DBI.xs:1981(核心 hunk 全部上下文行完全匹配,仅行号偏移 +20,dry-run 验证通过),1.643 在 NVD 受影响版本列表内且修复未预置,需要修复(Step 4 源码影响性分析判为 NEEDS_ADAPTATION)。

  • openEuler-24.03-LTS-SP3(1.643):受影响

2. 修复补丁:

3. 补丁适配情况:已适配(无前置补丁)

[原补丁] backport-CVE-2026-88815-1.patch(已适配,置信度 high)

  • 冲突原因:上游补丁基于 DBI 1.654 的文件布局与格式,目标分支为 1.643:ChangeLog 与 lib/DBI/Changes.pm 在 1.643 中不存在(变更日志在根目录 Changes)、dbixs_rev.h 版本戳格式不同、测试文件格式已被上游重排,整补丁无法直接应用。
  • 适配内容:DBI.xs 核心 CVE 修复(SQL_NUMERIC 分支改用 SvPV(sv,len) 强制字符串化并处理 magic,替代直接读 SvPVX/SvCUR)git apply --check 直接通过,原样保留零改动;t/90sql_type_cast.t 仅将前置/尾随上下文行对齐 baseline 旧排版(hunk 头 @@ -49,6 +49,22 @@ → @@ -44,6 +44,22 @@),新增 16 行 IV/NV 数值字面量回归测试经 diff 逐字节比对与原补丁完全一致;跳过 ChangeLog、lib/DBI/Changes.pm、dbixs_rev.h 3 个非关键文件(纯变更日志/自动生成版本戳,无安全逻辑)。核心修复逻辑保真。
  • 落地验证:适配后已 commit 到 source_dir,git diff --stat HEAD~1 = 2 files changed, 19 insertions(+), 1 deletion(-),git apply --check --reverse 验证补丁与源码状态一致,perl -c 语法检查通过。

[原补丁] backport-CVE-2026-88815-2.patch:干净应用(applied_clean,置信度 high),无需适配。

4. PR:已提交

──────── 复制以下内容回填 issue ────────
受影响版本排查(受影响/不受影响):
1.openEuler-24.03-LTS-SP3(1.643): 受影响
ABI 变化:否
原因说明:
1.正常修复
────────────────────────────────────────

likedislike
xiaoo_robotxiaoo_robot
21 天前 关联了pull request:fix: CVE-2026-88815 - openEuler-24.03-LTS-SP1
xiaoo_robot
xiaoo_robot
21 天前 评论:

【任务 #20 · openEuler-24.03-LTS-SP1】CVE-2026-88815

1. 是否受影响:受影响

Step 4 源码影响性分析确认漏洞代码存在于本分支源码:漏洞函数 sql_type_cast_svpv 定义于 DBI.xs:1943,CVE 点名的 case SQL_NUMERIC 分支位于 DBI.xs:1978,漏洞模式 grok_number(SvPVX(sv), SvCUR(sv), &uv) 原样存在于 DBI.xs:1981(与补丁删除行逐字符一致,1.643 尚未修复;1.643 亦在 NVD 受影响版本列表内),需要修复。

  • openEuler-24.03-LTS-SP1(1.643):受影响

2. 修复补丁

3. 补丁适配情况:存在适配(无前置补丁)

[原补丁] backport-CVE-2026-88815-1.patch(已适配,置信度 high)

  • 冲突原因:原补丁基于上游 DBI 1.654,目标分支为 1.643,跨版本差异导致整补丁无法直接套用:ChangeLog 与 lib/DBI/Changes.pm 在 1.643 不存在(变更记录在顶层 Changes),dbixs_rev.h 为 Makefile.PL 自动生成的版本戳,测试文件排版亦与上游不同。
  • 适配内容:DBI.xs 核心 hunk(SQL_NUMERIC 分支先 SvPV(sv,len) 强制字符串化再 grok_number,修复 IV/NV 无有效 PV 时误用 SvPVX 读未初始化缓冲)与源码 1977-1984 逐字符匹配,原样逐字节应用,仅行号重锚 @@ -1957→-1977;t/90sql_type_cast.t 的 16 行 IV/NV 回归测试逐字节保留,仅上下文行适配 1.643 两行式测试排版;丢弃 3 个纯 changelog/版本戳 hunk(零安全关键词命中,版本戳会被构建过程再生成)。新测试所需常量均已存在于 baseline,无需内联。核心修复逻辑保真。
  • 落地验证:适配改动已提交 source_dir(commit 07d2f68,2 files changed, +19/-1),并经 baseline 3472e35 临时 worktree git apply --check + apply + git diff --stat 验证通过。

[原补丁] backport-CVE-2026-88815-2.patch:干净应用(applied_clean),无需适配。

4. PR:已提交

──────── 复制以下内容回填 issue ────────
受影响版本排查(受影响/不受影响):
1.openEuler-24.03-LTS-SP1(1.643): 受影响
ABI 变化:N/A
原因说明:
1.正常修复
────────────────────────────────────────

likedislike
openeuler-ci-botopeneuler-ci-bot成员
19 天前 修改了issue 的描述
hugel
13 天前 评论:

影响性分析说明:DBI versions before 1.654 for Perl incorrectly treat numeric values as strings in sql_type_cast_svpv.When casting to SQL_NUMERIC, sql_type_cast_svpv passes the string pointer and length of the SV to grok_number without stringifying it first. An integer (IV) or floating-point (NV) value has no valid string pointer, so grok_number reads from an invalid address, triggering a segmentation fault.This is reachable in Perl using the sql_type_cast function: my $num = 42; DBI::sql_type_cast( $num, DBI::SQL_NUMERIC, 0 );

openEuler评分:
6.2
CVSS:3.1/AV:L/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H

受影响版本排查(受影响/不受影响):
1.master(1.652):受影响
2.openEuler-20.03-LTS-SP4(1.643):受影响
3.openEuler-22.03-LTS-SP4(1.643):受影响
4.openEuler-24.03-LTS-Next(1.648):受影响
5.openEuler-24.03-LTS-SP1(1.643):受影响
6.openEuler-24.03-LTS-SP3(1.643):受影响
7.openEuler-24.03-LTS-SP4(1.648):受影响

修复是否涉及abi变化(是/否):
1.master(1.652):否
2.openEuler-20.03-LTS-SP4(1.643):否
3.openEuler-22.03-LTS-SP4(1.643):否
4.openEuler-24.03-LTS-Next(1.648):否
5.openEuler-24.03-LTS-SP1(1.643):否
6.openEuler-24.03-LTS-SP3(1.643):否
7.openEuler-24.03-LTS-SP4(1.648):否

原因说明:
1.master(1.652):正常修复
2.openEuler-20.03-LTS-SP4(1.643):正常修复
3.openEuler-22.03-LTS-SP4(1.643):正常修复
4.openEuler-24.03-LTS-Next(1.648):正常修复
5.openEuler-24.03-LTS-SP1(1.643):正常修复
6.openEuler-24.03-LTS-SP3(1.643):正常修复
7.openEuler-24.03-LTS-SP4(1.648):正常修复

likedislike
openeuler-ci-botopeneuler-ci-bot成员
13 天前 修改了issue 的描述
openeuler-ci-bot
openeuler-ci-bot成员
13 天前 评论:

@shinwell_hu 经过 cve-manager 解析, 已分析的内容如下表所示:

状态 分析项目 内容
已分析 1.影响性分析说明 DBI versions before 1.654 for Perl incorrectly treat numeric values as strings in sql_type_cast_svpv.When casting to SQL_NUMERIC, sql_type_cast_svpv passes the string pointer and length of the SV to grok_number without stringifying it first. An integer (IV) or floating-point (NV) value has no valid string pointer, so grok_number reads from an invalid address, triggering a segmentation fault.This is reachable in Perl using the sql_type_cast function: my $num = 42; DBI::sql_type_cast( $num, DBI::SQL_NUMERIC, 0 );
已分析 2.openEulerScore 6.2
已分析 3.openEulerVector AV:L/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H
已分析 4.受影响版本排查 master:受影响,openEuler-20.03-LTS-SP4:受影响,openEuler-22.03-LTS-SP4:受影响,openEuler-24.03-LTS-Next:受影响,openEuler-24.03-LTS-SP1:受影响,openEuler-24.03-LTS-SP3:受影响,openEuler-24.03-LTS-SP4:受影响
已分析 5.是否涉及abi变化 master:否,openEuler-20.03-LTS-SP4:否,openEuler-22.03-LTS-SP4:否,openEuler-24.03-LTS-Next:否,openEuler-24.03-LTS-SP1:否,openEuler-24.03-LTS-SP3:否,openEuler-24.03-LTS-SP4:否
已分析 6.原因说明 master:正常修复,openEuler-20.03-LTS-SP4:正常修复,openEuler-22.03-LTS-SP4:正常修复,openEuler-24.03-LTS-Next:正常修复,openEuler-24.03-LTS-SP1:正常修复,openEuler-24.03-LTS-SP3:正常修复,openEuler-24.03-LTS-SP4:正常修复

请确认分析内容的准确性, 确认无误后, 您可以进行后续步骤, 否则您可以继续分析.

likedislike
openeuler-ci-bot
openeuler-ci-bot成员
13 天前 评论:

经过cve-manager解析,所有PR均已合入

likedislike
openeuler-ci-botopeneuler-ci-bot成员
13 天前 issue状态由 待办的 改变为 已完成
openeuler-ci-botopeneuler-ci-bot成员
13 天前 关闭了 issue
openeuler-ci-bot
openeuler-ci-bot成员
13 天前 评论:

经过cve-manager解析,所有PR均已合入

likedislike
openeuler-ci-botopeneuler-ci-bot成员
13 天前 删除了label:CVE/UNFIXED
openeuler-ci-botopeneuler-ci-bot成员
13 天前 添加了label:CVE/FIXED
Hhugel
11 小时前 关联了pull request:fix CVE-2026-88815 CVE-2026-88816