CVE-2026-30874OpenWrt在24.10.6版本之前存在一处高危权限提升漏洞。该漏洞源于hotplug_call函数在处理环境变量时,错误地使用了strcmp而非strncmp进行字符串比较,导致PATH等敏感环境变量过滤机制失效。本地低权限攻击者可利用此漏洞注入恶意PATH变量,劫持procd调用的热插拔脚本执行流程,进而以root权限执行任意代码,控制系统。
该漏洞的核心技术原理在于OpenWrt的procd守护进程中hotplug_call函数的字符串比较逻辑错误。该函数的设计初衷是在执行/etc/hotplug.d/目录下的热插拔脚本之前,清除包括PATH在内的敏感环境变量,以确保执行环境的安全。然而,代码实现中错误地使用了strcmp函数而非strncmp。strcmp会对整个字符串进行匹配,例如它会将实际环境变量字符串“PATH=/usr/bin”与黑名单中的关键字“PATH”进行直接比较,这导致比较操作永远返回不匹配,过滤机制因此彻底失效。利用此漏洞,本地低权限攻击者可以设置包含恶意可执行文件路径的自定义PATH环境变量。当系统发生热插拔事件(如USB插入、网络接口变化)时,procd进程将以root权限调用相应的处理脚本。由于PATH已被劫持,脚本中调用的任何未使用绝对路径的系统命令(如sh、netifd等)都将优先加载并执行攻击者提供的恶意程序,最终导致攻击者获得系统的最高控制权。