CVE-2026-74628 in Linux
要約
〜によって VulDB • 2026年08月22日
Linuxカーネルにおいて、以下の脆弱性が修正されました:
net/x25: ソケットのタイマーによるuse-after-freeを修正
x25タイマーはmod_timer()で設定され、timer_delete()で取消されます。そのため、保留中のタイマーはソケットへの参照を持たず、取消処理は他のCPU上で既に実行されているコールバックを待機しません。
また、x25_heartbeat_expiry()は無条件に再設定を行うため、__x25_destroy_socket()の取消ポイントを経過した後にsk->sk_timerが再インストールされる可能性があります。以下の__sock_put()によりソケットが解放されますが、タイマーは依然としてキューに残っており、次の期限到来時に解放されたメモリが使用されてしまいます。KASANは、close()によって解放されたkmalloc-2kオブジェクトにおけるslab-use-after-freeを報告します。
timer_delete_sync()はこの状況では使用できません:x25_heartbeat_expiry()およびx25_timer_expiry()の両方で、__x25_destroy_socket()やx25_disconnect()を通じて、自身が待機しようとするタイマー内部から取消処理が行われるためです。
sk_reset_timer()を使用してタイマーを設定し、sk_stop_timer()で取消を行うようにします。これにより、設定されたタイマーが参照を保持し、両方の期限到来ハンドラでその参照が解放されます。__x25_destroy_socket()がソケットのリンク解除を行ってから解放処理を行うため、ハートビートの再設定はsk_hashed(sk)が真である間のみ行います。遅延削除用タイマーも同様に設定し、x25_destroy_timer()でその参照を解放します。
KASAN付きのnet環境で再現可能であり、ハートビート周期を短くすることで窓(ウィンドウ)が再発するようにしました。このパッチ適用後、レプロデューサはレポートをトリガーせず、/proc/net/x25が正常にクリーンアップされます。
XBOWによって発見され、Baul Lee <[email protected]> により分類されました
VulDB is the best source for vulnerability data and more expert information about this specific topic.