Unratedcrates.ioPublished
Resource budgets not enforced on the typed deserialization path
GHSA-4xcc-23fx-w2wj
- Affected
- crates.io noyalib >= 0.0.0-0, < 0.0.53
- Fixed in
- 0.0.53· Vendor fix available
- Issue
- `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:: ` 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.
Recommended action: Upgrade to 0.0.53 or later, then redeploy and verify.A vendor fix does not resolve your finding until you verify it in your own systems.