Cloudanix VulnDB

CVE-2025-39673

Medium · 4.7

CVSS

4.7

EPSS

0.3%

Published

Sep 5, 2025

CISA due date

—

Cloudanix analysis

Schedule a fix SSVC: Track

A flaw in Linux networking code can let local users crash the whole system by racing network channel operations.

Exploitation
Local Privilege
Attacker needs
Low Privilege
Complexity
High
Impact
Denial Of Service
Component
OS kernel
Class
Race Condition
Remediation
Upgrade
Effort
Medium
Patch risk
Low

What it actually does

Race conditions in ppp_fill_forward_path allow list modification between checks without ppp_lock held or pch->chan becoming NULL before removal from ppp->channels, leading to use-after-free, NULL dereference, or kernel panic.

Why it matters to the business

Unprivileged local users can trigger kernel panics on Linux systems using PPP networking, causing denial of service, loss of network connectivity, and potential service disruption on servers or containers; prevalence in the Linux kernel ecosystem increases exposure across many deployments.

How an attack unfolds

An attacker with local access manipulates PPP channels via ppp_disconnect_channel or ppp_unregister_channel while ppp_fill_forward_path executes, racing the list_empty/list_first_entry or NULL check to trigger a panic; no named threat actors are associated with this specific flaw.

How to fix it

Upgrade the Linux kernel to the fixed commit 9a1969fbffc1f1900d92d7594b1b7d8d72ef3dc7 or later stable releases containing the RCU-based list handling and NULL checks; apply patches promptly given the 417 days since publication.

How to confirm the fix worked

Verify kernel source contains the RCU list_first_or_null_rcu usage, synchronize_net after channel removal, and pch->chan NULL guard; confirm no panic occurs under concurrent channel add/remove stress tests.

Typical attack path

  1. Obtain local unprivileged access on a Linux system with PPP enabled
  2. Create and manipulate PPP channels to trigger concurrent list modifications
  3. Invoke ppp_fill_forward_path during the window where channels list changes or chan becomes NULL
  4. Cause kernel panic via invalid list access or NULL dereference

How to detect it

Review kernel logs for ppp-related oops or panic traces involving list traversal or channel pointers; correlate with PPP channel creation/deletion events in system audit logs.

What your security team should do

  • Prioritize kernel upgrades on all systems using PPP within the next maintenance window
  • Monitor for related privilege-escalation patterns in Container-Optimized OS environments
  • Restrict unprivileged access to PPP interfaces where feasible until patched
  • Test fixed kernels in staging before broad deployment

The record

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.

Affected packages

