CVE-2021-22570 Overview
CVE-2021-22570 is a Null Pointer Dereference vulnerability affecting Google Protocol Buffers (protobuf), a widely-used data serialization framework. The vulnerability occurs when a null character is present in a proto symbol, causing the symbol to be parsed incorrectly. This leads to an unchecked call into the proto file's name during generation of the resulting error message. Since the symbol is incorrectly parsed, the file pointer becomes nullptr, resulting in a crash when dereferenced.
Critical Impact
Applications using vulnerable versions of Google Protobuf can be crashed through specially crafted proto files containing null characters in symbols, leading to denial of service conditions.
Affected Products
- Google Protobuf (versions prior to 3.15.0)
- Debian Linux 9.0, 10.0, 11.0
- Fedora 34, 35, 36
- Oracle MySQL
- NetApp Active IQ Unified Manager (VMware vSphere and Windows)
- NetApp OnCommand Insight
- NetApp OnCommand Workflow Automation
- NetApp SnapCenter
Discovery Timeline
- 2022-01-26 - CVE-2021-22570 published to NVD
- 2024-11-21 - Last updated in NVD database
Technical Details for CVE-2021-22570
Vulnerability Analysis
This vulnerability represents a classic null pointer dereference issue (CWE-476) that occurs during error message generation in the protobuf compiler and runtime. When parsing proto symbols, the parser fails to properly handle embedded null characters within symbol names. The null character causes premature string termination during parsing, resulting in an incomplete or malformed symbol representation.
The critical flaw lies in the subsequent error handling path. When the parser detects an invalid symbol and attempts to generate a descriptive error message, it accesses the file descriptor associated with the symbol without first validating that the file pointer is non-null. Because the malformed parsing left the file reference uninitialized (nullptr), the dereference operation causes an immediate crash.
This vulnerability requires local access and low privileges to exploit, making it suitable for denial of service attacks against applications that process untrusted protobuf schema files or messages.
Root Cause
The root cause is insufficient input validation in the protobuf symbol parsing logic combined with missing null-pointer checks in the error handling code path. The parser does not anticipate or properly handle null characters within proto symbols, and the error message generation routine assumes the file descriptor will always be valid without performing defensive null checks.
Attack Vector
The attack vector is local, requiring an attacker to provide a specially crafted proto file to an application that uses the vulnerable protobuf library. The attacker must craft a proto symbol containing a null character (\0) which triggers the incorrect parsing behavior. When the application processes this malformed input, it crashes due to the null pointer dereference, resulting in a denial of service.
The vulnerability can be triggered in scenarios where:
- Applications compile or validate untrusted .proto schema files
- Services process serialized protobuf messages from untrusted sources
- Build systems that handle external proto definitions
The exploitation mechanism involves embedding a null character within a proto symbol definition. When the protobuf compiler or runtime encounters this malformed symbol, the parsing routine misinterprets the symbol boundary, leaving internal data structures in an inconsistent state. The subsequent attempt to access the file descriptor for error reporting results in dereferencing a null pointer, causing application termination.
Detection Methods for CVE-2021-22570
Indicators of Compromise
- Unexpected application crashes with segmentation faults or access violations in protobuf-related code paths
- Core dumps showing null pointer dereference in protobuf symbol parsing or error message generation functions
- Log entries indicating malformed proto symbols or unexpected null characters in proto files
Detection Strategies
- Monitor application logs for crashes related to protobuf processing or proto file compilation
- Implement static analysis to identify protobuf library versions prior to 3.15.0 in your codebase
- Use software composition analysis (SCA) tools to inventory protobuf dependencies across your environment
Monitoring Recommendations
- Configure crash monitoring and alerting for applications that process protobuf data from external sources
- Implement input validation to detect and reject proto files containing embedded null characters in symbol names
- Monitor build pipelines that compile proto definitions for unexpected failures or crashes
How to Mitigate CVE-2021-22570
Immediate Actions Required
- Upgrade Google Protobuf to version 3.15.0 or greater immediately
- Inventory all applications and dependencies that use the protobuf library to identify vulnerable deployments
- Apply vendor-specific patches from Oracle, NetApp, Debian, and Fedora as applicable to your environment
Patch Information
Google has addressed this vulnerability in protobuf version 3.15.0 and later. The fix adds proper null-pointer validation before accessing file descriptors during error message generation. Detailed release information is available in the GitHub Release v3.15.0.
Additional vendor patches are available:
- Debian LTS Announcement April 2023
- Oracle Security Alert April 2022
- NetApp Security Advisory ntap-20220429-0005
Workarounds
- Implement strict input validation to reject proto files from untrusted sources until patching is complete
- Isolate protobuf processing in sandboxed environments to limit the impact of potential crashes
- Use allow-listing for proto file sources, only accepting proto definitions from trusted origins
# Configuration example
# Verify installed protobuf version and upgrade if necessary
# For pip-based Python installations:
pip show protobuf | grep Version
pip install --upgrade protobuf>=3.15.0
# For system packages (Debian/Ubuntu):
apt-cache policy libprotobuf-dev
apt-get update && apt-get install libprotobuf-dev>=3.15.0
Disclaimer: This content was generated using AI. While we strive for accuracy, please verify critical information with official sources.


