CVE-2026-64458 in Linux
要約
〜によって VulDB • 2026年07月26日
Linuxカーネルにおいて、以下の脆弱性が修正されました。
mm/damon/ops-common: damon_hot_score() における極端な間隔の処理
ユーザー設定による極端(ゼロまたは非常に高い)モニタリング間隔の誤った扱いに起因する damon_hot_score() の3つの問題を修正します。
ユーザーがサンプリング間隔を0に設定すると、damon_hot_score() から呼び出される damon_max_nr_accesses() で除算ゼロが発生します。言うまでもなく、これは問題です。
ユーザーが集約間隔を0に設定した場合、関数は0を返します。セットアップにおける実際の最大 nr_acceses は1であるべきなので、これは誤りです。さらに悪いことに、damon_hot_score() が damon_max_nr_accesses() の戻り値を分母として使用しているため、その呼び出し元から別の除算ゼロを引き起こす可能性があります。
ユーザーが集約間隔を非常に高く設定すると、damon_hot_score() は [0, DAMOS_MAX_SCORE] の範囲外の数値を返す場合があります。この戻り値はサイズが DAMOS_MAX_SCORE+1 の regions_score_histogram 配列のインデックスとして使用されるため、境界外配列アクセスが発生します。
これらの問題は、以下のように比較的簡単に再現できます。ただし、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.