AstrBot 远程代码执行漏洞(CVE-2025-55449) 技术分析文档
1. 漏洞概述
1.1 产品介绍
AstrBot 是由 AstrBotDevs 开发的一款开源大型语言模型聊天机器人及开发框架,基于 Python 开发。该产品支持多平台部署和插件扩展,提供 Web 管理界面(dashboard),允许用户通过插件系统扩展功能,集成各类大语言模型 API,广泛应用于企业和个人构建自定义AI助手场景。
1.2 漏洞描述
CVE-2025-55449 是一个高危的远程代码执行漏洞,源于 AstrBot 使用了固定的 JWT 签名密钥。攻击者可利用该密钥伪造任意有效的 JWT 认证令牌,完全绕过身份验证机制。成功绕过认证后,攻击者可访问插件管理接口,通过上传恶意的 Python 插件文件实现远程代码执行。
威胁等级:高危
漏洞类型:认证绕过 + 远程代码执行
利用条件:无需认证即可利用
2. 影响版本
- AstrBot < 3.5.18
注:漏洞分析与复现环境版本为 v3.5.17。
3. 技术原理分析
3.1 认证绕过漏洞点
3.1.1 JWT 密钥硬编码
漏洞根源于 AstrBot 使用了固定的 JWT 签名密钥,该密钥在代码中硬编码为:
Advanced_System_for_Text_Response_and_Bot_Operations_Tool
3.1.2 相关代码位置
该硬编码密钥出现在以下关键函数中:
AuthRoute.generate_jwt函数AstrBotDashboard.srv_plug_route函数
3.1.3 认证逻辑缺陷
认证判断逻辑存在缺陷:只要 JWT Token 能够被正常解析且未过期,即可通过认证检查,无需验证令牌的真实来源或有效性。
3.2 远程代码执行漏洞点
3.2.1 插件上传功能
AstrBot 提供插件扩展功能,允许用户上传自定义的插件包。程序会对上传的压缩包进行解压,读取插件相关信息,并导入对应的 Python 文件执行代码。
3.2.2 漏洞触发路径
- 攻击者通过伪造的 JWT Token 绕过认证
- 访问插件管理接口 (
PluginManager.install_plugin_from_file函数) - 上传恶意插件压缩包
- 系统解压插件包并调用
load方法加载插件 - 通过
__import__方式导入自定义的插件代码文件 - 恶意代码被执行,实现远程代码执行
3.2.3 关键函数调用链
srv_plug_route → install_plugin_from_file → load → __import__
4. 漏洞复现步骤
4.1 环境准备
- AstrBot v3.5.17 版本环境
- Python 3.x 环境
- pyjwt 库
4.2 恶意插件编写
4.2.1 参考模板
可参考官方插件模板代码仓库:https://github.com/Soulter/helloworld
4.2.2 插件结构
创建标准的插件目录结构,包含必要的配置文件和在 __init__.py 或相关模块中植入恶意代码。
4.3 JWT Token 伪造
4.3.1 使用 pyjwt 生成令牌
import jwt
# 硬编码的密钥
SECRET_KEY = "Advanced_System_for_Text_Response_and_Bot_Operations_Tool"
# 构造 payload
payload = {
"user_id": "admin",
"exp": 未来时间戳 # 设置较长的过期时间
}
# 生成伪造的 JWT Token
token = jwt.encode(payload, SECRET_KEY, algorithm="HS256")
print(f"伪造的Token: {token}")
4.4 攻击执行
4.4.1 构造上传请求
使用伪造的 JWT Token 在 Authorization 头中认证,向插件上传接口发送 POST 请求,上传恶意插件压缩包。
4.4.2 请求示例
POST /api/plugins/upload HTTP/1.1
Host: target-server:port
Authorization: Bearer <伪造的JWT Token>
Content-Type: multipart/form-data
[恶意插件ZIP文件]
4.5 代码执行验证
上传成功后,系统会自动加载并执行插件中的代码,攻击者即可实现远程命令执行。
5. 修复方案
5.1 官方修复
- 升级到 AstrBot ≥ 3.5.18 版本
- 官方已修复硬编码密钥问题,改为使用随机生成的密钥
5.2 临时缓解措施
对于无法立即升级的用户:
- 限制对 AstrBot 管理界面的网络访问
- 加强网络边界防护,仅允许可信IP访问管理接口
- 监控插件上传行为,设置严格的文件上传过滤规则
5.3 安全加固建议
-
JWT 安全配置:
- 使用强随机密钥而非硬编码值
- 定期轮换JWT签名密钥
- 实施严格的令牌验证逻辑
-
插件管理安全:
- 对上传的插件进行安全扫描
- 实施代码签名验证机制
- 限制插件执行权限
-
系统层面防护:
- 实施最小权限原则运行服务
- 定期进行安全审计和漏洞扫描
- 建立安全更新机制
6. 参考资源
- 【已复现】AstrBot 远程代码执行漏洞(CVE-2025-55449)安全风险通告
- 官方漏洞修复公告和版本更新说明
- 奇安信CERT安全监测报告
7. 总结
CVE-2025-55449 漏洞结合了认证绕过和远程代码执行两种高危漏洞类型,危害性极大。漏洞的根本原因在于使用了硬编码的加密密钥和缺乏严格的插件安全机制。建议所有使用 AstrBot 的用户立即检查版本并及时升级到安全版本,同时加强系统的安全监控和防护措施。