CVE-2025-71101CVE-2025-71101是Linux内核中hp-bioscfg驱动程序的一个高危安全漏洞,CVSS评分7.1。该漏洞存在于hp_populate_*_elements_from_package()系列函数中,这些函数负责解析HP BIOS的ACPI配置包并转换为内核内部数据结构。漏洞的根本原因在于边界检查机制不完善:代码在遍历ACPI包元素时使用elem变量作为索引,但在访问多元素字段(如PREREQUISITES和ENUM_POSSIBLE_VALUES)时,通过elem+reqs或elem+pos_values的方式读取后续数组元素。然而,边界检查仅验证了elem本身的值,并未考虑这些额外偏移量,导致潜在的越界读取访问。这可能使本地低权限攻击者能够触发越界内存读取,造成敏感信息泄露或系统不稳定。攻击向量为本地,需要低权限,无需用户交互即可利用。
hp-bioscfg驱动是Linux内核platform/x86架构下的HP BIOS配置接口驱动。该驱动中的hp_populate_*_elements_from_package()函数族(包括hp_populate_enum_elements_from_package、hp_populate_integer_elements_from_package、hp_populate_order_elements_from_package、hp_populate_password_elements_from_package和hp_populate_string_elements_from_package)负责解析ACPI对象包。
漏洞机制:这些函数使用for循环遍历ACPI包,以elem作为索引访问enum_obj、integer_obj、order_obj、password_obj、string_obj等数组。在处理复合字段时,如PREREQUISITES(先决条件)和ENUM_POSSIBLE_VALUES(枚举可能值),代码通过类似enum_obj[elem+reqs]的表达式读取多个连续元素。问题在于边界检查仅验证elem<max_elements,但未检查elem+reqs或elem+pos_values是否超出数组边界。
攻击方式:攻击者需要构造恶意的ACPI包,其中包含精心设计的元素数量和类型,使驱动在解析时产生越界访问。由于HP BIOS配置通过ACPI接口暴露,本地攻击者可能通过BIOS设置工具或ACPI表操作触发此漏洞。成功利用可导致内核内存信息泄露或触发系统崩溃(拒绝服务)。