This project contains known security vulnerabilities. Find detailed information at the bottom.

Crate juniper_rocket

Dependencies

(5 total, 2 outdated, 1 insecure)

CrateRequiredLatestStatus
 juniper ⚠️^0.11.00.18.0insecure
 rocket^0.4.00.5.2out of date
 serde^1.0.21.0.229up to date
 serde_derive^1.0.21.0.229up to date
 serde_json^1.0.21.0.154up to date

Dev dependencies

(1 total, 1 outdated, 1 insecure)

CrateRequiredLatestStatus
 juniper ⚠️^0.11.00.18.0insecure

Security Vulnerabilities

juniper: Denial of service on deeply nested fragment requests

RUSTSEC-2022-0038

Deeply nested fragments in a GraphQL request may cause a stack overflow in the server.

juniper: Stack overflow on deeply nested GraphQL documents

RUSTSEC-2026-0416

The parser of juniper called itself once for each level of nesting in a GraphQL document. The parser had no limit on the nesting depth. Deeply nested selection sets, input values, and list types thus overflowed the stack of the thread that parsed the document. Validation and execution followed fragment spreads in the same recursive way. Long chains of fragment spreads thus overflowed the stack in validation and execution.

A stack overflow aborts the whole process. One request can thus stop a server and drop all other requests in progress. The request needs no authentication.

juniper 0.17.2 rejects documents that nest deeper than 64 levels or contain more than 15,000 tokens. RootNode::limit_depth() and RootNode::limit_tokens() change the limits.

juniper: Excessive CPU and memory use on crafted GraphQL documents

RUSTSEC-2026-0417

Several parts of juniper did work that grew faster than the size of the GraphQL document. A small document could thus use seconds of CPU time or gigabytes of memory. The requests need no authentication.

  • OverlappingFieldsCanBeMerged compared all pairs of fields with the same response name. The rule also reported one error for each pair of conflicting fields.
  • NoFragmentCycles and OverlappingFieldsCanBeMerged visited a fragment again for each path that spread the fragment. Validation time thus doubled with each fragment that spread the next fragment twice.
  • Execution resolved the fields of a fragment once for each spread of the fragment. A document of 1.2 KB could expand into a billion fields.
  • The parser removed each token from the front of a vector. Parsing time thus grew with the square of the number of tokens.

juniper 0.17.2 fixes the issues. The parser rejects documents with more than 15,000 tokens and operations with more than 15,000 fields after the expansion of fragments. The validation rules visit each fragment once. OverlappingFieldsCanBeMerged stops after 100,000 field comparisons and reports at most 100 conflicts. RootNode::limit_tokens() and RootNode::limit_fields() change the limits.