Snyk has a proof-of-concept or detailed explanation of how to exploit this vulnerability.
The probability is the direct output of the EPSS model, and conveys an overall sense of the threat of exploitation in the wild. The percentile measures the EPSS probability relative to all known EPSS scores. Note: This data is updated daily, relying on the latest available EPSS model version. Check out the EPSS documentation for more details.
In a few clicks we can analyze your entire application and see what components are vulnerable in your application, and suggest you quick fixes.
Test your applicationsUpgrade protobuf to version 0.17.1 or higher.
protobuf is a pure Elixir implementation of Google Protobuf.
Affected versions of this package are vulnerable to Uncontrolled Recursion in Protobuf.JSON.Decode in lib/protobuf/json/decode.ex, whose decode_singular/3 embedded message clause, internal_from_json_data/3, decode_message/4, decode_regular_fields/3, and decode_value/3 descend through nested messages without calling increase_depth_and_maybe_throw/1, which runs only in the Google.Protobuf.ListValue and Google.Protobuf.Struct clauses. An attacker can exhaust the stack and memory and crash the process by sending one deeply nested JSON body to an endpoint that decodes it into a self-referential message type such as a tree node. This requires the application to decode attacker supplied JSON into a schema that references itself, the recursion_limit option does not constrain user defined types, and since max_heap_size defaults to unlimited the consumption from concurrent requests can reach the whole node rather than the one process.
This vulnerability can be avoided by capping the accepted request body size and rejecting JSON past a maximum nesting depth at the web or middleware layer, before the decoder is reached.