漏洞标题
irqchip/gic-v2m: 防止gicv2m_get_fwnode()的使用后释放问题
漏洞描述信息
## 漏洞概述
Linux内核中的`irqchip/gic-v2m`模块存在一个use after free漏洞,该漏洞涉及`gicv2m_get_fwnode()`函数。
## 影响版本
暂未明确指定,但涉及使用ACPI的Linux内核版本。
## 漏洞细节
在启用ACPI的情况下,`gicv2m_get_fwnode()`函数被注册为PCI子系统的回调函数`pci_msi_get_fwnode_cb()`。此回调函数在PCI主机桥接器探测过程中可能被调用。然而,该回调函数被错误地标记为`__init`类型,当它被PCI子系统注册时,可能会被释放,从而触发一次use after free漏洞。
具体错误表现为:
```
Unable to handle kernel paging request at virtual address ffff8000816c0400
gicv2m_get_fwnode+0x0/0x58 (P)
pci_set_bus_msi_domain+0x74/0x88
pci_register_host_bridge+0x194/0x548
```
此问题在使用ACPI启动的Juno板上可以轻松复现。
## 影响
该漏洞可能导致内核崩溃或被利用进行权限提升攻击。需要保留函数以备后续使用。
CVSS信息
CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:N/A:H
漏洞类别
释放后使用
漏洞标题
irqchip/gic-v2m: Prevent use after free of gicv2m_get_fwnode()
漏洞描述信息
In the Linux kernel, the following vulnerability has been resolved:
irqchip/gic-v2m: Prevent use after free of gicv2m_get_fwnode()
With ACPI in place, gicv2m_get_fwnode() is registered with the pci
subsystem as pci_msi_get_fwnode_cb(), which may get invoked at runtime
during a PCI host bridge probe. But, the call back is wrongly marked as
__init, causing it to be freed, while being registered with the PCI
subsystem and could trigger:
Unable to handle kernel paging request at virtual address ffff8000816c0400
gicv2m_get_fwnode+0x0/0x58 (P)
pci_set_bus_msi_domain+0x74/0x88
pci_register_host_bridge+0x194/0x548
This is easily reproducible on a Juno board with ACPI boot.
Retain the function for later use.
CVSS信息
N/A
漏洞类别
N/A