安全性: 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]
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运行.
□ 建议修补
导入 json # 在此文件中已经导入
def ws data to dict(数据:str) - > Dict[str, Any]:
返回 json.loads(数据)我已经提交了一个Pull Request 与这个固定和测试.
内容来源: hummingbot/hummingbot