CVE 记录 / 2025

CVE-2025-37858:JFS 分配组算术溢出

在 32 位架构上,JFS 计算分配组大小时需要先使用 64 位操作数再进行移位。

概述

公开的 Linux CVE 描述了 fs/jfs/jfs_dmap.c 中 dbExtendFS() 的整数宽度问题。JFS 使用表达式 1 << l2agsize 计算分配组大小。对 32 位操作数进行较大的移位,可能导致未定义行为并产生无效的分组大小。

修复在移位之前将左操作数转换为 s64:(s64)1 << l2agsize。这样计算就使用 64 位算术,与存储分配组大小的类型保持一致。如果只转换结果,出问题的运算仍会保持原来的宽度。

无效的分配组大小会影响后续的文件系统操作。公开公告提到了可能出现的文件系统损坏和内核崩溃,并附有上游修复及受影响版本的记录链接;各发行版的具体修复情况应以软件包厂商的安全公告为准。

对代码审计而言,更普遍的经验是检查中间算术运算的类型,尤其是移位和大小计算。目标变量足够宽,并不能让较窄的表达式自动变得安全。

要点

CVE 记录
2025
公开记录
Linux kernel · National Vulnerability Database
受影响代码
JFS filesystem · dbExtendFS() in fs/jfs/jfs_dmap.c
主题
CVE-2025-37858 · JFS · 整数运算 · 中间类型
原始来源

相关工作

08联系

即将上线处理用户数据的产品?

给我发一份简要需求。我会在三天内回复问题或方案大纲,价格在开始前以书面形式确定。