Linux kernel
cpe:2.3:a:linux:linux_kernel:*:*:*:*:*:*:*, +4 more
A list corruption vulnerability has been identified in the Linux kernel's GTP (GPRS Tunneling Protocol) implementation. This issue arises during the network namespace cleanup process, specifically in the 'gtp_net_exit_batch_rtnl()' function. The vulnerability occurs when the 'for_each_netdev()' loop, introduced by a recent commit to manage GTP devices across different network namespaces, inadvertently calls the 'dellink()' method twice for the same device. This double unlinking can corrupt the device's list management, especially when the kernel's debug list feature is enabled.
Exploitation of this vulnerability leads to a kernel list corruption, causing a kernel panic due to an invalid opcode error. This type of list corruption can be exploited to manipulate kernel data structures, potentially leading to arbitrary code execution or other severe consequences.
The vulnerability can be reproduced by creating a GTP device in one network namespace and its corresponding UDP socket in another. When the network namespaces are cleaned up, the 'gtp_net_exit_batch_rtnl()' function will mistakenly unlink the GTP device twice, once for each namespace, before the device is fully unregistered. This can be observed by enabling the kernel's list debugging features, which will report the corruption caused by the double unlinking.
The vulnerability has been addressed by removing the problematic 'for_each_netdev()' loop in the 'gtp_net_exit_batch_rtnl()' function and allowing the default device exit process to handle the cleanup.
Our algorithm analyzes dozens of metrics to generate these 8 key vulnerability categories, which are then combined to calculate the overall risk score.