RUSTSEC-2026-0333None▾ SunlitResource budgets not enforced on the typed deserialization path
▾ Sunlit zone — Low / medium · no exploitation signal
impact 2.8 · likelihood 0 · exploitation 0
Need a working PoC? Pro members can cast a request and our team develops one — it lands right here.
Disclosure to exploitation, from the record and what we observed since indexing it.
Disclosed via OSV
Last analysed / modified upstream
ParserConfig::max_events, max_nodes, max_total_scalar_bytes,
max_merge_keys, alias_anchor_ratio and the alias jump factor were
enforced only by the two Value loaders. A typed target with a
default-shaped configuration is served by the streaming deserializer,
which never read those fields, so tightening any of them had no effect
on from_str::<T> for a struct target. The default document-length,
depth and alias-count caps were enforced on every path, so no input was
unbounded; the gap affects callers who tightened the other budgets for
hostile input.
Version 0.0.53 charges every budget on the streaming path as well and adds cross-path parity tests.
Users who cannot upgrade can deserialize into noyalib::Value first and
convert with from_value, or rely on max_document_length and
max_depth, which were always applied on every path.
noyalib >= 0.0.0-0, < 0.0.53Upgrade to a patched release:
noyalib 0.0.53