CVE-2023-54012
Severity CVSS v4.0:
Pending analysis
Type:
Unavailable / Other
Publication date:
24/12/2025
Last modified:
29/12/2025
Description
In the Linux kernel, the following vulnerability has been resolved:<br />
<br />
net: fix stack overflow when LRO is disabled for virtual interfaces<br />
<br />
When the virtual interface&#39;s feature is updated, it synchronizes the<br />
updated feature for its own lower interface.<br />
This propagation logic should be worked as the iteration, not recursively.<br />
But it works recursively due to the netdev notification unexpectedly.<br />
This problem occurs when it disables LRO only for the team and bonding<br />
interface type.<br />
<br />
team0<br />
|<br />
+------+------+-----+-----+<br />
| | | | |<br />
team1 team2 team3 ... team200<br />
<br />
If team0&#39;s LRO feature is updated, it generates the NETDEV_FEAT_CHANGE<br />
event to its own lower interfaces(team1 ~ team200).<br />
It is worked by netdev_sync_lower_features().<br />
So, the NETDEV_FEAT_CHANGE notification logic of each lower interface<br />
work iteratively.<br />
But generated NETDEV_FEAT_CHANGE event is also sent to the upper<br />
interface too.<br />
upper interface(team0) generates the NETDEV_FEAT_CHANGE event for its own<br />
lower interfaces again.<br />
lower and upper interfaces receive this event and generate this<br />
event again and again.<br />
So, the stack overflow occurs.<br />
<br />
But it is not the infinite loop issue.<br />
Because the netdev_sync_lower_features() updates features before<br />
generating the NETDEV_FEAT_CHANGE event.<br />
Already synchronized lower interfaces skip notification logic.<br />
So, it is just the problem that iteration logic is changed to the<br />
recursive unexpectedly due to the notification mechanism.<br />
<br />
Reproducer:<br />
<br />
ip link add team0 type team<br />
ethtool -K team0 lro on<br />
for i in {1..200}<br />
do<br />
ip link add team$i master team0 type team<br />
ethtool -K team$i lro on<br />
done<br />
<br />
ethtool -K team0 lro off<br />
<br />
In order to fix it, the notifier_ctx member of bonding/team is introduced.
Impact
References to Advisories, Solutions, and Tools
- https://git.kernel.org/stable/c/4bb955c4d2830a58c08e2a48ab75d75368e3ff36
- https://git.kernel.org/stable/c/6bf00bb3dc7e5b9fb05488e11616e65d64e975fa
- https://git.kernel.org/stable/c/9ea0c5f90a27b5b884d880e146e0f65f3052e401
- https://git.kernel.org/stable/c/ae9b15fbe63447bc1d3bba3769f409d17ca6fdf6
- https://git.kernel.org/stable/c/cf3b5cd7127cc10c5b12400c545f263f0e5e715c
- https://git.kernel.org/stable/c/ed66e6327a69fec95034cda2ac5b6a57b8b3b622



