CVE-2022-3171 Memory handling vulnerability in ProtocolBuffers Java core and lite
Attackers can cause denial of service via long garbage collection pauses by sending crafted binary data to applications using the Protocol Buffers Java library.
- Exploited in the wild
- Not known
- Login needed
- Not needed
- Attackable
- Local or same network only
- Victim action needed
- Not needed
- Fix
- Available
What is CVE-2022-3171?
CVE-2022-3171 is a medium-severity denial of service vulnerability in Fedoraproject Fedora, published on 12 Oct 2022. It can only be exploited from the same machine or local network, with no action from the victim.
Official description
A parsing issue with binary data in protobuf-java core and lite versions prior to 3.21.7, 3.20.3, 3.19.6 and 3.16.3 can lead to a denial of service attack. Inputs containing multiple instances of non-repeated embedded messages with repeated or unknown fields causes objects to be converted back-n-forth between mutable and immutable forms, resulting in potentially long garbage collection pauses. We recommend updating to the versions mentioned above.
Weakness: CWE-20
Which versions are affected by CVE-2022-3171?
40 open source packages ship an affected version, including com.google.protobuf:protobuf-java, com.google.protobuf:protobuf-javalite and com.google.protobuf:protobuf-kotlin. It affects 6 products.
| Package | Affected | Fixed in |
|---|---|---|
com.google.protobuf:protobuf-java Maven | All versions | 3.16.3 |
com.google.protobuf:protobuf-java Maven | All versions | 3.16.3 |
com.google.protobuf:protobuf-java Maven | From 3.17.0-rc-1 | 3.19.6 |
com.google.protobuf:protobuf-java Maven | From 3.17.0-rc-1 | 3.19.6 |
com.google.protobuf:protobuf-java Maven | From 3.20.0-rc-1 | 3.20.3 |
com.google.protobuf:protobuf-java Maven | From 3.20.0-rc-1 | 3.20.3 |
34 more packages
com.google.protobuf:protobuf-java Maven | From 3.21.0-rc-1 | 3.21.7 |
com.google.protobuf:protobuf-java Maven | From 3.21.0-rc-1 | 3.21.7 |
com.google.protobuf:protobuf-javalite Maven | All versions | 3.16.3 |
com.google.protobuf:protobuf-javalite Maven | All versions | 3.16.3 |
com.google.protobuf:protobuf-javalite Maven | From 3.17.0-rc-1 | 3.19.6 |
com.google.protobuf:protobuf-javalite Maven | From 3.17.0-rc-1 | 3.19.6 |
com.google.protobuf:protobuf-javalite Maven | From 3.20.0-rc-1 | 3.20.3 |
com.google.protobuf:protobuf-javalite Maven | From 3.20.0-rc-1 | 3.20.3 |
com.google.protobuf:protobuf-javalite Maven | From 3.21.0-rc-1 | 3.21.7 |
com.google.protobuf:protobuf-javalite Maven | From 3.21.0-rc-1 | 3.21.7 |
com.google.protobuf:protobuf-kotlin Maven | All versions | 3.16.3 |
com.google.protobuf:protobuf-kotlin Maven | All versions | 3.16.3 |
com.google.protobuf:protobuf-kotlin Maven | From 3.17.0-rc-1 | 3.19.6 |
com.google.protobuf:protobuf-kotlin Maven | From 3.17.0-rc-1 | 3.19.6 |
com.google.protobuf:protobuf-kotlin Maven | From 3.20.0-rc-1 | 3.20.3 |
com.google.protobuf:protobuf-kotlin Maven | From 3.20.0-rc-1 | 3.20.3 |
com.google.protobuf:protobuf-kotlin Maven | From 3.21.0-rc-1 | 3.21.7 |
com.google.protobuf:protobuf-kotlin Maven | From 3.21.0-rc-1 | 3.21.7 |
com.google.protobuf:protobuf-kotlin-lite Maven | All versions | 3.16.3 |
com.google.protobuf:protobuf-kotlin-lite Maven | All versions | 3.16.3 |
com.google.protobuf:protobuf-kotlin-lite Maven | From 3.17.0-rc-1 | 3.19.6 |
com.google.protobuf:protobuf-kotlin-lite Maven | From 3.17.0-rc-1 | 3.19.6 |
com.google.protobuf:protobuf-kotlin-lite Maven | From 3.20.0-rc-1 | 3.20.3 |
com.google.protobuf:protobuf-kotlin-lite Maven | From 3.20.0-rc-1 | 3.20.3 |
com.google.protobuf:protobuf-kotlin-lite Maven | From 3.21.0-rc-1 | 3.21.7 |
com.google.protobuf:protobuf-kotlin-lite Maven | From 3.21.0-rc-1 | 3.21.7 |
google-protobuf RubyGems | All versions | 3.16.3 |
google-protobuf RubyGems | All versions | 3.16.3 |
google-protobuf RubyGems | From 3.17.0.rc.1 | 3.19.6 |
google-protobuf RubyGems | From 3.17.0.rc.1 | 3.19.6 |
google-protobuf RubyGems | From 3.20.0.rc.1 | 3.20.3 |
google-protobuf RubyGems | From 3.20.0.rc.1 | 3.20.3 |
google-protobuf RubyGems | From 3.21.0.rc.1 | 3.21.7 |
google-protobuf RubyGems | From 3.21.0.rc.1 | 3.21.7 |
Products include Fedoraproject Fedora, Google Google-Protobuf, Google Protobuf-Java, Google Protobuf-Javalite, Google Protobuf-Kotlin, Google Protobuf-Kotlin-Lite.
How do I fix CVE-2022-3171?
Upgrade com.google.protobuf:protobuf-java to a fixed version for your release line: 3.16.3, 3.19.6, 3.20.3 or 3.21.7.
Upgrade, then put limits on request size, rate and nesting depth so one client cannot exhaust the service. More about Denial of service.
Is CVE-2022-3171 being exploited?
There is no known exploitation of CVE-2022-3171 in the wild and no public exploit code.
Other vulnerabilities in Fedoraproject Fedora
Sources
Also known as CLEANSTART-2026-AV57631, CLEANSTART-2026-FD57145, DEBIAN-CVE-2022-3171, ECHO-7811-b7c6-2509, GHSA-h4h5-3hr4-j3g2, MINI-243g-q5cw-w5hf and 6 more.