Cloudanix VulnDB

CVE-2022-3509

High · 7.5

CVSS

7.5

EPSS

0.9%

Published

Dec 12, 2022

CISA due date

—

Cloudanix analysis

Schedule a fix SSVC: Track

A bug in a widely used data-handling library lets attackers send specially formatted data that can make affected programs become unresponsive.

Exploitation
Remote Unauthenticated
Attacker needs
None
Complexity
Low
Impact
Denial Of Service
Component
Library
Class
Denial of service
Remediation
Upgrade
Effort
Medium
Patch risk
Low

What it actually does

Parsing of specially crafted textformat inputs containing multiple non-repeated embedded messages with repeated or unknown fields triggers repeated mutable-to-immutable conversions in protobuf-java core and lite, producing extended garbage collection pauses that result in denial of service.

Why it matters to the business

Attackers can remotely disrupt availability of any service that parses untrusted protobuf textformat data, causing outages or degraded performance until the process is restarted or the garbage collector recovers.

How an attack unfolds

An attacker sends a crafted textformat payload over the network to any exposed protobuf-java parser; the input triggers repeated object conversions that consume CPU and memory during garbage collection, leading to service unresponsiveness.

How to fix it

Upgrade protocolbuffers/protobuf (GIT) to commit a3888f53317a8018e7a439bac4abeb8f3425d5e9 or later; for Maven/Gradle users, update protobuf-java and protobuf-java-util to 3.21.7, 3.20.3, 3.19.6, or 3.16.3.

How to confirm the fix worked

Confirm the protobuf-java dependency version is at or above one of the fixed releases; re-test parsing of the original malicious textformat payload to verify that excessive GC pauses no longer occur.

Typical attack path

  1. Identify a network-accessible endpoint that accepts protobuf textformat input
  2. Craft a message containing multiple non-repeated embedded messages with repeated or unknown fields
  3. Transmit the payload to the target parser
  4. Observe prolonged garbage collection pauses that render the service unavailable

How to detect it

Monitor application logs for repeated garbage collection warnings or unusually long GC pause times during protobuf textformat parsing; correlate with inbound requests containing protobuf content-type or textformat payloads.

What your security team should do

  • Immediately update all protobuf-java usages to a fixed version
  • Add dependency scanning to CI pipelines to block vulnerable protobuf releases
  • Review any custom textformat parsers for similar conversion patterns

The record

A parsing issue similar to CVE-2022-3171, but with textformat 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.

Affected packages

