百科.dev
全部条目AI 编程趋势榜开源项目技术资讯提交条目
登录
返回工具页/返回 Issues 列表
#8083·hummingbot

安全性: ws_data_to_dict() 中的 eval() 允许通过 WebSocket 输入执行代码

作者: theeggorchicken创建于 2026年2月26日更新于 2026年8月31日

□ 总结

`foxbit utils.ws data to dict ()' 使用 Python'' 的 “ eval () ” 将 WebSocket 信件字符串去区域化 。 因为‘eval ()' 执行任意的 Python 代码,任何从网络控制源通过此函数的都成为了代码执行路径.

我向[email protected]发送了一份详细的报告,其中包含复制步骤和测试文物。 乐于在此或透过任何对球队最有利的频道分享完整出道.

□ 受影响的代码

** 文件:** [`蜂窝/接通器/交换/狐窝/狐窝/狐窝 utils.py#L70'](https://GitHub.com/ humingbot/humingbot/blob/master/humingbot/接通器/交换/狐窝/狐窝-utils.py#L70]

zz
def ws data to dict(数据:str) - > Dict[str, Any]:
返回 eval( data. replace (":null","None"). 重置 (":false",":false"). 重置 (": true","True").

.取而代之'的电话之所以存在,是因为输入是JSON,但json.loads()'处理null'、false'和real'的本土问题。 这里不需要eval()'。

□ 影响

任何能够注入Foxbit WebSocket流的人——通过MITM,DNS劫机,或受损的交换端点——都可以在运行机器人的机器上运行任意的Python代码. 在官方的Docker图像中,进程作为root运行.

□ 建议修补

7zz
导入 json # 在此文件中已经导入

def ws data to dict(数据:str) - > Dict[str, Any]:
返回 json.loads(数据)

我已经提交了一个Pull Request 与这个固定和测试.

内容来源: hummingbot/hummingbot

查看 GitHub 原文在 GitHub 查看讨论