已开启
backport: fix out-of-bounds read in do_core_note (FreeBSD-style NT_PRPSINFO) #93
backport: fix out-of-bounds read in do_core_note (FreeBSD-style NT_PRPSINFO) #93
已开启
huijing_zhang创建于 3 天前
huijing_zhang
3 天前

【问题描述】

file 5.45 的 do_core_note()(src/readelf.c)在处理 FreeBSD 风格的 NT_PRPSINFO note 时,直接以 file_printf(ms, ", from '%.80s'", nbuf + doff + argoff) 打印程序名(argoff = 4+4+8+17 = 33,ELFCLASS64),读取 81 字节,但未校验 note 描述区是否实际包含该范围。构造一个 note 描述区不足(例如 descsz=0 且 doff==size)的恶意 core 文件即可造成越界读。

对应 issue #30。

【修复方案】

回移植上游修复 commit 6bb1b445d5ed9127a0c5d73f1c7973fca4442b3f(Christos Zoulas, 2026-04-24):在读取前增加边界检查 if (doff + argoff + 81 <= size),超出范围则跳过打印。

适配说明:5.45 中该处代码使用 file_printf(上游 5.48 已改名 elf_printf),且行号位置不同(5.45 在 812 行附近),补丁上下文已按 5.45 调整。

【验证过程】

  1. 构造 PoC:ELF64 core 文件,PT_NOTE 段内末尾放置 FreeBSD 风格 NT_PRPSINFO note(namesz=8, descsz=0),使 doff 恰好等于段大小
  2. ASan 双版本对照(file 5.45,gcc -fsanitize=address):
    • 修复前:ERROR: AddressSanitizer: stack-buffer-overflow READ of size 4,调用栈 do_core_note /src/readelf.c:812 <- donote <- dophn_core <- file_tryelf
    • 修复后:同一 PoC 无 ASan 报错,仅输出 FreeBSD-style
  3. 回归验证:合法 FreeBSD core 文件(descsz=128,含 pr_fname="hello" 与 pid)修复前后输出一致:ELF 64-bit LSB core file, x86-64, version 1 (SYSV), FreeBSD-style, from 'hello', pid=4242
  4. spec 三补丁序列(Patch1/2/3)在 file-5.45.tar.gz 上顺序干净应用

【影响分析】

仅在打印 FreeBSD 风格 core 的 NT_PRPSINFO 程序名前增加边界判断,正常 core 文件输出行为不变;修复越界读(信息泄露/crash)。

likedislike
合并受阻
huijing_zhanghuijing_zhang
3 天前 创建了 pull request,commit 008fba8f
huijing_zhanghuijing_zhang
3 天前 关联了issue:file: FreeBSD PRPSINFO note 描述长度不足导致越界读(待 backport 上游 6bb1b445)
huijing_zhanghuijing_zhang
3 天前 restored source branch `fix-prpsinfo-2609`
huijing_zhanghuijing_zhang
3 天前 预合并成功(commit_id: ca5355b52f33df5d10d75e4e93c3dbf5211232d3)
openeuler-ci-botopeneuler-ci-bot成员
3 天前 将VICTORY2017,mszjaas,swf504,liuzhiqiang26,louhongxiang,kouwq,dragon1147e3设为审查人
openeuler-ci-botopeneuler-ci-bot成员
3 天前 添加了label:sig/Storage
openeuler-ci-bot
openeuler-ci-bot成员
3 天前 评论:

Welcome To openEuler Community

Hey @huijing_zhang , 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: Storage ,
and any of the maintainers: @VICTORY2017, @dragon1147e3, @kouwq, @liuzhiqiang26, @louhongxiang, @mszjaas, @swf504 ,

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

当前仓库存在以下 保护分支 :

Protected Branch Version Release
master 5.48 1
openEuler-26.09 5.45 5
openEuler-26.09-DevStation 5.45 5
openEuler-24.03-LTS-SP1 5.45 5
openEuler-24.03-LTS-SP3 5.45 5
openEuler-24.03-LTS-SP4 5.45 5
openEuler-24.03-LTS-Next 5.45 5
openEuler-22.03-LTS-SP4 5.41 7
openEuler-20.03-LTS-SP4 5.39 11
openEuler1.0-base 5.38 1
openEuler1.0 5.38 1

评论 /sync <branch1> <branch2> ... 可将当前 PR 修改同步到其它分支(创建同步 PR):
a) 如果当前 PR 是 Open 状态,同步操作将延迟到 PR 被合并时执行
b) 如果当前 PR 已经 Merged,将立即执行同步操作

