CVE-2026-43316Linux内核中的solo6x10驱动程序存在一处安全漏洞,主要涉及芯片ID(chip_id)的越界检查问题。在启用CONFIG_UBSAN_SHIFT配置并使用Clang编译器构建内核时,由于对有符号整型数进行超出其位宽(32位)的位移操作,触发了未定义行为。编译器在进行内联优化和双重调用检查时,可能会因此判定后续代码路径无效并将其省略,从而导致运行时逻辑缺失。该漏洞可能导致系统稳定性受损,攻击者利用此漏洞可造成本地拒绝服务。
该漏洞位于Linux内核的solo6x10媒体驱动模块中。根本原因在于位移操作未对操作数的位宽进行严格限制。在C语言标准中,对有符号整数进行等于或大于其类型宽度的位移属于未定义行为。当Clang编译器配合UBSAN(Undefined Behavior Sanitizer)使用时,会为此类操作插入检测代码。由于is_tw286x()函数的内联调用及编译器对未定义行为的激进优化,Clang错误地移除了函数中的关键检查逻辑。攻击者若能以本地低权限用户身份运行,通过特定的设备交互触发该代码路径,即可绕过原本的安全检查或导致内核执行异常代码流。修复方案主要包含两点:一是显式检查chip_id是否超出最大允许范围;二是将位移操作数从有符号的“1”改为无符号的“1U”,从根本上消除未定义行为。