Ecosystem Package Introduced Fixed
Maven com.google.protobuf:protobuf-java 0 3.16.3
Maven com.google.protobuf:protobuf-java 3.0.0 3.16.3
Maven com.google.protobuf:protobuf-java 3.17.0 3.19.6
Maven com.google.protobuf:protobuf-java 3.20.0 3.20.3
Maven com.google.protobuf:protobuf-java 3.21.0 3.21.7
Maven com.google.protobuf:protobuf-javalite 0 3.16.3
Maven com.google.protobuf:protobuf-javalite 3.0.0 3.16.3
Maven com.google.protobuf:protobuf-javalite 3.17.0 3.19.6
Maven com.google.protobuf:protobuf-javalite 3.20.0 3.20.3
Maven com.google.protobuf:protobuf-javalite 3.21.0 3.21.7
Chainguard apache-nifi 0 1.26.0-r2
Chainguard apache-nifi 0 2.6.0-r2
Chainguard apache-nifi-compat 0 2.6.0-r2
Chainguard apache-nifi-toolkit 0 2.6.0-r2
Chainguard dotty 0 3.4.0-r0
Chainguard druid 0 0
Chainguard druid-compat 0 0
Chainguard emsdk 0 5.0.0-r1
Chainguard hadoop-client-modules 0 3.3.6-r8
Chainguard spark-3.5 0 3.5.7-r2
Chainguard spark-3.5-scala-2.12-compat 0 3.5.7-r2
Chainguard spark-3.5-scala-2.12-iamguarded-compat 0 3.5.7-r2
Chainguard spark-3.5-scala-2.13-compat 0 3.5.7-r2
Chainguard spark-3.5.0-compat 0 0
Chainguard spark-fips-3.5 0 3.5.4-r17
Chainguard spark-fips-3.5-scala-2.12-compat 0 3.5.4-r17
Chainguard spark-fips-3.5-scala-2.13-compat 0 3.5.4-r17
Chainguard trino 0 439-r0
Chainguard trino-config 0 439-r0
Chainguard trino-oci-entrypoint 0 439-r0
Chainguard trino-plugin-accumulo 0 439-r0
Chainguard trino-plugin-ai-functions 0 439-r0
Chainguard trino-plugin-atop 0 439-r0
Chainguard trino-plugin-bigquery 0 439-r0
Chainguard trino-plugin-blackhole 0 439-r0
Chainguard trino-plugin-cassandra 0 439-r0
Chainguard trino-plugin-clickhouse 0 439-r0
Chainguard trino-plugin-delta-lake 0 439-r0
Chainguard trino-plugin-druid 0 439-r0
Chainguard trino-plugin-duckdb 0 439-r0
Chainguard trino-plugin-elasticsearch 0 439-r0
Chainguard trino-plugin-example-http 0 439-r0
Chainguard trino-plugin-exasol 0 439-r0
Chainguard trino-plugin-exchange-filesystem 0 439-r0
Chainguard trino-plugin-exchange-hdfs 0 439-r0
Chainguard trino-plugin-faker 0 439-r0
Chainguard trino-plugin-functions-python 0 439-r0
Chainguard trino-plugin-geospatial 0 439-r0
Chainguard trino-plugin-google-sheets 0 439-r0
Chainguard trino-plugin-hive 0 439-r0
Chainguard trino-plugin-http-event-listener 0 439-r0
Chainguard trino-plugin-http-server-event-listener 0 439-r0
Chainguard trino-plugin-hudi 0 439-r0
Chainguard trino-plugin-iceberg 0 439-r0
Chainguard trino-plugin-ignite 0 439-r0
Chainguard trino-plugin-jmx 0 439-r0
Chainguard trino-plugin-kafka 0 439-r0
Chainguard trino-plugin-kafka-event-listener 0 439-r0
Chainguard trino-plugin-kinesis 0 439-r0
Chainguard trino-plugin-kudu 0 439-r0
Chainguard trino-plugin-lakehouse 0 439-r0
Chainguard trino-plugin-ldap-group-provider 0 439-r0
Chainguard trino-plugin-local-file 0 439-r0
Chainguard trino-plugin-loki 0 439-r0
Chainguard trino-plugin-mariadb 0 439-r0
Chainguard trino-plugin-memory 0 439-r0
Chainguard trino-plugin-ml 0 439-r0
Chainguard trino-plugin-mongodb 0 439-r0
Chainguard trino-plugin-mysql 0 439-r0
Chainguard trino-plugin-mysql-event-listener 0 439-r0
Chainguard trino-plugin-opa 0 439-r0
Chainguard trino-plugin-openlineage 0 439-r0
Chainguard trino-plugin-opensearch 0 439-r0
Chainguard trino-plugin-oracle 0 439-r0
Chainguard trino-plugin-password-authenticators 0 439-r0
Chainguard trino-plugin-phoenix5 0 439-r0
Chainguard trino-plugin-pinot 0 439-r0
Chainguard trino-plugin-postgresql 0 439-r0
Chainguard trino-plugin-prometheus 0 439-r0
Chainguard trino-plugin-ranger 0 439-r0
Chainguard trino-plugin-raptor-legacy 0 439-r0
Chainguard trino-plugin-redis 0 439-r0
Chainguard trino-plugin-redshift 0 439-r0
Chainguard trino-plugin-resource-group-managers 0 439-r0
Chainguard trino-plugin-session-property-managers 0 439-r0
Chainguard trino-plugin-singlestore 0 439-r0
Chainguard trino-plugin-snowflake 0 439-r0
Chainguard trino-plugin-spooling-filesystem 0 439-r0
Chainguard trino-plugin-sqlserver 0 439-r0
Chainguard trino-plugin-teradata-functions 0 439-r0
Chainguard trino-plugin-thrift 0 439-r0
Chainguard trino-plugin-tpcds 0 439-r0
Chainguard trino-plugin-tpch 0 439-r0
Chainguard trino-plugin-vertica 0 439-r0
Debian:11 protobuf 0 No fix
Debian:12 protobuf 0 3.21.9-3
Debian:13 protobuf 0 3.21.9-3
Ubuntu:Pro:14.04:LTS protobuf 0 No fix
Ubuntu:Pro:16.04:LTS protobuf 0 No fix
Wolfi apache-nifi 0 2.6.0-r2
Wolfi apache-nifi-compat 0 2.6.0-r2
Wolfi apache-nifi-toolkit 0 2.6.0-r2
Wolfi dotty 0 3.4.0-r0
Wolfi druid 0 0
Wolfi druid-compat 0 0
Wolfi spark-3.5 0 3.5.7-r2
Wolfi spark-3.5-scala-2.12-compat 0 3.5.7-r2
Wolfi spark-3.5-scala-2.12-iamguarded-compat 0 3.5.7-r2
Wolfi spark-3.5-scala-2.13-compat 0 3.5.7-r2
Wolfi trino 0 439-r0
Wolfi trino-config 0 439-r0
Wolfi trino-oci-entrypoint 0 439-r0
Wolfi trino-plugin-accumulo 0 439-r0
Wolfi trino-plugin-ai-functions 0 439-r0
Wolfi trino-plugin-atop 0 439-r0
Wolfi trino-plugin-bigquery 0 439-r0
Wolfi trino-plugin-blackhole 0 439-r0
Wolfi trino-plugin-cassandra 0 439-r0
Wolfi trino-plugin-clickhouse 0 439-r0
Wolfi trino-plugin-delta-lake 0 439-r0
Wolfi trino-plugin-druid 0 439-r0
Wolfi trino-plugin-duckdb 0 439-r0
Wolfi trino-plugin-elasticsearch 0 439-r0
Wolfi trino-plugin-example-http 0 439-r0
Wolfi trino-plugin-exasol 0 439-r0
Wolfi trino-plugin-exchange-filesystem 0 439-r0
Wolfi trino-plugin-exchange-hdfs 0 439-r0
Wolfi trino-plugin-faker 0 439-r0
Wolfi trino-plugin-functions-python 0 439-r0
Wolfi trino-plugin-geospatial 0 439-r0
Wolfi trino-plugin-google-sheets 0 439-r0
Wolfi trino-plugin-hive 0 439-r0
Wolfi trino-plugin-http-event-listener 0 439-r0
Wolfi trino-plugin-http-server-event-listener 0 439-r0
Wolfi trino-plugin-hudi 0 439-r0
Wolfi trino-plugin-iceberg 0 439-r0
Wolfi trino-plugin-ignite 0 439-r0
Wolfi trino-plugin-jmx 0 439-r0
Wolfi trino-plugin-kafka 0 439-r0
Wolfi trino-plugin-kafka-event-listener 0 439-r0
Wolfi trino-plugin-kinesis 0 439-r0
Wolfi trino-plugin-kudu 0 439-r0
Wolfi trino-plugin-lakehouse 0 439-r0
Wolfi trino-plugin-ldap-group-provider 0 439-r0
Wolfi trino-plugin-local-file 0 439-r0
Wolfi trino-plugin-loki 0 439-r0
Wolfi trino-plugin-mariadb 0 439-r0
Wolfi trino-plugin-memory 0 439-r0
Wolfi trino-plugin-ml 0 439-r0
Wolfi trino-plugin-mongodb 0 439-r0
Wolfi trino-plugin-mysql 0 439-r0
Wolfi trino-plugin-mysql-event-listener 0 439-r0
Wolfi trino-plugin-opa 0 439-r0
Wolfi trino-plugin-openlineage 0 439-r0
Wolfi trino-plugin-opensearch 0 439-r0
Wolfi trino-plugin-oracle 0 439-r0
Wolfi trino-plugin-password-authenticators 0 439-r0
Wolfi trino-plugin-phoenix5 0 439-r0
Wolfi trino-plugin-pinot 0 439-r0
Wolfi trino-plugin-postgresql 0 439-r0
Wolfi trino-plugin-prometheus 0 439-r0
Wolfi trino-plugin-ranger 0 439-r0
Wolfi trino-plugin-raptor-legacy 0 439-r0
Wolfi trino-plugin-redis 0 439-r0
Wolfi trino-plugin-redshift 0 439-r0
Wolfi trino-plugin-resource-group-managers 0 439-r0
Wolfi trino-plugin-session-property-managers 0 439-r0
Wolfi trino-plugin-singlestore 0 439-r0
Wolfi trino-plugin-snowflake 0 439-r0
Wolfi trino-plugin-spooling-filesystem 0 439-r0
Wolfi trino-plugin-sqlserver 0 439-r0
Wolfi trino-plugin-teradata-functions 0 439-r0
Wolfi trino-plugin-thrift 0 439-r0
Wolfi trino-plugin-tpcds 0 439-r0
Wolfi trino-plugin-tpch 0 439-r0
Wolfi trino-plugin-vertica 0 439-r0
maven com.google.protobuf/protobuf-java 3.0.0 3.16.3
maven com.google.protobuf/protobuf-java 3.16.0 3.16.3
maven com.google.protobuf/protobuf-java 3.17.0 3.19.6
maven com.google.protobuf/protobuf-java 3.19.0 3.19.6
maven com.google.protobuf/protobuf-java 3.20.0 3.20.3
maven com.google.protobuf/protobuf-java 3.21.0 3.21.7
maven com.google.protobuf/protobuf-javalite 3.0.0 3.16.3
maven com.google.protobuf/protobuf-javalite 3.17.0 3.19.6
maven com.google.protobuf/protobuf-javalite 3.20.0 3.20.3
maven com.google.protobuf/protobuf-javalite 3.21.0 3.21.7

Related vulnerabilities