⚠️ SurrealML CWE-248 PoC — DO NOT LOAD IN PRODUCTION
Proof-of-concept files for panic-on-load in surrealdb/surrealml (surrealml-core ≤ 0.1.9).
Submitted to the vendor via huntr.com Model File Format program.
Loading any panic_*.surml via SurMlFile::from_file / the Python client / SurrealDB model import will abort the host process.
Files
| file | size | effect |
|---|---|---|
panic_input_dims.surml |
49 B | input_dims.rs:34 .parse::<i32>().unwrap() panic |
panic_input_dims_oob.surml |
50 B | input_dims.rs:36 index-OOB panic |
panic_cstring_nul.surml |
53 B | load_model.rs:124 CString::new().unwrap() panic inside extern "C" |
oom_header.surml |
4 B | surml_file.rs:108 — 4 GiB vec![0u8; N] from a 4-byte file |
make_poc.py |
— | Generates all of the above |
Repro
git clone https://github.com/surrealdb/surrealml && cd surrealml
python3 make_poc.py
cargo run --example load -- panic_input_dims.surml # or any consumer
# → thread 'main' panicked at input_dims.rs:34:67
Root cause
InputDims::from_string calls .unwrap() on attacker-controlled parse and indexes [0],[1] unconditionally. No catch_unwind in any extern "C" fn in modules/c-wrapper/ → process abort.
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support