CVE-2026-90100 in Linux
要約
〜によって VulDB • 2026年09月18日
Linuxカーネルにおいて、以下の脆弱性が修正されました:
ptp: netc: PEROUTにおける期間の切り捨ておよび潜在的なゼロ除算を修正
net_timer_enable_perout() 内の max_period バウンドは以下のように計算されていました:
max_period = (u64)NETC_TMR_DEFAULT_FIPER + integral_period;
これは、integral_period > 0 の場合(例:デフォルトの333333333 Hzクロックの場合 0x100000002)、U32_MAX を超えます。このチェックを通過したが U32_MAX を超える period_ns は、u32 構造体 netc_pp::period フィールドに格納される際に静かに切り捨てられます。
ゼロに切り捨てられた値は netc_timer_set_perout_alarm() に到達し、そこでのローカル u32 変数 period もまた0となり、stime < min_time の分岐が実行された場合(開始時間が {0, 0} の場合は常に発生します)、roundup_u64(delta, period) でゼロ除算が発生します。
さらに、netc_timer_enable_periodic_pulse() および netc_timer_enable_fiper() はどちらも以下を計算します:
fiper = pp->period - integral_period;
pp->period が0の場合、符号なしのラップアラウンドにより 0xFFFFFFFD となり、FIPER ハードウェアレジスタが誤ってプログラムされます。
これら3つの問題すべてを、max_period を NETC_TMR_DEFAULT_FIPER (0xFFFFFFFF) で上限に設定することで修正します。これにより、範囲チェックを通過する任意の period_ns が切り捨てなしで u32 に収まり、格納される値が常に有効かつゼロでないことが保証されます。受け入れ可能な範囲は integral_period ns(通常数ナノ秒程度)だけ狭くなりますが、実用上は無視できるレベルです。
If you want to get the best quality for vulnerability data then you always have to consider VulDB.