智能⻔锁蓝⽛通信模块整数溢出漏洞分析

admin 2026-01-22 00:12:49 网络安全文章 来源:ZONE.CI 全球网 0 阅读模式

文章总结: 文章披露某家用智能门锁蓝牙密钥更新指令因未校验data_len整数溢出,致缓冲区越界写并可任意篡改解锁密钥,现场演示0xFFF0长度包秒开门;作者逆向ARM固件定位parse_ble_key_packet函数,确认buf_len=data_len+16溢出后memcpy覆写相邻g_unlock_key,提供四项修复:加溢出与范围校验、隔离敏感数据、用安全拷贝、密钥加密存储,并提醒IoT内存安全底线。 综合评分: 88 文章分类: IoT安全,漏洞分析,二进制安全,安全建设,漏洞预警


cover_image

智能⻔锁蓝⽛通信模块整数溢出漏洞分析

原创

网络安全实验室 网络安全实验室

GTG网络安全实验室

2026年1月21日 15:30 广东

最近在检测⼀款家⽤智能⻔锁时,发现其蓝⽛通信模块存在⼀个隐蔽但危害严重的整数溢出漏洞。这款⻔锁⽀持通过⼿机 APP 蓝⽛传输密钥更新指令,结果在测试中发现,构造特定⻓度的数据包居然能直接篡改设备解锁密钥 —— 顺着这个线索深挖,发现开发⼈员在处理数据包⻓度参数时未做溢出校验,导致缓冲区越界写,典型的内存安全疏忽却直接威胁家庭物理安全。

1

意外发现漏洞

这款智能⻔锁的蓝⽛密钥更新指令格式为固定结构: [cmd_type(1B)][data_len(2B)]

[key_data(data_len)] ,⼿机 APP 通过该指令同步新的解锁密钥。

正常密钥更新请求(data_len=16,对应 16 字节合法密钥):

0x01 0x00 0x10 0x01 0x02 … 0x10(16字节密钥数据)

抱着测试边界值的⼼态,构造了 data_len=0xFFF0 的恶意数据包:

0x01 0xFF 0xF0 0xAA 0xBB … 0x99(16字节恶意密钥数据)

出乎意料的事出现了!⻔锁居然提⽰密钥更新成功,使⽤构造的恶意密钥 0xAA~0x99 尝试开锁,居然成功解锁!这说明数据包⻓度参数触发了整数溢出,导致缓冲区越界写,直接篡改了设备存储的解锁密钥 —— 典型的整数溢出漏洞。再试了不同的 data_len 值,发现只要满⾜ data_len+ 16 = 0x10000 (16 位整数溢出),就能稳定触发漏洞,看来问题⽐想象中更严重。

2

分析代码

通过漏洞验证确认 data_len 参数⽆溢出校验,我们直接提取⻔锁固件中的蓝⽛通信模块⼆进制⽂件 ble_comm ,查看相关信息:

可以看到 ble_comm ⽂件是 ARM Cortex-M4 架构的嵌⼊式程序,直接使⽤ IDA Pro 分析。

直接搜索关键词 data_len 定位到漏洞点所在函数 parse_ble_key_packet :

parse_ble_key_packet 函数中, buf_len 通过 data_len + 16 计算得出,但未校验是否溢出。当 data_len=0xFFF0 时, 0xFFF0 + 16 = 0x10000 ,超出 16 位整数范围溢出为 0,导致memcpy 函数以极⼩的 buf_len 参数执⾏,却实际拷⻉超出缓冲区范围的数据。

查看内存布局,发现 recv_buf 缓冲区与全局解锁密钥 g_unlock_key 在内存中相邻:

0x20007E00: recv_buf[512] // 数据包接收缓冲区

0x20008000: g_unlock_key[16]// 解锁密钥存储地址

越界写⼊的数据直接覆盖 g_unlock_key ,当传⼊恶意密钥数据时,就实现了密钥篡改。

查看交叉引⽤,该函数被蓝⽛数据接收主循环调⽤,⽆任何额外的⻓度校验或内存保护机制。

3

总结

整数溢出漏洞在嵌⼊式 IoT 设备中较为隐蔽,尤其在需要处理⻓度参数的通信模块中(如蓝⽛、串⼝数据解析)。但像这款智能⻔锁这样未做任何溢出校验的情况,还是让⼈担忧 —— 开发人员显然忽视了 “整数取值有范围” 这⼀内存安全基本准则。

对于这个漏洞,我们给⼚商提了⼏个修复建议:

1. 添加整数溢出校验:在计算 buf_len 后,增加 if (buf_len < data_len || buf_len >BLE_MAX_PACKET_LEN) 判断,检测溢出并拒绝处理;同时限制 data_len 的合理范围(如16≤data_len≤64),不在范围内的直接丢弃数据包。

2. 优化内存布局设计:将敏感数据(如解锁密钥)与缓冲区隔离存储,或使⽤独⽴的加密存储区域(如 MCU 的 Flash 加密扇区),即使发⽣越界写也⽆法篡改核⼼数据。

3. 使⽤安全拷⻉函数:替换 memcpy 为带⻓度限制的安全函数,明确限制拷⻉⻓度不超过⽬标缓冲区⼤⼩,从根源阻断越界写。

4. 密钥加密保护:将解锁密钥通过 AES-128 加密后存储,即使密钥存储区域被篡改,攻击者也⽆法获取明⽂密钥,⽆法实现开锁。

作为检测⼈员,我们常说 “隐蔽的漏洞更危险”。希望⼚商能重视嵌⼊式设备的内存安全问题,别让这类可通过基础校验避免的漏洞,变成威胁⽤⼾家庭安全的 “隐形后⻔”。

🔒 安全升级!GTG认证护航物联⽹安全新时代

GTG网络安全实验室

🔐 GTG⼴测集团是国内领先的 IoT安全认证专家,尤其擅⻓ EN 18031标准(欧洲物联⽹安全法规)的测试与认证!

支持全球网络安全认证检测项目:

🏆 GTG如何为您的IoT产品保驾护航?

✅ EN 18031合规认证:确保您的产品符合欧洲市场准⼊要求

✅ 渗透测试 & 漏洞评估:模拟⿊客攻击,提前发现安全隐患

✅ 安全架构设计咨询:从底层优化产品安全性能

✅ 全球法规适配:协助企业满⾜不同国家的IoT安全标准(如中国GB/T、英国PSTI)

💡 为什么选择GTG?

· 国内专业的IoT安全检测机构

· 已经为多家企业提供安全认证服务

· ⾃有攻防实验室,配备专业红队模拟APT攻击场景

更多相关内容

欢迎关注视频号“GTG网络安全实验室”

私信可获取“EN 18031自测工具包”


免责声明:

本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。

任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。

本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我

本文转载自:GTG网络安全实验室 网络安全实验室 网络安全实验室《智能⻔锁蓝⽛通信模块整数溢出漏洞分析》

评论:0   参与:  0