# 漏洞总结:Trendnet TEW-821DAP 固件更新过程中的固件认证漏洞 ## 漏洞概述 在固件更新过程中,存在一个固件认证漏洞,涉及 `find_hwid()` 和 `new_gui_update_firmware()` 函数。固件使用硬编码的验证信息进行认证验证。具体来说,这两个函数从固件镜像中提取硬件 ID 并将其存储在变量 `dest` 中。然后,这两个函数通过将 `dest` 与硬编码的认证验证信息进行对比来执行固件认证验证。一旦黑客获取了硬编码的认证验证信息,他们就可以轻松绕过认证验证并上传恶意篡改的固件。此问题允许攻击者执行任意代码或通过上传具有相同硬编码认证验证信息的篡改固件导致服务拒绝。 ## 影响范围 - **受影响产品**: TEW-821DAP (固件版本 v1.12B01) ## 修复方案 - 未提供具体的修复方案。 ## POC代码 ```c int find_hwid(char *dest) { int result; // eax int v2; // [sp+10h] [bp-10h] int v3; // [sp+14h] [bp-Ch] int v4; // [sp+18h] [bp-8h] int v5; // [sp+1Ch] [bp-4h] v2 = 0; v3 = 0; v4 = 0; v5 = 0; result = fread(&v2, 1, 4, firmware); if ( result ) { result = fread(&v3, 1, 4, firmware); if ( result ) { result = fread(&v4, 1, 4, firmware); if ( result ) result = fread(&v5, 1, 4, firmware); } } if ( result ) { sprintf(dest, "%08X-%08X-%08X-%08X", v2, v3, v4, v5); } return result; } int new_gui_update_firmware() { int result; // eax char dest[16]; // [sp+10h] [bp-10h] char v2[16]; // [sp+20h] [bp+0h] find_hwid(dest); if ( !strcmp(dest, "AP152AR9563-AP-150107-00") || !strcmp(dest, "AP152AR9563-AP-151201-00") || !strcmp(dest, "AP152AR9563-AP-150707-00") ) { result = new_gui_update_firmware2(); } else { sprintf(v2, "Hardware ID is not match: %s", dest); new_gui_update_firmware2(); result = new_gui_update_firmware3(v2); } return result; } ```