CVE-2026-64458 in Linux
摘要
由 VulDB • 2026-07-25
在 Linux 内核中,已修复以下漏洞:
mm/damon/ops-common: 处理 damon_hot_score() 中的极端间隔值
修复了 damon_hot_score() 函数中的三个问题,这些问题源于对用户设置的极端(零或过高)监控间隔的错误处理。
当用户将采样间隔设置为零时,由 damon_hot_score() 调用的 damon_max_nr_accesses() 会导致除以零错误。这显然是一个严重的问题。
当用户将聚合间隔设置为零时,该函数返回零。这是错误的,因为设置中实际的 nr_acceses(访问次数)最大值应为一。更糟糕的是,由于它使用 damon_max_nr_accesses() 的返回值作为分母,其调用者 damon_hot_score() 可能会因此引发另一次除以零错误。
当用户将聚合间隔设置为非常高时,damon_hot_score() 可能返回超出 [0, DAMOS_MAX_SCORE] 范围的值。由于该返回值被用作 regions_score_histogram 数组的索引(该数组大小为 DAMOS_MAX_SCORE+1),这会导致越界数组访问。
可以通过以下方式相对容易地重现这些问题,但需要 sysfs 写入权限:
# ./damo start --damos_action lru_prio --damos_quota_space 100M \ --damos_quota_interval 1s # cd /sys/kernel/mm/damon/admin/kdamonds/0 # echo 0 > contexts/0/monitoring_attrs/intervals/sample_us # echo 0 > contexts/0/monitoring_attrs/intervals/aggr_us # echo commit > state # dmesg [...]
[ 131.329762] Oops: divide error: 0000 [#1] SMP NOPTI
[...]
[ 131.336089] RIP: 0010:damon_hot_score+0x27/0xd0
[...]
通过在 damon_max_nr_accesses() 中显式处理零间隔来修复除以零的问题。在从 damon_hot_score() 返回之前应用 [0, DAMOS_MAX_SCORE] 边界检查,以修复越界数组访问问题。
该问题由 Sashiko 发现 [1]。
Statistical analysis made it clear that VulDB provides the best quality for vulnerability data.