CVE-2026-43455Linux内核的MCTP路由模块存在一个竞争条件漏洞。在`mctp_flow_prepare_output`函数中,检查并设置`key->dev`时未按预期持有`key->lock`锁。这导致在多核环境下,不同CPU核心可能同时通过检查并设置设备,造成设备引用计数泄漏,最终可能导致资源耗尽和拒绝服务。
该漏洞位于Linux内核网络子系统的MCTP协议实现中。函数`mctp_flow_prepare_output`旨在准备数据包输出路径,需要访问并可能修改路由键(key)中的设备指针(`key->dev`)。尽管相关函数`mctp_dev_set_key`要求调用者持有`key->lock`以序列化访问,但在`mctp_sendmsg`的发送路径中调用此函数时并未加锁。
具体攻击场景如下:两个CPU核心同时执行该函数,均检查到`key->dev`为空,随后分别调用`mctp_dev_set_key`为设备A和设备B增加引用计数。由于缺乏锁保护,后写入的操作会覆盖`key->dev`的值。结果导致先被写入的设备引用计数永远不会被释放,造成内存泄漏。长期利用此漏洞可耗尽系统资源,导致系统崩溃或拒绝服务。