ppp: fix race conditions in ppp_fill_forward_path
- Published
- Last modified
- Where the record stands: published, rejected by its publisher, or superseded by another id.What do these mean? →
- published
- Whether CISA lists it in its Known Exploited Vulnerabilities catalog: proof that attackers are using it.What do these mean? →
- Not listed in CISA KEV
- Fix
- Fixed in 5.15.190, 6.1.149, 6.6.103, 6.12.44, 6.16.4
- Whether working attack code is public (Exploit-DB, Metasploit, Nuclei or GitHub). Public code makes attacks easier.What do these mean? →
- 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
- CVE published
- CISA SSVC assessment
Exploitation: none · Automatable: yes · Technical impact: total
- 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