CVE-2025-38377: rose: fix dangling neighbour pointers in rose_rt_device_down()
In the Linux kernel, the following vulnerability has been resolved:
rose: fix dangling neighbour pointers in rose_rt_device_down()
There are two bugs in rose_rt_device_down() that can cause
use-after-free:
1. The loop bound `t->count` is modified within the loop, which can
cause the loop to terminate early and miss some entries.
2. When removing an entry from the neighbour array, the subsequent entries
are moved up to fill the gap, but the loop index `i` is still
incremented, causing the next entry to be skipped.
For example, if a node has three neighbours (A, A, B) with count=3 and A
is being removed, the second A is not checked.
i=0: (A, A, B) -> (A, B) with count=2
^ checked
i=1: (A, B) -> (A, B) with count=2
^ checked (B, not A!)
i=2: (doesn't occur because i < count is false)
This leaves the second A in the array with count=2, but the rose_neigh
structure has been freed. Code that accesses these entries assumes that
the first `count` entries are valid pointers, causing a use-after-free
when it accesses the dangling pointer.
Fix both issues by iterating over the array in reverse order with a fixed
loop bound. This ensures that all entries are examined and that the removal
of an entry doesn't affect subsequent iterations.
Security readout for executives and security teams
Plain-English summary
A Linux kernel routing cleanup flaw can leave freed ROSE neighbour objects referenced after a network device goes down. Later access may corrupt memory, crash the system, or potentially compromise confidentiality and integrity. Actual risk depends on whether the affected ROSE networking path is present and used.
Executive priority
Treat as a high-priority kernel maintenance issue on systems using ROSE networking. Expedite vendor updates for exposed or operationally important hosts; use normal accelerated patching elsewhere after confirming applicability. There is no source-backed basis for declaring an active emergency.
Technical view
Two loop errors in rose_rt_device_down() can skip duplicate neighbour entries while compacting an array. The associated rose_neigh object is then freed, leaving a dangling pointer within the valid entry count. Subsequent access causes a use-after-free. Linux stable commits correct the logic by iterating backward with a fixed bound.
Likely exposure
Exposure requires an affected Linux kernel and execution of the ROSE device-down cleanup path with relevant neighbour entries. The supplied version data is ambiguous, so assess distribution kernels by vendor advisory and fixed-commit inclusion rather than version strings alone.
Exploitation context
CVSS 3.1 scores this 8.8 with adjacent-network reach, low complexity, no privileges, and no user interaction. The bundle reports no CISA KEV listing and provides no evidence of active exploitation or a public exploit. Practical triggering conditions are not fully documented.
Researcher notes
The vulnerable state involves duplicate references surviving neighbour-array compaction during device teardown. Both a shrinking loop bound and unconditional index increment contribute to skipped entries. The published fix changes traversal semantics. The supplied sources do not establish reliable exploitation, trigger reachability, or downstream package boundaries for every distribution.
Mitigation direction
Install a vendor-supported kernel containing the applicable Linux stable fix.
Use the distribution advisories to identify corrected packages for each deployed release.
Prioritize systems where ROSE networking is configured or operationally required.
If immediate updating is impossible, obtain risk-reduction guidance from the Linux distribution vendor.
Validation and detection
Inventory Linux kernel versions across physical hosts, virtual machines, and appliances.
Check whether each downstream kernel contains the relevant stable fix commit.
Determine whether ROSE networking is available, configured, or actively used.
Review kernel logs for related memory faults or crashes without treating them as proof of exploitation.
After updating, confirm the corrected kernel is running following any required reboot.
Generated from the cited source records. This long-tail analysis has not been individually reviewed by a named human.
Potential ATT&CK relevance
Conservative CVE-to-ATT&CK context
These mappings and lookup hints may be relevant to the vulnerability behavior, CWE, affected product, or exposure path. Glexia-inferred context is not an official MITRE, ATT&CK, CWE, or CVE Program mapping.
ATT&CK lookup starting points
Use these exact CWE pages and searches to review the Glexia ATT&CK library from this CVE's weakness and description context.
cve · low confidence lookup
CVE-2025-38377 mapping review
Open the CVE-to-ATT&CK bridge for reviewed, inferred, or future official mappings tied to this CVE.
These fields come from the CVE record and ADP containers, not from Glexia's Take. They preserve time-varying source decisions such as CISA SSVC, KEV status, CVSS metrics, and provider references.
1CVSS vectors
3Timeline events
1ADP providers
11Source links
CVSS vector scores
1 official score
We collect every scored CVSS vector available in the official CNA and ADP containers. When more than one version is present, the table keeps the source vectors side by side instead of collapsing them into the highest score.