A denial-of-service (DoS) vulnerability exists in google.protobuf.jsonformat.ParseDict() in Python, where the maxrecursion_depth limit can be bypassed when parsing nested google.protobuf.Any messages. Due to missing recursion depth accounting inside the internal Any-handling logic, an attacker can supply deeply nested Any structures that bypass the intended recursion limit, eventually exhausting Python’s recursion stack and causing a RecursionError.
{
"binaries": [
{
"binary_version": "3.0.0-9.1ubuntu1.1+esm3",
"binary_name": "libprotobuf-dev"
},
{
"binary_version": "3.0.0-9.1ubuntu1.1+esm3",
"binary_name": "libprotobuf-java"
},
{
"binary_version": "3.0.0-9.1ubuntu1.1+esm3",
"binary_name": "libprotobuf-lite10"
},
{
"binary_version": "3.0.0-9.1ubuntu1.1+esm3",
"binary_name": "libprotobuf10"
},
{
"binary_version": "3.0.0-9.1ubuntu1.1+esm3",
"binary_name": "libprotoc-dev"
},
{
"binary_version": "3.0.0-9.1ubuntu1.1+esm3",
"binary_name": "libprotoc10"
},
{
"binary_version": "3.0.0-9.1ubuntu1.1+esm3",
"binary_name": "protobuf-compiler"
},
{
"binary_version": "3.0.0-9.1ubuntu1.1+esm3",
"binary_name": "python-protobuf"
},
{
"binary_version": "3.0.0-9.1ubuntu1.1+esm3",
"binary_name": "python3-protobuf"
}
]
}
{
"binaries": [
{
"binary_version": "3.6.1.3-2ubuntu5.2+esm2",
"binary_name": "libprotobuf-dev"
},
{
"binary_version": "3.6.1.3-2ubuntu5.2+esm2",
"binary_name": "libprotobuf-java"
},
{
"binary_version": "3.6.1.3-2ubuntu5.2+esm2",
"binary_name": "libprotobuf-lite17"
},
{
"binary_version": "3.6.1.3-2ubuntu5.2+esm2",
"binary_name": "libprotobuf17"
},
{
"binary_version": "3.6.1.3-2ubuntu5.2+esm2",
"binary_name": "libprotoc-dev"
},
{
"binary_version": "3.6.1.3-2ubuntu5.2+esm2",
"binary_name": "libprotoc17"
},
{
"binary_version": "3.6.1.3-2ubuntu5.2+esm2",
"binary_name": "protobuf-compiler"
},
{
"binary_version": "3.6.1.3-2ubuntu5.2+esm2",
"binary_name": "python-protobuf"
},
{
"binary_version": "3.6.1.3-2ubuntu5.2+esm2",
"binary_name": "python3-protobuf"
},
{
"binary_version": "3.6.1.3-2ubuntu5.2+esm2",
"binary_name": "ruby-google-protobuf"
}
]
}
{
"binaries": [
{
"binary_version": "3.12.4-1ubuntu7.22.04.6",
"binary_name": "elpa-protobuf-mode"
},
{
"binary_version": "3.12.4-1ubuntu7.22.04.6",
"binary_name": "libprotobuf-dev"
},
{
"binary_version": "3.12.4-1ubuntu7.22.04.6",
"binary_name": "libprotobuf-java"
},
{
"binary_version": "3.12.4-1ubuntu7.22.04.6",
"binary_name": "libprotobuf-lite23"
},
{
"binary_version": "3.12.4-1ubuntu7.22.04.6",
"binary_name": "libprotobuf23"
},
{
"binary_version": "3.12.4-1ubuntu7.22.04.6",
"binary_name": "libprotoc-dev"
},
{
"binary_version": "3.12.4-1ubuntu7.22.04.6",
"binary_name": "libprotoc23"
},
{
"binary_version": "3.12.4-1ubuntu7.22.04.6",
"binary_name": "protobuf-compiler"
},
{
"binary_version": "3.12.4-1ubuntu7.22.04.6",
"binary_name": "python3-protobuf"
},
{
"binary_version": "3.12.4-1ubuntu7.22.04.6",
"binary_name": "ruby-google-protobuf"
}
],
"availability": "No subscription required"
}
{
"binaries": [
{
"binary_version": "3.21.12-8.2ubuntu0.3",
"binary_name": "elpa-protobuf-mode"
},
{
"binary_version": "3.21.12-8.2ubuntu0.3",
"binary_name": "libprotobuf-dev"
},
{
"binary_version": "3.21.12-8.2ubuntu0.3",
"binary_name": "libprotobuf-java"
},
{
"binary_version": "3.21.12-8.2ubuntu0.3",
"binary_name": "libprotobuf-lite32t64"
},
{
"binary_version": "3.21.12-8.2ubuntu0.3",
"binary_name": "libprotobuf32t64"
},
{
"binary_version": "3.21.12-8.2ubuntu0.3",
"binary_name": "libprotoc-dev"
},
{
"binary_version": "3.21.12-8.2ubuntu0.3",
"binary_name": "libprotoc32t64"
},
{
"binary_version": "3.21.12-8.2ubuntu0.3",
"binary_name": "php-google-protobuf"
},
{
"binary_version": "3.21.12-8.2ubuntu0.3",
"binary_name": "protobuf-compiler"
},
{
"binary_version": "3.21.12-8.2ubuntu0.3",
"binary_name": "python3-protobuf"
},
{
"binary_version": "3.21.12-8.2ubuntu0.3",
"binary_name": "ruby-google-protobuf"
}
],
"availability": "No subscription required"
}
{
"binaries": [
{
"binary_version": "3.21.12-11ubuntu3.1",
"binary_name": "elpa-protobuf-mode"
},
{
"binary_version": "3.21.12-11ubuntu3.1",
"binary_name": "libprotobuf-dev"
},
{
"binary_version": "3.21.12-11ubuntu3.1",
"binary_name": "libprotobuf-java"
},
{
"binary_version": "3.21.12-11ubuntu3.1",
"binary_name": "libprotobuf-lite32t64"
},
{
"binary_version": "3.21.12-11ubuntu3.1",
"binary_name": "libprotobuf32t64"
},
{
"binary_version": "3.21.12-11ubuntu3.1",
"binary_name": "libprotoc-dev"
},
{
"binary_version": "3.21.12-11ubuntu3.1",
"binary_name": "libprotoc32t64"
},
{
"binary_version": "3.21.12-11ubuntu3.1",
"binary_name": "php-google-protobuf"
},
{
"binary_version": "3.21.12-11ubuntu3.1",
"binary_name": "protobuf-compiler"
},
{
"binary_version": "3.21.12-11ubuntu3.1",
"binary_name": "python3-protobuf"
},
{
"binary_version": "3.21.12-11ubuntu3.1",
"binary_name": "ruby-google-protobuf"
}
],
"availability": "No subscription required"
}