一次性密码(OTP)广泛应用于注册、登录、密码重置等身份认证场景,但实现不当会导致OTP泄漏、暴力破解、OTP轰炸、资源消耗等四类漏洞。在IoT场景下,攻击者仅需知道受害者的手机号即可远程控制其智能设备。
本文提出OTP-Hunter——基于静态+动态分析的APP层Fuzzing框架:通过静态分析构建函数调用图定位网络通信函数链,动态Hook识别Cloud Triggers作为变异点,在参数层直接变异绕过UI输入校验和加密签名机制,成功在59款IoT App中发现68个漏洞,获得11个CNVD编号。
论文标题:OTP-Hunter: An App-Based Fuzzing Framework to Discover One Time Password Vulnerabilities
发表期刊:IEEE Transactions on Dependable and Secure Computing, 2025 (CCF-A)
作者单位:上海交通大学计算机科学与工程学院
开源数据:https://github.com/Netsec-SJTU/OTP-Hunter
01 方法介绍
核心思想:将OTP漏洞检测从网络层(加密包)和UI层(输入校验)转移到函数参数层——通过静态分析定位网络通信函数链,动态Hook识别Cloud Triggers,在参数未被加密/签名前直接变异。
整体流程三个模块:
① 静态分析模块——pysoot提取APK函数调用图,识别网络通信函数(Volley、Apache Http、Retrofit2等),构建从UI到网络接口的完整函数链。
② 动态分析模块——启动App并回放预先录制的UI操作,跟踪每个Hook函数的参数和数据流变化,定位Cloud Triggers(加密/签名前最后一个参数未变的函数)。
③ Fuzzing模块——在Cloud Triggers处变异关键参数(邮箱、手机号、OTP码等),绕过UI校验和加密机制;对能中间人攻击的App用响应相似度判断,对SSL Pinning的App用回调函数状态(onSuccess/onFailed)判断。

小结:OTP-Hunter的创新在于"参数层变异+Cloud Triggers定位"的组合设计。静态分析补全RxJava2/Runnable隐式调用边,动态分析精准定位变异点,Fuzzing模块在参数层直接操作避开加密和签名,三者协同实现了对四类OTP漏洞的自动化检测。
02 关键机制
Cloud Triggers定义——加密前最后一个参数未变的函数(Cloud Trigger before Encryption),或签名前最后一个参数未变的函数(Cloud Trigger before Integrity)。变异在此处可直接绕过加密和完整性校验。
隐式调用边补全——针对RxJava2的ObservableOnSubscribe等5个接口,添加<init>到<subscribe>的边;针对Runnable接口,添加<init>到<run>的边,确保调用图完整覆盖异步函数。
参数变异策略——针对邮箱/手机号注入特殊字符(\x00、\n、SQL语句),针对OTP码暴力枚举(4位/6位数字),针对请求频率测试轰炸漏洞。
响应判断机制——能抓包的App用响应相似度(与正常响应对比),不能抓包的App用回调函数状态(onSuccess/onFailed判断),两种机制覆盖不同网络层场景。
03 实验结果
实验设置:测试对象为59款IoT相关App(涵盖智能家居、商业应用等多场景)。静态分析使用pysoot,动态分析使用Frida Hook,Fuzzing运行在Android模拟器上。
(1)漏洞发现总数

(2)与现有方法对比
核心结果:在59款IoT App中发现68个OTP相关漏洞,获得11个CNVD编号。相比网络层Fuzzing(如Burp Suite),OTP-Hunter能覆盖更多测试场景(如添加特殊字符\x00、\n)并节省人工逆向时间。
小结:OTP-Hunter在真实场景中验证了有效性——59款App、68个漏洞、11个CNVD。核心技术贡献在于:Cloud Triggers定位让变异绕过加密签名,参数层Fuzzing避开UI校验,两种响应判断机制覆盖不同网络层场景。相比现有工具,在漏洞覆盖范围和自动化程度上都有显著提升。
总结
OTP-Hunter是首个针对APP层OTP漏洞的自动化Fuzzing框架:静态分析补全RxJava2/Runnable隐式调用边,动态分析精准定位Cloud Triggers,参数层变异绕过UI校验和加密签名,两种响应判断机制覆盖不同网络场景。59款IoT App中发现68个漏洞、获得11个CNVD,证明了这一技术路线的实战价值。
扩展应用场景:OTP-Hunter的技术方案可推广至其他业务逻辑漏洞检测(如支付逻辑、权限绕过),Cloud Triggers概念可作为App层Fuzzing变异点定位的通用范式。对IoT厂商而言,集成类似OTP-Hunter的检测流程到App上线前测试环节,可显著降低OTP相关安全风险。
欢迎留言讨论
你的项目经历过OTP相关漏洞吗?你用什么方法测试业务逻辑安全?
参数层Fuzzing这条技术路线,你认为适合做生产环境自动化测试吗?
点赞 + 收藏 + 分享,你的支持,是我们持续解析高水平软件安全论文的最大动力!
夜雨聆风