CVE-2025-39673: ppp: fix race conditions in ppp_fill_forward_path

Published Sep 5, 2025
·
Updated

In the Linux kernel, the following vulnerability has been resolved:

ppp: fix race conditions in pppfillforwardpath

pppfillforwardpath() has two race conditions:

1. The ppp->channels list can change between listempty() and listfirstentry(), as ppplock() is not held. If the only channel is deleted in pppdisconnectchannel(), listfirstentry() may access an empty head or a freed entry, and trigger a panic.

2. pch->chan can be NULL. When pppunregisterchannel() is called, pch->chan is set to NULL before pch is removed from ppp->channels.

Fix these by using a lockless RCU approach: - Use listfirstornullrcu() to safely test and access the first list entry. - Convert list modifications on ppp->channels to their RCU variants and add synchronizenet() after removal. - Check for a NULL pch->chan before dereferencing it.

Affected Software

12 affected componentsFixes available
Linux Linux kernel
Microsoft azl3 kernel 6.6.96.2-2
Microsoft azl3 kernel 6.6.96.2-1
Linux Linux kernel>=5.13<5.15.190
Linux Linux kernel>=5.16<6.1.149
Linux Linux kernel>=6.2<6.6.103
Linux Linux kernel>=6.7<6.12.44
Linux Linux kernel>=6.13<6.16.4
Linux Linux kernel=6.17-rc1
Linux Linux kernel=6.17-rc2
Debian Debian Linux=11.0
Microsoft cbl2 kernel 5.15.186.1-1

Remediation

Recommended actions to resolve this vulnerability, in priority order.

  1. Configuration

    Add a NULL check for pch->chan before dereferencing it in the affected PPP forward-path/channel code paths.

    Linux kernel PPP (ppp_fill_forward_path / ppp_unregister_channel / ppp_disconnect_channel) NULL-check pch->chan before dereference = if (pch->chan == NULL) handle safely without dereferencing
  2. Configuration

    Fix the race by converting ppp->channels list modifications to their RCU variants and use list_first_or_null_rcu() for safely testing/accessing the first list entry (avoid list_empty()/list_first_entry() races when ppp_lock() is not held).

    Linux kernel PPP (ppp->channels list handling) Use RCU variants for ppp->channels list modifications and access = use lockless RCU list operations; replace list modifications with their RCU variants and access using list_first_or_null_rcu()
  3. Configuration

    When ppp_unregister_channel() removes the channel from ppp->channels, add synchronize_net() after the removal to ensure readers using RCU do not access freed entries/panic.

    Linux kernel PPP (ppp_unregister_channel) RCU grace period after removal = call synchronize_net() after removal

Event History

Sep 5, 2025
CVE Published
via MITRE·05:20 PM
Data Sourced
via MITRE·05:20 PM
DescriptionSeverity
Data Sourced
via NVD·06:15 PM
RemedyDescriptionSeverityWeaknessAffected Software
Sep 7, 2025
Data Sourced
via Microsoft·01:11 AM
DescriptionSeverityWeaknessAffected Software
Updated
via Microsoft·01:11 AM
SeverityAffected Software
Updated
via Microsoft·08:11 AM
SeverityAffected Software
Updated
via Microsoft·08:11 AM
DescriptionSeverity
Free Weekly Intel

Don't miss critical vulnerabilities

Join thousands of security professionals who receive our weekly digest of trending CVEs, zero-days, and exploited vulnerabilities.

No spam. Unsubscribe anytime.

Frequently Asked Questions

1

What is the severity of CVE-2025-39673?

CVE-2025-39673 is considered a medium severity vulnerability due to potential race conditions in the ppp_fill_forward_path function in the Linux kernel.

2

How do I fix CVE-2025-39673?

To mitigate CVE-2025-39673, it is recommended to update the Linux kernel to the latest version that includes the fix for this vulnerability.

3

What is the impact of CVE-2025-39673?

The impact of CVE-2025-39673 includes the possibility of race conditions which could potentially lead to unpredictable behavior in networking functionalities.

4

Which systems are affected by CVE-2025-39673?

CVE-2025-39673 affects versions of the Linux kernel that include the ppp subsystem.

5

What is the primary vulnerability in CVE-2025-39673?

The primary vulnerability in CVE-2025-39673 involves race conditions occurring in the ppp_fill_forward_path function due to improper locking.

Contact

SecAlerts Pty Ltd.
132 Wickham Terrace
Fortitude Valley,
QLD 4006, Australia
info@secalerts.co
By using SecAlerts services, you agree to our services end-user license agreement. This website is safeguarded by reCAPTCHA and governed by the Google Privacy Policy and Terms of Service. All names, logos, and brands of products are owned by their respective owners, and any usage of these names, logos, and brands for identification purposes only does not imply endorsement. If you possess any content that requires removal, please get in touch with us.
© 2026 SecAlerts Pty Ltd.
ABN: 70 645 966 203, ACN: 645 966 203