You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
ModelDownloader: no HTTPS enforcement or SHA-256 verification for downloaded models (CWE-494) #1029
Every model base URL is overridable by the user, via env var or QSettings — e.g. QTMESH_REMBG_MODEL_BASE_URL / ai/rembgModelBaseUrl, and the equivalent for pbr, unirig, segment, inbetween, motion, t2m, triposr, skintokens, facerig, depth. So a plain-HTTP source or a tampered mirror can substitute any model file, and it is loaded without verification.
CWE-494 (Download of Code Without Integrity Check). Reachability is internal and exploitability difficult — it needs either an attacker-controlled override or a MITM on a plain-HTTP base URL — but the blast radius is every ONNX/GGUF consumer.
Scope
21 files use ModelDownloader::instance(). This is not one feature's problem:
That PR adds a matting tier; it does not touch ModelDownloader. Fixing a shared download path there would mean changing behaviour for 21 consumers under an unrelated title, with no test coverage for the other 20. Better as its own change with its own verification.
Worth noting a related precedent: the UniRig export shipped a graph emitting 100% NaN latents and went unnoticed for months (#1025). Integrity checking at download time would not have caught that (the file was intact, the export was wrong), but it is the same class of "we trust an artifact we never verified" problem, and both are worth closing.
Activity
fix(#1029): hash locally — do not link ModelDownloader to the optiona…
fix(#1029): refuse file:// with a remote host, handle a failed .part …
fix(#1029): redact credentials/query from the refusal message (review…
fix(#1029): ModelDownloader — refuse non-HTTPS URLs, verify SHA-256 b…
fix(#1037): ModelFetch — one blocking fetch that keeps the downloader…