CVE-2023-53547CVE-2023-53547是Linux内核中AMD GPU驱动(amdgpu)的一个安全漏洞,具体存在于SDMA(System Direct Memory Access)v4版本4.2.2的软件关闭(sw_fini)流程中。该漏洞在驱动模块卸载或设备关闭过程中触发通用保护故障(general protection fault),导致内核崩溃。
漏洞的根本原因在于sdma_v4_0_sw_fini函数在执行SDMA实例上下文销毁时,amdgpu_sdma_destroy_inst_ctx调用amdgpu_ucode_release进而调用release_firmware,最终在free_fw_priv函数中出现空指针或非法地址解引用问题。攻击者通过在本地系统上加载和卸载受影响的amdgpu驱动模块,即可触发该漏洞,导致系统拒绝服务(内核崩溃)。
该漏洞的CVSS评分为5.5,属于中危级别。攻击向量为本地攻击(AV:L),需要低权限(PR:L),无需用户交互(UI:N),对机密性和完整性无影响,但对可用性影响为高(A:H)。这意味着该漏洞虽然不能直接用于权限提升或数据窃取,但可以被本地低权限用户利用来造成系统拒绝服务,影响系统稳定性。
该漏洞影响使用AMD GPU硬件且运行受影响Linux内核版本的系统,特别是在服务器和工作站环境中,频繁的驱动加载/卸载操作可能增加被利用的风险。漏洞已于2025年10月4日公开披露,相应的修复补丁已合并到Linux内核稳定分支中。
该漏洞的技术原理涉及amdgpu驱动中SDMA v4固件释放流程中的空指针解引用问题。具体技术细节如下:
1. **触发路径**:当系统执行amdgpu驱动的软件关闭流程(sw_fini)时,调用链为 sdma_v4_0_sw_fini() → amdgpu_sdma_destroy_inst_ctx() → amdgpu_ucode_release() → release_firmware() → free_fw_priv()。
2. **根本原因**:在free_fw_priv函数中,对固件私有数据(fw_priv)进行释放时,由于指针未正确初始化或已被释放,导致对非规范地址(non-canonical address)0xd5e5a4ae79d24a32的解引用,触发x86架构的通用保护故障(#GP)。
3. **漏洞触发条件**:在SDMA 4.2.2硬件上,当驱动模块被卸载或GPU设备关闭时,如果固件上下文未被正确初始化或初始化过程中出现异常,sw_fini流程中的清理代码将尝试释放无效的固件资源指针。
4. **利用方式**:攻击者只需具有本地低权限访问权限,通过以下步骤即可触发:
- 加载amdgpu驱动模块
- 访问AMD GPU设备节点
- 卸载驱动模块或触发设备关闭事件
- 内核在清理过程中触发通用保护故障,导致系统崩溃(内核panic)
5. **影响范围**:该漏洞仅影响使用AMD SDMA 4.2.2引擎的GPU硬件,对其他SDMA版本无影响。漏洞不影响数据机密性和完整性,但会导致系统完全不可用。