如果你审查过认证代码,看到if (authFailed) { tryAnotherWay() }这种分支时心里咯噔了一下——恭喜,你的直觉完全正确。这种模式正是新近披露的Tenda多款路由器后门的核心,它堪称“如何不设计认证流程”的鲜活案例。
CERT/CC(卡内基梅隆大学软件工程研究所)在2026年7月6日发布了VU#213560 / CVE-2026-11405,描述了/bin/httpd二进制文件中的一个未公开认证绕过漏洞。受影响固件包括US_FH1201V1.0BR_V1.2.0.14(408)_EN_TD、US_W15EV1.0br_V15.11.0.5(1068_1567_841)_EN_TDE、US_AC10V1.0re_V15.03.06.46_multi_TDE01、US_AC5V1.0RTL_V15.03.06.48_multi_TDE01和US_AC6V2.0RTL_V15.03.06.51_multi_T。目前无任何补丁。CERT/CC称,他们于2026年5月19日私下通知Tenda,此后整整七周杳无音讯,最终不得不公开披露。Tenda自2013年起就有不回应漏洞报告的历史。
根据公告还原的login()函数伪代码,大致逻辑如下:
int login(char *username, char *password) {char *stored_hash = get_stored_password_hash(username);char *submitted_hash = md5(password);if (submitted_hash == stored_hash) {return grant_session(username, ROLE_ADMIN);// 这里是后门char *backdoor_password = GetValue("sys.rzadmin.password");if (strcmp(password, backdoor_password) == 0) {return grant_session("rzadmin", ROLE_ADMIN);return AUTH_FAILED;}开发者一眼就能看出几个致命问题。第一,这不是硬编码凭据,而是备援凭据。传统路由器后门(比如Zyxel的zyfwp、Fortinet 2019年的SSH后门、各种D-Link和ASUS案例)通常直接把静态用户名/密码编译进二进制或写入/etc/passwd,用strings命令或已知凭据字典就能揪出来。但这一次的手法更隐蔽:后门密码并非明文硬编码,而是在运行时通过GetValue()从配置键sys.rzadmin.password读取。这意味着它可以因设备批次不同而不同,如果在制造或配置阶段设置了该值;仅靠静态二进制分析极难发现,必须追踪GetValue()调用才能弄清这个NVRAM/配置键的来源——它像是工程师留下的远程诊断支撑机制。
第二,认证失败后才启用备援路径,且完全忽略用户名。只要攻击者弄到那个备援密码,就能以rzadmin身份直接获得管理员会话(角色等级2)。可悲的是,用户甚至察觉不到这个后门的存在,因为正常登录流程丝毫不受影响。
问题还不止于代码缺陷。CERT/CC在5月私密通报后给足了窗口期,但Tenda一如既往地沉默。从2013年至今,这家供应商对安全报告的漠视已有迹可循,而这次影响更是直接落在广泛的家用和小型办公室路由器上,暴露面巨大。没有补丁意味着每台受影响的设备都是一个随时可被远程控制的路标。
对于想要自查的安全研究者,公告中还指出/bin/httpd二进制文件未启用栈金丝雀,且以非PIE/ASLR方式编译,这在与内存破坏漏洞结合时会使利用变得极为容易。此外,该HTTP服务基于GoAhead嵌入式Web服务器,而GoAhead的历史漏洞库本身就值得警惕。在厂商做出实质响应之前,最务实的缓解措施是确保设备完全从互联网不可达,并追踪上游社区的任何第三方修复进展。
特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.