IPBUF安全漏洞报告
English
CVE-2026-43312 CVSS 5.5 中危

CVE-2026-43312 Linux Kernel ov5647驱动初始化错误漏洞

披露日期: 2026-05-08
来源: 416baaa9-dc9f-4396-8d5f-8c081fb06d67

漏洞信息

漏洞编号
CVE-2026-43312
漏洞类型
空指针引用
CVSS评分
5.5 中危
攻击向量
本地 (AV:L)
认证要求
低权限 (PR:L)
用户交互
无需交互 (UI:N)
影响产品
Linux Kernel

相关标签

Linux Kernel拒绝服务空指针引用驱动漏洞ov5647

漏洞概述

Linux内核中的ov5647摄像头驱动程序存在初始化顺序错误漏洞。在驱动加载过程中,`ov5647_init_controls()`函数在子设备初始化之前被调用,导致访问未初始化的子设备数据。当特定错误条件触发时,系统会发生空指针解引用,从而导致内核崩溃和本地拒绝服务。

技术细节

该漏洞位于Linux内核的`drivers/media/i2c/ov5647.c`驱动文件中。问题出在驱动的probe(探测)流程,具体表现为函数调用顺序错误。正确的逻辑应先通过`v4l2_i2c_subdev_init()`初始化子设备并设置私有数据(`i2c_client`指针),然后再调用`ov5647_init_controls()`。

然而,存在漏洞的代码先调用了`ov5647_init_controls()`。该函数内部调用了`v4l2_get_subdevdata()`来获取设备数据,由于此时子设备尚未初始化,获取到的指针为NULL。如果在初始化控制项过程中遇到错误(例如分配内存失败),错误处理路径会尝试访问这个NULL指针(即访问`i2c_client`),导致内核发生空指针引用异常(Kernel Oops/Segfault)。攻击者只需拥有本地低权限即可触发该漏洞,导致系统可用性受损。

攻击链分析

STEP 1
步骤1
攻击者获取本地系统的低权限访问权限(AV:L, PR:L)。
STEP 2
步骤2
攻击者触发ov5647驱动程序的加载或初始化流程(例如通过系统启动或加载内核模块)。
STEP 3
步骤3
在驱动初始化阶段,由于代码顺序错误,`ov5647_init_controls`在子设备未初始化时被调用。
STEP 4
步骤4
触发错误处理路径,系统尝试访问未初始化的空指针,导致内核崩溃(DoS)。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
/* * PoC Concept for CVE-2026-43312 * This vulnerability is triggered during the driver initialization (probe). * It requires a system with the vulnerable ov5647 driver hardware. * * The crash occurs when ov5647_init_controls() is called before * v4l2_i2c_subdev_init(), and an error path is hit. */ #include <linux/module.h> #include <linux/i2c.h> // Simulating the vulnerable flow static int simulate_vulnerable_probe(struct i2c_client *client) { struct v4l2_subdev *sd; // VULNERABILITY: init_controls called before subdev init // Inside ov5647_init_controls, v4l2_get_subdevdata(sd) returns NULL // because sd is not yet initialized by v4l2_i2c_subdev_init. int ret = ov5647_init_controls(sd); if (ret < 0) { // If ret is error, cleanup code tries to access i2c_client // via v4l2_get_subdevdata(sd), which is NULL. // This causes a Null Pointer Dereference -> Kernel Panic. goto error_handler; } // Correct initialization should happen here, but it's too late. v4l2_i2c_subdev_init(sd, client, &ov5647_subdev_ops); return 0; error_handler: // Crash happens here accessing uninitialized data return ret; }

影响范围

Linux Kernel < 6.1 (Based on stable branch fixes)
Linux Kernel < 6.6
Linux Kernel < 6.8

防御指南

临时缓解措施
由于该漏洞需要在本地加载驱动,可以通过在系统中暂时禁用或黑名单ov5647驱动模块(如通过modprobe.d配置),直到系统内核完成更新。

参考链接

快速导航: 前沿安全 最新收录域名列表 最新威胁情报列表 最新网站排名列表 最新工具资源列表 最新CVE漏洞列表