Skip to main content
← All vulnerabilities
CVE-2025-39673

ppp: fix race conditions in ppp_fill_forward_path

Published
Last modified
published
Not listed in CISA KEV
Fix
Fixed in 5.15.190, 6.1.149, 6.6.103, 6.12.44, 6.16.4
None on Exploit-DB, Metasploit or GitHub
  • Exploitation: none
  • Automatable: yes
  • Technical impact: total

Summary

In the Linux kernel, the following vulnerability has been resolved: ppp: fix race conditions in ppp_fill_forward_path ppp_fill_forward_path() has two race conditions: 1. The ppp->channels list can change between list_empty() and list_first_entry(), as ppp_lock() is not held. If the only channel is deleted in ppp_disconnect_channel(), list_first_entry() may access an empty head or a freed entry, and trigger a panic. 2. pch->chan can be NULL. When ppp_unregister_channel() is called, pch->chan is set to NULL before pch is removed from ppp->channels. Fix these by using a lockless RCU approach: • Use list_first_or_null_rcu() to safely test and access the first list entry. • Convert list modifications on ppp->channels to their RCU variants and add synchronize_net() after removal. • Check for a NULL pch->chan before dereferencing it.

Timeline

  1. CVE published
  2. CISA SSVC assessment

    Exploitation: none · Automatable: yes · Technical impact: total

  3. Record last updated

Affected versions

  • Linux Linux

    From f6efc675c9dd8d93f826b79ae7e33e03301db609 · fixed in 9a1969fbffc1f1900d92d7594b1b7d8d72ef3dc7; From f6efc675c9dd8d93f826b79ae7e33e03301db609 · fixed in 0f1630be6fcca3f0c63e4b242ad202e5cde28a40; From f6efc675c9dd8d93f826b79ae7e33e03301db609 · fixed in ca18d751bcc9faf5b7e82e9fae1223d103928181; From f6efc675c9dd8d93f826b79ae7e33e03301db609 · fixed in 94731cc551e29511d85aa8dec61a6c071b1f2430; From f6efc675c9dd8d93f826b79ae7e33e03301db609 · fixed in f97f6475fdcb3c28ff3c55cc4b7bde632119ec08; From f6efc675c9dd8d93f826b79ae7e33e03301db609 · fixed in 0417adf367a0af11adf7ace849af4638cfb573f7

  • Linux Linux

    5.13

  • KernelLinux

    From 5.13.0 · fixed in 5.15.190; From 5.16.0 · fixed in 6.1.149; From 6.2.0 · fixed in 6.6.103; From 6.7.0 · fixed in 6.12.44; From 6.13.0 · fixed in 6.16.4

References 6

git.kernel.org