Miggo Logo

CVE-2022-3509:
Protobuf Java vulnerable to Uncontrolled Resource Consumption

7.5

CVSS Score

Basic Information

EPSS Score
-
Published
12/12/2022
Updated
1/28/2023
KEV Status
No
Technology
TechnologyJava

Technical Details

CVSS Vector
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H
Package NameEcosystemVulnerable VersionsFirst Patched Version
com.google.protobuf:protobuf-javamaven< 3.16.33.16.3
com.google.protobuf:protobuf-javamaven>= 3.17.0, < 3.19.63.19.6
com.google.protobuf:protobuf-javamaven>= 3.20.0, < 3.20.33.20.3
com.google.protobuf:protobuf-javamaven>= 3.21.0, < 3.21.73.21.7
com.google.protobuf:protobuf-javalitemaven< 3.16.33.16.3
com.google.protobuf:protobuf-javalitemaven>= 3.17.0, < 3.19.63.19.6
com.google.protobuf:protobuf-javalitemaven>= 3.20.0, < 3.20.33.20.3
com.google.protobuf:protobuf-javalitemaven>= 3.21.0, < 3.21.73.21.7

Vulnerability Intelligence
Miggo AIMiggo AI

Miggo AIRoot Cause Analysis

The vulnerability stems from inefficient handling of message builders during textformat parsing. The commit a3888f5 shows critical changes in BuilderAdapter methods (setField, setRepeatedField, addRepeatedField) where MessageLite.Builder instances were being passed around without being converted to immutable messages via buildPartial(). This caused repeated conversions between mutable/immutable states when processing non-repeated embedded messages with repeated/unknown fields. The patch explicitly converts builders to messages early in these methods, reducing GC pressure by preventing object thrashing.

Vulnerable functions

Only Mi**o us*rs **n s** t*is s**tion

WAF Protection Rules

WAF Rule

* p*rsin* issu* simil*r to *V*-****-****, *ut wit* t*xt*orm*t in proto*u*-j*v* *or* *n* lit* v*rsions prior to *.**.*, *.**.*, *.**.* *n* *.**.* **n l*** to * **ni*l o* s*rvi** *tt**k. Inputs *ont*inin* multipl* inst*n**s o* non-r*p**t** *m****** m*s

Reasoning

T** vuln*r**ility st*ms *rom in***i*i*nt **n*lin* o* m*ss*** *uil**rs *urin* t*xt*orm*t p*rsin*. T** *ommit ******* s*ows *riti**l ***n**s in *uil**r***pt*r m*t*o*s (s*t*i*l*, s*tR*p**t***i*l*, ***R*p**t***i*l*) w**r* M*ss***Lit*.*uil**r inst*n**s w*