Ecosystem Package Introduced Fixed
Debian:12 linux 0 No fix
Debian:13 linux 0 No fix
Debian:14 linux 0 No fix
Debian:14 linux 0 6.16.5-1
Linux Kernel 5.13.0 5.15.190
Mageia:9 kernel 0 6.6.105-1.mga9
Mageia:9 kernel-linus 0 6.6.105-1.mga9
Mageia:9 kmod-virtualbox 0 7.1.10-10.mga9
Mageia:9 kmod-xtables-addons 0 3.24-86.mga9
Mageia:9 mageia-repos 0 9-4.mga9
Mageia:9 meta-task 0 9-4.mga9
SUSE:Linux Enterprise High Availability Extension 15 SP6 kernel-default 0 6.4.0-150600.23.78.1
SUSE:Linux Enterprise High Availability Extension 15 SP7 kernel-default 0 6.4.0-150700.53.22.1
SUSE:Linux Enterprise Live Patching 15 SP6 kernel-default 0 6.4.0-150600.23.78.1
SUSE:Linux Enterprise Live Patching 15 SP6 kernel-livepatch-SLE15-SP6-RT_Update_17 0 1-150600.1.3.1
SUSE:Linux Enterprise Live Patching 15 SP6 kernel-livepatch-SLE15-SP6_Update_17 0 1-150600.13.5.1
SUSE:Linux Enterprise Live Patching 15 SP7 kernel-default 0 6.4.0-150700.53.22.1
SUSE:Linux Enterprise Live Patching 15 SP7 kernel-livepatch-SLE15-SP7_Update_6 0 1-150700.15.3.1
SUSE:Linux Enterprise Module for Basesystem 15 SP6 kernel-64kb 0 6.4.0-150600.23.78.1
SUSE:Linux Enterprise Module for Basesystem 15 SP6 kernel-default 0 6.4.0-150600.23.78.1
SUSE:Linux Enterprise Module for Basesystem 15 SP6 kernel-default-base 0 6.4.0-150600.23.78.1.150600.12.34.2
SUSE:Linux Enterprise Module for Basesystem 15 SP6 kernel-source 0 6.4.0-150600.23.78.1
SUSE:Linux Enterprise Module for Basesystem 15 SP6 kernel-zfcpdump 0 6.4.0-150600.23.78.1
SUSE:Linux Enterprise Module for Basesystem 15 SP7 kernel-64kb 0 6.4.0-150700.53.22.1
SUSE:Linux Enterprise Module for Basesystem 15 SP7 kernel-default 0 6.4.0-150700.53.22.1
SUSE:Linux Enterprise Module for Basesystem 15 SP7 kernel-default-base 0 6.4.0-150700.53.22.1.150700.17.15.1
SUSE:Linux Enterprise Module for Basesystem 15 SP7 kernel-source 0 6.4.0-150700.53.22.1
SUSE:Linux Enterprise Module for Basesystem 15 SP7 kernel-zfcpdump 0 6.4.0-150700.53.22.1
SUSE:Linux Enterprise Module for Development Tools 15 SP6 kernel-docs 0 6.4.0-150600.23.78.1
SUSE:Linux Enterprise Module for Development Tools 15 SP6 kernel-obs-build 0 6.4.0-150600.23.78.1
SUSE:Linux Enterprise Module for Development Tools 15 SP6 kernel-source 0 6.4.0-150600.23.78.1
SUSE:Linux Enterprise Module for Development Tools 15 SP6 kernel-syms 0 6.4.0-150600.23.78.1
SUSE:Linux Enterprise Module for Development Tools 15 SP7 kernel-docs 0 6.4.0-150700.53.22.1
SUSE:Linux Enterprise Module for Development Tools 15 SP7 kernel-obs-build 0 6.4.0-150700.53.22.1
SUSE:Linux Enterprise Module for Development Tools 15 SP7 kernel-source 0 6.4.0-150700.53.22.1
SUSE:Linux Enterprise Module for Development Tools 15 SP7 kernel-syms 0 6.4.0-150700.53.22.1
SUSE:Linux Enterprise Module for Legacy 15 SP6 kernel-default 0 6.4.0-150600.23.78.1
SUSE:Linux Enterprise Module for Legacy 15 SP7 kernel-default 0 6.4.0-150700.53.22.1
SUSE:Linux Enterprise Module for Public Cloud 15 SP6 kernel-azure 0 6.4.0-150600.8.55.1
SUSE:Linux Enterprise Module for Public Cloud 15 SP6 kernel-source-azure 0 6.4.0-150600.8.55.1
SUSE:Linux Enterprise Module for Public Cloud 15 SP6 kernel-syms-azure 0 6.4.0-150600.8.55.1
SUSE:Linux Enterprise Module for Public Cloud 15 SP7 kernel-azure 0 6.4.0-150700.20.18.1
SUSE:Linux Enterprise Module for Public Cloud 15 SP7 kernel-source-azure 0 6.4.0-150700.20.18.1
SUSE:Linux Enterprise Module for Public Cloud 15 SP7 kernel-syms-azure 0 6.4.0-150700.20.18.1
SUSE:Linux Enterprise Workstation Extension 15 SP6 kernel-default 0 6.4.0-150600.23.78.1
SUSE:Linux Enterprise Workstation Extension 15 SP7 kernel-default 0 6.4.0-150700.53.22.1
SUSE:Real Time Module 15 SP6 kernel-rt 0 6.4.0-150600.10.58.1
SUSE:Real Time Module 15 SP6 kernel-rt_debug 0 6.4.0-150600.10.58.1
SUSE:Real Time Module 15 SP6 kernel-source-rt 0 6.4.0-150600.10.58.1
SUSE:Real Time Module 15 SP6 kernel-syms-rt 0 6.4.0-150600.10.58.1
openSUSE:Leap 15.6 dtb-aarch64 0 6.4.0-150600.23.78.1
openSUSE:Leap 15.6 kernel-64kb 0 6.4.0-150600.23.78.1
openSUSE:Leap 15.6 kernel-azure 0 6.4.0-150600.8.55.1
openSUSE:Leap 15.6 kernel-debug 0 6.4.0-150600.23.78.1
openSUSE:Leap 15.6 kernel-default 0 6.4.0-150600.23.78.1
openSUSE:Leap 15.6 kernel-default-base 0 6.4.0-150600.23.78.1.150600.12.34.2
openSUSE:Leap 15.6 kernel-docs 0 6.4.0-150600.23.78.1
openSUSE:Leap 15.6 kernel-kvmsmall 0 6.4.0-150600.23.78.1
openSUSE:Leap 15.6 kernel-obs-build 0 6.4.0-150600.23.78.1
openSUSE:Leap 15.6 kernel-obs-qa 0 6.4.0-150600.23.78.1
openSUSE:Leap 15.6 kernel-rt 0 6.4.0-150600.10.58.1
openSUSE:Leap 15.6 kernel-rt_debug 0 6.4.0-150600.10.58.1
openSUSE:Leap 15.6 kernel-source 0 6.4.0-150600.23.78.1
openSUSE:Leap 15.6 kernel-source-azure 0 6.4.0-150600.8.55.1
openSUSE:Leap 15.6 kernel-source-rt 0 6.4.0-150600.10.58.1
openSUSE:Leap 15.6 kernel-syms 0 6.4.0-150600.23.78.1
openSUSE:Leap 15.6 kernel-syms-azure 0 6.4.0-150600.8.55.1
openSUSE:Leap 15.6 kernel-syms-rt 0 6.4.0-150600.10.58.1
openSUSE:Leap 15.6 kernel-zfcpdump 0 6.4.0-150600.23.78.1
openSUSE:Leap 16.0 dtb-aarch64 0 6.12.0-160000.6.1
openSUSE:Leap 16.0 kernel-64kb 0 6.12.0-160000.6.1
openSUSE:Leap 16.0 kernel-default 0 6.12.0-160000.6.1
openSUSE:Leap 16.0 kernel-default-base 0 6.12.0-160000.6.1.160000.2.4
openSUSE:Leap 16.0 kernel-docs 0 6.12.0-160000.6.1
openSUSE:Leap 16.0 kernel-kvmsmall 0 6.12.0-160000.6.1
openSUSE:Leap 16.0 kernel-obs-build 0 6.12.0-160000.6.1
openSUSE:Leap 16.0 kernel-obs-qa 0 6.12.0-160000.6.1
openSUSE:Leap 16.0 kernel-rt 0 6.12.0-160000.6.1
openSUSE:Leap 16.0 kernel-source 0 6.12.0-160000.6.1
openSUSE:Leap 16.0 kernel-syms 0 6.12.0-160000.6.1
openSUSE:Leap 16.0 kernel-zfcpdump 0 6.12.0-160000.6.1

Related vulnerabilities