课题研究 物联网与工控安全 子课题01 · 第05页 / 共8页
01子课题 · IoT设备固件安全与漏洞挖掘

IoT设备固件安全与漏洞挖掘第05页:模糊测试与协议安全测试

模糊测试是固件内存破坏漏洞发现的第一生产力。本页梳理黑盒/灰盒/白盒方法谱系与MIPS/ARM架构的插桩难题及三种解法,重点解析FirmAFL(增强式进程仿真)、IOTFuzzer(从App借协议知识)、FirmFuzz、μEmu、Fuzzware(精确MMIO建模)五个代表性工作的定位与选型,并给出Web/CGI、UPnP/ONVIF/TR-069/MQTT/CoAP/私有协议/AT命令各面的测试要点与崩溃确认流程。

模糊测试AFL++FirmAFLIOTFuzzerFirmFuzzμEmuFuzzwareboofuzzUPnPONVIFTR-069崩溃聚类研究状态:研究中
所属专题未来研究方向 › 物联网与工控安全 › 子课题01
目标受众安全研究人员、模糊测试工程师、测评机构
本页要点黑/灰/白盒谱系 · FirmAFL/IOTFuzzer/FirmFuzz/μEmu/Fuzzware工具谱系 · Web与协议面测试 · 崩溃聚类与确认 · 合规边界

01 · 模糊测试方法谱系

模糊测试(Fuzzing)通过构造大量畸形输入观察程序异常,是内存破坏类漏洞(CWE-787/125/416等)发现的第一生产力。按对目标内部信息的可见程度分三类:

类别原理固件场景适配
黑盒不知内部结构,纯随机/变异输入协议面与Web面首选( boofuzz、wfuzz/ffuf );成本低、覆盖面窄
灰盒以代码覆盖率引导变异(AFL/AFL++/Honggfuzz)二进制固件主战场:需解决异构架构插桩问题(见02节)
白盒符号执行/约束求解(angr、KLEE)适合关键解析函数的深度路径探索;路径爆炸限制规模,作灰盒补充

1.1 固件灰盒fuzzing的架构难题与解法

AFL系列依赖目标程序在x86上的编译期插桩,而固件是MIPS/ARM二进制。三种主流解法:

  • QEMU模式:AFL++的QEMU模式(afl-qemu-trace)以基本块翻译实现覆盖率反馈,无需源码——通用但吞吐受翻译开销限制。
  • 进程级增强仿真:FirmAFL(USENIX Security 2019)发现整机仿真中"系统调用转发"是主要瓶颈,将用户态执行与宿主内核系统调用桥接结合(增强式进程仿真),大幅提升模糊测试吞吐,是该路线的代表作。
  • Unicorn级执行:μEmu与Fuzzware(第4章)将固件二进制载入Unicorn引擎,以外设模型替代真实硬件,获得近原生速度——代表当前最高吞吐水平。

02 · 固件模糊测试代表性工作

工作出处思路与定位
FirmAFLUSENIX Security 2019(Zheng等)增强式进程仿真:用户态在QEMU user-mode执行、系统调用转发宿主内核,兼顾兼容性与吞吐,实现固件二进制覆盖率导向fuzzing
IOTFuzzerUSENIX Security 2018(Chen等)另辟蹊径:不fuzz设备,而是分析配套手机App中的协议编码逻辑,据此生成合法协议消息再变异——规避了私有协议逆向难题,发现多个设备端内存破坏漏洞
FirmFuzzACM IoT S&P 2019(Srivastava等)仿真环境与fuzzing闭环:自动化解包、仿真、输入生成与崩溃收集的端到端框架
μEmuIEEE S&P 2021自动化外设模型+QEMU/Unicorn双模式执行,为AFL提供高保真反馈
FuzzwareUSENIX Security 2022(Scharnowski等)精确MMIO建模将外设行为归纳为少量规则,Unicorn+AFL++组合在真实固件上实现高效fuzzing

选型启示:目标是有网络服务的完整固件→FirmAFL/FirmAE路线;目标是单个解析二进制(配置解析器、协议守护进程)且外设依赖简单→Fuzzware/μEmu路线;目标是私有协议设备且有配套App→IOTFuzzer思路(从App侧借协议知识)。三者不互斥,可按固件特性组合。

03 · Web与API面测试

嵌入式管理Web界面(CGI+表单)是最稳定、最易自动化的测试面:

  • 端点发现:ffuf/gobuster对 /cgi-bin/ 做字典爆破;固件文件树本身即"答案字典"(提取固件内 /www 目录的cgi名单比通用字典命中率高得多)。
  • 参数级测试:对每个GET/POST参数做类型翻转、边界值、注入探针(命令注入、路径穿越模板);wfuzz支持多参数循环fuzz。
  • 认证与会话:弱口令(第3章结果直接导入爆破字典)、会话ID可预测性、越权访问(低权账户访问管理端点)。
  • 文件上传与解析:配置导入接口的文件类型校验、固件升级接口的签名校验验证(提交篡改包观察拒绝行为——仅限仿真环境)。
# 以固件文件树生成cgi目标字典(高命中技巧)
find squashfs-root/www -name "*.cgi" -o -name "*.asp" | sed 's|.*/www||' > cgi_dict.txt
# 参数级fuzz(示例:对hostname参数做注入探针)
wfuzz -w inject_payloads.txt "http://192.168.0.100/cgi-bin/ping.cgi?hostname=FUZZ"