注意:

  1. /sync 命令可以指定同步到多个分支,仅最后一个 /sync 命令生效
  2. 如果创建的同步 PR 不正确,可通过向同步 PR 的源分支提交轻量级 PR 完善,或使用 /close 命令关闭
likedislike
openeuler-ci-botopeneuler-ci-bot成员
3 天前 添加了label:openeuler-cla/yes
openeuler-bot
openeuler-bot成员
3 天前 评论:

门禁正在运行, 您可以通过以下链接查看实时门禁检查结果.
若您对门禁结果含义不清晰或者遇到问题不知如何解决,可参考门禁指导手册
门禁入口及编码规范检查: multiarch/src-openeuler/trigger/file/52

likedislike
openeuler-botopeneuler-bot成员
3 天前 添加了label:ci_processing
openeuler-ci-botopeneuler-ci-bot成员
3 天前 删除了label:openeuler-cla/yes
openeuler-ci-botopeneuler-ci-bot成员
3 天前 添加了label:openeuler-cla/yes
openeuler-ci-bot
openeuler-ci-bot成员
3 天前 评论:

CLA Signature Pass

huijing_zhang, thanks for your pull request. All authors of the commits have signed the CLA. 👍

likedislike
openeuler-bot
openeuler-bot成员
3 天前 评论:

x86_64架构构建及构建后检查:multiarch/src-openeuler/x86-64/file/52

likedislike
openeuler-bot
openeuler-bot成员
3 天前 评论:

aarch64架构构建及构建后检查:multiarch/src-openeuler/aarch64/file/52

likedislike
openeuler-bot
openeuler-bot成员
3 天前 评论:

门禁正在运行, 您可以通过以下链接查看实时门禁检查结果.
若您对门禁结果含义不清晰或者遇到问题不知如何解决,可参考门禁指导手册
门禁入口及编码规范检查: multiarch/src-openeuler/trigger/file/53

likedislike
openeuler-botopeneuler-bot成员
3 天前 删除了label:ci_processing
openeuler-bot
openeuler-bot成员
3 天前 评论:
Check Name Build Result 详情 Build Details
check_binary_file ✅SUCCESS #52
check_lfsconfig ☑EXCLUDE
check_package_yaml_file ✅SUCCESS
check_repo_in_maintain ✅SUCCESS
check_consistency ✅SUCCESS
check_spec_file ✅SUCCESS
x86_64 check_build ✅SUCCESS #52
check_install ✅SUCCESS
check_license ✅SUCCESS
aarch64 check_build ✅SUCCESS #52
check_install ✅SUCCESS
check_license ✅SUCCESS
likedislike
openeuler-botopeneuler-bot成员
3 天前 添加了label:ci_successful
openeuler-bot
openeuler-bot成员
3 天前 评论:

如下为接口变更检查结果,目标分支为openEuler-26.09,请PR提交者check差异信息

Arch Name Check Items Rpm Name Check Result Build Details
compare_package(x86_64) add_rpms ✅SUCCESS #52
delete_rpms ✅SUCCESS
rpm_abi ✅SUCCESS
rpm_cmd ✅SUCCESS
rpm_files ✅SUCCESS
rpm_header ✅SUCCESS
rpm_lib ✅SUCCESS
rpm_provides ✅SUCCESS
rpm_requires ✅SUCCESS
rpm_symbol ✅SUCCESS
compare_package(aarch64) add_rpms ✅SUCCESS #52
delete_rpms ✅SUCCESS
rpm_abi ✅SUCCESS
rpm_cmd ✅SUCCESS
rpm_files ✅SUCCESS
rpm_header ✅SUCCESS
rpm_lib ✅SUCCESS
rpm_provides ✅SUCCESS
rpm_requires ✅SUCCESS
rpm_symbol ✅SUCCESS
likedislike
openeuler-bot
openeuler-bot成员
3 天前 评论:
likedislike
openeuler-bot
openeuler-bot成员
3 天前 评论:

x86_64架构构建及构建后检查:multiarch/src-openeuler/x86-64/file/53

likedislike
openeuler-bot
openeuler-bot成员
3 天前 评论:

aarch64架构构建及构建后检查:multiarch/src-openeuler/aarch64/file/53

likedislike
openeuler-bot
openeuler-bot成员
3 天前 评论:

