Open actionable advisories and recorded vendor fixes. This public package view has no inventory attached and cannot establish whether your deployment is affected. A vendor fix never resolves your finding; verify your installed version and the source guidance.
Open advisories
3 actionable advisories, newest first. Withdrawn advisories and news are excluded. Coverage is partial.
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…
Recommended action: Upgrade to 0.17.2 or later, then redeploy and verify.A vendor fix does not resolve your finding until you verify it in your own systems.
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.
Recommended action: Upgrade to 0.17.2 or later, then redeploy and verify.A vendor fix does not resolve your finding until you verify it in your own systems.
GraphQL behaviour Nested fragment in GraphQL might be quite hard to handle depending on the implementation language. Some language support natively a max recursion depth. However, on most compiled languages, you should add a threshold of recursion. POC TLDR With maxsize being the number of nested fragment generated. At maxsize=7500, it should instantly raise: However, with a lower size, you will overflow the memory after some iterations. Reproduction steps (Juniper) Save this POC as poc.py Credits @Escape-Technologies @c3b5aw @MdotTIM @karimhreda
Recommended action: Upgrade to 0.15.10 or later, then redeploy and verify.A vendor fix does not resolve your finding until you verify it in your own systems.