{"id":"CVE-2025-4565","aliases":["GHSA-8qvm-5x2c-j2w7","PYSEC-2026-1806"],"title":"protobuf-python has a potential Denial of Service issue","summary":"protobuf-python has a potential Denial of Service issue","severity":"high","vendor":"protobuf","product":"protobuf","ecosystem":"pip","affected":["protobuf < 4.25.8","protobuf >= 5.26.0rc1, < 5.29.5","protobuf >= 6.30.0rc1, < 6.31.1"],"patched":["protobuf 4.25.8","protobuf 5.29.5","protobuf 6.31.1"],"published":"2025-06-16","updated":"2026-09-10","sourceUpdated":"2026-09-10T03:50:25.255076549Z","source":"OSV","sourceUrl":"https://osv.dev/vulnerability/GHSA-8qvm-5x2c-j2w7","references":[{"url":"https://github.com/protocolbuffers/protobuf/security/advisories/GHSA-735f-pc8j-v9w8"},{"url":"https://github.com/protocolbuffers/protobuf/security/advisories/GHSA-8qvm-5x2c-j2w7"},{"url":"https://nvd.nist.gov/vuln/detail/CVE-2025-4565"},{"url":"https://github.com/protocolbuffers/protobuf/commit/17838beda2943d08b8a9d4df5b68f5f04f26d901"},{"url":"https://github.com/protocolbuffers/protobuf"},{"url":"https://github.com/protocolbuffers/protobuf/blob/main/python/google/protobuf/internal/decoder_test.py#L87-L98"},{"url":"https://github.com/protocolbuffers/protobuf/blob/main/python/google/protobuf/internal/message_test.py#L1436-L1478"},{"url":"https://github.com/protocolbuffers/protobuf/tree/main/python#implementation-backends"}],"tags":["osv","pip"],"epss":0.00255,"epssPercentile":0.17406,"ingestedAt":"2026-07-08T18:25:47.537Z","slug":"CVE-2025-4565","body":"## Overview\n\n### Summary\nAny project that uses Protobuf pure-Python backend to parse untrusted Protocol Buffers data containing an arbitrary number of **recursive groups**, **recursive messages** or **a series of [`SGROUP`](https://protobuf.dev/programming-guides/encoding/#groups) tags** can be corrupted by exceeding the Python recursion limit.\n\nReporter: Alexis Challande, Trail of Bits Ecosystem Security Team\n[ecosystem@trailofbits.com](mailto:ecosystem@trailofbits.com)\n\nAffected versions: This issue only affects the [pure-Python implementation](https://github.com/protocolbuffers/protobuf/tree/main/python#implementation-backends) of protobuf-python backend. This is the implementation when `PROTOCOL_BUFFERS_PYTHON_IMPLEMENTATION=python` environment variable is set or the default when protobuf is used from Bazel or pure-Python PyPi wheels. CPython PyPi wheels do not use pure-Python by default.\n\nThis is a Python variant of a [previous issue affecting protobuf-java](https://github.com/protocolbuffers/protobuf/security/advisories/GHSA-735f-pc8j-v9w8).\n\n### Severity\nThis is a potential Denial of Service. Parsing nested protobuf data creates unbounded recursions that can be abused by an attacker.\n\n### Proof of Concept\nFor reproduction details, please refer to the unit tests [decoder_test.py](https://github.com/protocolbuffers/protobuf/blob/main/python/google/protobuf/internal/decoder_test.py#L87-L98) and [message_test](https://github.com/protocolbuffers/protobuf/blob/main/python/google/protobuf/internal/message_test.py#L1436-L1478)\n\n### Remediation and Mitigation\nA mitigation is available now. Please update to the latest available versions of the following packages:\n* protobuf-python(4.25.8, 5.29.5, 6.31.1)\n\n## Affected packages\n\n- `protobuf < 4.25.8`\n- `protobuf >= 5.26.0rc1, < 5.29.5`\n- `protobuf >= 6.30.0rc1, < 6.31.1`\n\n## Remediation\n\nUpgrade to a patched release:\n\n- `protobuf 4.25.8`\n- `protobuf 5.29.5`\n- `protobuf 6.31.1`","depth":"twilight","depthScore":41,"depthScoreParts":{"impact":41.3,"likelihood":0.1,"exploitation":0,"ransomware":0},"changes":[]}