门禁正在运行, 您可以通过以下链接查看实时门禁检查结果.
若您对门禁结果含义不清晰或者遇到问题不知如何解决,可参考门禁指导手册
门禁入口及编码规范检查: multiarch/src-openeuler/trigger/file/54

likedislike
openeuler-botopeneuler-bot成员
3 天前 删除了label:ci_successful
openeuler-botopeneuler-bot成员
3 天前 添加了label:ci_processing
openeuler-botopeneuler-bot成员
3 天前 删除了label:ci_processing
openeuler-bot
openeuler-bot成员
3 天前 评论:
Check Name Build Result 详情 Build Details
check_binary_file ✅SUCCESS #53
check_lfsconfig ☑EXCLUDE
check_package_yaml_file ✅SUCCESS
check_repo_in_maintain ✅SUCCESS
check_consistency ✅SUCCESS
check_spec_file ✅SUCCESS
x86_64 check_build ✅SUCCESS #53
check_install ✅SUCCESS
check_license ✅SUCCESS
aarch64 check_build ✅SUCCESS #53
check_install ✅SUCCESS
check_license ✅SUCCESS
likedislike
openeuler-botopeneuler-bot成员
3 天前 添加了label:ci_successful
openeuler-bot
openeuler-bot成员
3 天前 评论:

如下为接口变更检查结果,目标分支为openEuler-26.09,请PR提交者check差异信息

Arch Name Check Items Rpm Name Check Result Build Details
compare_package(x86_64) add_rpms ✅SUCCESS #53
delete_rpms ✅SUCCESS
rpm_abi ✅SUCCESS
rpm_cmd ✅SUCCESS
rpm_files ✅SUCCESS
rpm_header ✅SUCCESS
rpm_lib ✅SUCCESS
rpm_provides ✅SUCCESS
rpm_requires ✅SUCCESS
rpm_symbol ✅SUCCESS
compare_package(aarch64) add_rpms ✅SUCCESS #53
delete_rpms ✅SUCCESS
rpm_abi ✅SUCCESS
rpm_cmd ✅SUCCESS
rpm_files ✅SUCCESS
rpm_header ✅SUCCESS
rpm_lib ✅SUCCESS
rpm_provides ✅SUCCESS
rpm_requires ✅SUCCESS
rpm_symbol ✅SUCCESS
likedislike
openeuler-bot
openeuler-bot成员
3 天前 评论:
likedislike
openeuler-bot
openeuler-bot成员
3 天前 评论:

x86_64架构构建及构建后检查:multiarch/src-openeuler/x86-64/file/54

likedislike
openeuler-bot
openeuler-bot成员
3 天前 评论:

aarch64架构构建及构建后检查:multiarch/src-openeuler/aarch64/file/54

likedislike
openeuler-bot
openeuler-bot成员
3 天前 评论:
Check Name Build Result 详情 Build Details
check_binary_file ✅SUCCESS #54
check_lfsconfig ☑EXCLUDE
check_package_yaml_file ✅SUCCESS
check_repo_in_maintain ✅SUCCESS
check_consistency ✅SUCCESS
check_spec_file ✅SUCCESS
x86_64 check_build ✅SUCCESS #54
check_install ✅SUCCESS
check_license ✅SUCCESS
aarch64 check_build ✅SUCCESS #54
check_install ✅SUCCESS
check_license ✅SUCCESS
likedislike
openeuler-bot
openeuler-bot成员
3 天前 评论:

如下为接口变更检查结果,目标分支为openEuler-26.09,请PR提交者check差异信息

Arch Name Check Items Rpm Name Check Result Build Details
compare_package(x86_64) add_rpms ✅SUCCESS #54
delete_rpms ✅SUCCESS
rpm_abi ✅SUCCESS
rpm_cmd ✅SUCCESS
rpm_files ✅SUCCESS
rpm_header ✅SUCCESS
rpm_lib ✅SUCCESS
rpm_provides ✅SUCCESS
rpm_requires ✅SUCCESS
rpm_symbol ✅SUCCESS
compare_package(aarch64) add_rpms ✅SUCCESS #54
delete_rpms ✅SUCCESS
rpm_abi ✅SUCCESS
rpm_cmd ✅SUCCESS
rpm_files ✅SUCCESS
rpm_header ✅SUCCESS
rpm_lib ✅SUCCESS
rpm_provides ✅SUCCESS
rpm_requires ✅SUCCESS
rpm_symbol ✅SUCCESS
likedislike
openeuler-bot
openeuler-bot成员
3 天前 评论:
likedislike