04 · 协议面测试

协议/面测试要点说明
UPnP/SSDPSSDP M-SEARCH伪造、SOAP Action注入、miniupnpd端口映射滥用、WAN侧暴露家用路由器重灾区;miniupnpd历史漏洞密集(第3章)
ONVIF摄像头SOAP接口认证绕过、Get/Set类服务越权、固件升级WS端点安防设备事实标准,Profile T/S各服务均需遍历测试
TR-069/CWMPACS连接参数注入、认证缺失、SetParameterValues命令注入运营商远程管理通道,设备侧实现差异大
MQTT/CoAP匿名连接、主题越权、恶意保留消息;CoAP的DTLS缺失与资源枚举平台侧治理详见子课题05,设备侧固件实现错误同样高发
私有二进制协议长度字段不一致、魔数校验缺失、越界拷贝IOTFuzzer思路(从App借协议知识)或boofuzz建模
AT命令面4G Cat.1/NB-IoT模组的AT命令注入、未授权访问蜂窝IoT设备特有;模组固件与主控固件双层核查

4.1 有状态协议模糊测试:AFLNet与StateAFL

上述协议多为有状态协议(需先握手/登录再交互),传统变异fuzzing难以覆盖深层状态。两个代表性补充工具:

  • AFLNet(USENIX Security 2020,Pham等):以网络报文序列为输入、以协议响应状态码为反馈的覆盖率导向协议fuzzing,支持从真实抓包变异,适合MQTT、SIP、FTP类协议实现测试。
  • StateAFL(USENIX Security 2022,Natella等):在目标程序内部插桩推断协议状态机,解决AFLNet依赖响应码推断状态的精度问题。

与固件测试的结合:在第4页仿真环境中运行目标守护进程,以真实抓包提取会话作为种子语料,用AFLNet/StateAFL做状态感知变异——协议面覆盖率提升的推荐路径。

05 · 崩溃分析与漏洞确认

  • 崩溃捕获:QEMU/Unicorn环境中以core dump+寄存器快照记录崩溃现场;MIPS/ARM无原生ASan时,可用clang交叉编译目标组件(--target=mipsel-linux-gnu -fsanitize=address)重建带检测版本复现(源码可得时)。
  • 去重聚类:以崩溃栈哈希(backtrace hash)聚类海量crash;同一缺陷的多触发输入合并为单一问题。
  • 可利用性初判:区分"无害崩溃/拒绝服务/内存读泄露/潜在RCE";对疑似RCE的崩溃,以受控调试器(GDB+QEMU gdbserver)复核控制流劫持可行性。
  • 已知漏洞比对:崩溃地址与代码指纹先在NVD/CNVD已知漏洞库比对,避免重复报告;确认新颖性后再进入披露流程(第8页)。

06 · 测试合规边界

边界声明:①模糊测试的洪泛式发包对真实网络设备可能造成拒绝服务,仅在隔离仿真环境或自有设备直连环境执行;②崩溃PoC以"最小复现"为准,不开发武器化EXP,不在报告中附可直接利用的完整攻击链;③涉及运营商管理通道(TR-069)与蜂窝网络(AT命令)的测试须取得运营商与设备方的双重授权;④所有测试活动遵守《网络安全法》及《网络产品安全漏洞管理规定》的授权与披露要求。

固件模糊测试闭环:从目标画像到漏洞入库
崩溃经聚类与已知漏洞比对后进入披露流程(第8页)
所引工作均以USENIX/IEEE官方论文库为准;工具用法以各项目官方文档为准。

本节参考来源(第5页)

以下均为真实可查的权威来源(学术论文、标准组织、监管机构、官方项目仓库与漏洞库),用于支撑本页事实性表述;涉统计数字均标注原始出处。

[1]

Y. Zheng 等《FirmAFL: High-Throughput Greybox Fuzzing of IoT Firmware via Augmented Process Emulation》(USENIX Security 2019);J. Chen 等《IOTFuzzer: Discovering Memory Corruptions in IoT Through App-based Fuzzing》(NDSS 2018);P. Srivastava 等《FirmFuzz: Automated IoT Firmware Introspection and Analysis》(ACM IoT S&P 2019,与CCS 2019合办研讨会)——usenix.org官方论文库。

[2]

T. Scharnowski 等《Fuzzware: Using Precise MMIO Modeling for Effective Firmware Fuzzing》(USENIX Security 2022):usenix.org/conference/usenixsecurity22;项目:github.com/fuzzware-fuzzer/fuzzware。

[4]

OWASP IoT Top 10与IoTGoat靶场:owasp.org/www-project-internet-of-things;OASIS MQTT v5.0规范:docs.oasis-open.org/mqtt;IETF CoAP(RFC 7252):rfc-editor.org/rfc/rfc7252。

[5]

CISA ICS网络安全公告(工控设备协议面漏洞通报):cisa.gov/news-events/cybersecurity-advisories。

[6]

V. Pham 等《AFLNet: A Greybox Fuzzer for Network Protocols》(USENIX Security 2020):usenix.org/conference/usenixsecurity20;项目:github.com/aflnet/aflnet;R. Natella 等《StateAFL: Greybox Fuzzing for Stateful Network Servers》(USENIX Security 2022),以USENIX官方论文库为准。