一、漏洞信息
漏洞编号:CVE-2025-39735
漏洞归属组件:kernel
漏洞归属的版本:4.19.140,4.19.194,4.19.90,5.10.0,6.1.19,6.4.0,6.6.0
CVSS V3.0分值:
BaseScore:7.1 High
Vector:CVSS:3.0/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:N/A:H
漏洞简述:
In the Linux kernel, the following vulnerability has been resolved:jfs: fix slab-out-of-bounds read in ea_get()During the size_check label in ea_get(), the code checks if the extendedattribute list (xattr) size matches ea_size. If not, it logs ea_get: invalid extended attribute and calls print_hex_dump().Here, EALIST_SIZE(ea_buf->xattr) returns 4110417968, which exceedsINT_MAX (2,147,483,647). Then ea_size is clamped: int size = clamp_t(int, ea_size, 0, EALIST_SIZE(ea_buf->xattr));Although clamp_t aims to bound ea_size between 0 and 4110417968, the upperlimit is treated as an int, causing an overflow above 2^31 - 1. This leads size to wrap around and become negative (-184549328).The size is then passed to print_hex_dump() (called len inprint_hex_dump()), it is passed as type size_t (an unsignedtype), this is then stored inside a variable called int remaining , which is then assigned to int linelen whichis then passed to hex_dump_to_buffer(). In print_hex_dump()the for loop, iterates through 0 to len-1, where len is18446744073525002176, calling hex_dump_to_buffer()on each iteration: for (i = 0; i < len; i += rowsize) { linelen = min(remaining, rowsize); remaining -= rowsize; hex_dump_to_buffer(ptr + i, linelen, rowsize, groupsize, linebuf, sizeof(linebuf), ascii); ... }The expected stopping condition (i < len) is effectively brokensince len is corrupted and very large. This eventually leads tothe ptr+i being passed to hex_dump_to_buffer() to get closerto the end of the actual bounds of ptr , eventually an out ofbounds access is done in hex_dump_to_buffer() in the followingfor loop: for (j = 0; j < len; j++) { if (linebuflen < lx + 2) goto overflow2; ch = ptr[j]; ... }To fix this we should validate EALIST_SIZE(ea_buf->xattr) before it is utilised.
漏洞公开时间:2025-04-18 15:15:44
漏洞创建时间:2025-04-19 00:01:45
漏洞详情参考链接:
https://nvd.nist.gov/vuln/detail/CVE-2025-39735
漏洞分析指导链接:
https://gitee.com/openeuler/cve-manager/blob/master/cve-vulner-manager/doc/md/manual.md
漏洞数据来源:
openBrain开源漏洞感知系统
漏洞补丁信息:
二、漏洞分析结构反馈
影响性分析说明:
In the Linux kernel, the following vulnerability has been resolved:jfs: fix slab-out-of-bounds read in ea_get()During the "size_check" label in ea_get(), the code checks if the extendedattribute list (xattr) size matches ea_size. If not, it logs"ea_get: invalid extended attribute" and calls print_hex_dump().Here, EALIST_SIZE(ea_buf->xattr) returns 4110417968, which exceedsINT_MAX (2,147,483,647). Then ea_size is clamped:int size = clamp_t(int, ea_size, 0, EALIST_SIZE(ea_buf->xattr));Although clamp_t aims to bound ea_size between 0 and 4110417968, the upperlimit is treated as an int, causing an overflow above 2^31 - 1. This leads"size" to wrap around and become negative (-184549328).The "size" is then passed to print_hex_dump() (called "len" inprint_hex_dump()), it is passed as type size_t (an unsignedtype), this is then stored inside a variable called"int remaining", which is then assigned to "int linelen" whichis then passed to hex_dump_to_buffer(). In print_hex_dump()the for loop, iterates through 0 to len-1, where len is18446744073525002176, calling hex_dump_to_buffer()on each iteration:for (i = 0; i < len; i += rowsize) {linelen = min(remaining, rowsize);remaining -= rowsize;hex_dump_to_buffer(ptr + i, linelen, rowsize, groupsize, linebuf, sizeof(linebuf), ascii);...}The expected stopping condition (i < len) is effectively brokensince len is corrupted and very large. This eventually leads tothe "ptr+i" being passed to hex_dump_to_buffer() to get closerto the end of the actual bounds of "ptr", eventually an out ofbounds access is done in hex_dump_to_buffer() in the followingfor loop:for (j = 0; j < len; j++) {if (linebuflen < lx + 2)goto overflow2;ch = ptr[j];...}To fix this we should validate "EALIST_SIZE(ea_buf->xattr)"before it is utilised.The Linux kernel CVE team has assigned CVE-2025-39735 to this issue.
openEuler评分:
3.9
Vector:CVSS:3.0/AV:L/AC:H/PR:H/UI:N/S:U/C:L/I:L/A:L
受影响版本排查(受影响/不受影响):
1.openEuler-24.03-LTS(6.6.0):受影响
2.openEuler-24.03-LTS-SP1(6.6.0):受影响
3.openEuler-24.03-LTS-SP2(6.6.0):受影响
4.master(6.6.0):不受影响
5.openEuler-20.03-LTS-SP4(4.19.90):不受影响
6.openEuler-22.03-LTS-SP3(5.10.0):不受影响
7.openEuler-22.03-LTS-SP4(5.10.0):不受影响
8.openEuler-24.03-LTS-Next(6.6.0):不受影响
修复是否涉及abi变化(是/否):
1.master(6.6.0):否
2.openEuler-20.03-LTS-SP4(4.19.90):否
3.openEuler-22.03-LTS-SP3(5.10.0):否
4.openEuler-22.03-LTS-SP4(5.10.0):否
5.openEuler-24.03-LTS(6.6.0):否
6.openEuler-24.03-LTS-Next(6.6.0):否
7.openEuler-24.03-LTS-SP1(6.6.0):否
8.openEuler-24.03-LTS-SP2(6.6.0):否
原因说明:
1.openEuler-24.03-LTS(6.6.0):正常修复
2.openEuler-24.03-LTS-SP1(6.6.0):正常修复
3.openEuler-24.03-LTS-SP2(6.6.0):正常修复
4.master(6.6.0):不受影响-漏洞代码不能被攻击者触发
5.openEuler-24.03-LTS-Next(6.6.0):不受影响-漏洞代码不能被攻击者触发
6.openEuler-20.03-LTS-SP4(4.19.90):不受影响-漏洞代码不存在
7.openEuler-22.03-LTS-SP3(5.10.0):不受影响-漏洞代码不存在
8.openEuler-22.03-LTS-SP4(5.10.0):不受影响-漏洞代码不存在
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。
说明:补丁链接仅供初步排查参考,实际可用性请人工再次确认,补丁下载验证可使用CVE补丁工具。
若补丁不准确,烦请在此issue下评论 '/report-patch 参考网址 补丁链接1,补丁链接2' 反馈正确信息,便于我们不断优化工具,不胜感激。
如 /report-patch https://security-tracker.debian.org/tracker/CVE-2021-3997 https://github.com/systemd/systemd/commit/5b1cf7a9be37e20133c0208005274ce4a5b5c6a1
CVE-2025-39735
影响性分析说明:
In the Linux kernel, the following vulnerability has been resolved:
jfs: fix slab-out-of-bounds read in ea_get()
During the "size_check" label in ea_get(), the code checks if the extended
attribute list (xattr) size matches ea_size. If not, it logs
"ea_get: invalid extended attribute" and calls print_hex_dump().
Here, EALIST_SIZE(ea_buf->xattr) returns 4110417968, which exceeds
INT_MAX (2,147,483,647). Then ea_size is clamped:
int size = clamp_t(int, ea_size, 0, EALIST_SIZE(ea_buf->xattr));
Although clamp_t aims to bound ea_size between 0 and 4110417968, the upper
limit is treated as an int, causing an overflow above 2^31 - 1. This leads
"size" to wrap around and become negative (-184549328).
The "size" is then passed to print_hex_dump() (called "len" in
print_hex_dump()), it is passed as type size_t (an unsigned
type), this is then stored inside a variable called
"int remaining", which is then assigned to "int linelen" which
is then passed to hex_dump_to_buffer(). In print_hex_dump()
the for loop, iterates through 0 to len-1, where len is
18446744073525002176, calling hex_dump_to_buffer()
on each iteration:
for (i = 0; i < len; i += rowsize) {
linelen = min(remaining, rowsize);
remaining -= rowsize;
hex_dump_to_buffer(ptr + i, linelen, rowsize, groupsize,
linebuf, sizeof(linebuf), ascii);
...
}
The expected stopping condition (i < len) is effectively broken
since len is corrupted and very large. This eventually leads to
the "ptr+i" being passed to hex_dump_to_buffer() to get closer
to the end of the actual bounds of "ptr", eventually an out of
bounds access is done in hex_dump_to_buffer() in the following
for loop:
for (j = 0; j < len; j++) {
if (linebuflen < lx + 2)
goto overflow2;
ch = ptr[j];
...
}
To fix this we should validate "EALIST_SIZE(ea_buf->xattr)"
before it is utilised.
The Linux kernel CVE team has assigned CVE-2025-39735 to this issue.
openEuler评分:(评分和向量)
3.9
AV:L/AC:H/PR:H/UI:N/S:U/C:L/I:L/A:L
受影响版本排查(受影响/不受影响):
1.master(6.1.0):不受影响
2.openEuler-20.03-LTS-SP4:不受影响
3.openEuler-22.03-LTS-SP3:不受影响
4.openEuler-22.03-LTS-SP4:不受影响
5.openEuler-24.03-LTS:受影响
6.openEuler-24.03-LTS-Next:不受影响
7.openEuler-24.03-LTS-SP1:受影响
8.openEuler-24.03-LTS-SP2:受影响
修复是否涉及abi变化(是/否):
1.master(6.1.0):否
2.openEuler-20.03-LTS-SP4:否
3.openEuler-22.03-LTS-SP3:否
4.openEuler-22.03-LTS-SP4:否
5.openEuler-24.03-LTS:否
6.openEuler-24.03-LTS-Next:否
7.openEuler-24.03-LTS-SP1:否
8.openEuler-24.03-LTS-SP2:否
原因说明:
1.master(23.08.5):不受影响-漏洞代码不能被攻击者触发
2.openEuler-20.03-LTS-SP4:不受影响-漏洞代码不存在
3.openEuler-22.03-LTS-SP3:不受影响-漏洞代码不存在
4.openEuler-22.03-LTS-SP4:不受影响-漏洞代码不存在
5.openEuler-24.03-LTS:正常修复
6.openEuler-24.03-LTS-Next:不受影响-漏洞代码不能被攻击者触发
7.openEuler-24.03-LTS-SP1:正常修复
8.openEuler-24.03-LTS-SP2:正常修复
Sign in to comment
FileDragTip