Cloudanix VulnDB

CVE-2023-3635

High · 7.5

CVSS

7.5

EPSS

1.3%

Published

Jul 12, 2023

CISA due date

—

Cloudanix analysis

Next patch cycle SSVC: Track

A malformed compressed file or message can cause affected applications to crash or stop handling work until they are updated.

Exploit Available
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

This flaw is an unauthenticated denial-of-service condition in Okio's GzipSource handling of malformed gzip data. When an application uses GzipSource to parse a crafted gzip buffer or archive, an exception can be raised during gzip header/body parsing and may not be handled safely by the affected Okio code path. In vulnerable applications, this can terminate the current parsing operation, crash a worker thread, fail a request, or destabilize the process if the exception propagates to application-level control flow. The issue does not provide confidentiality or integrity impact, but it can cause high availability impact for services, clients, or background jobs that process attacker-controlled gzip content.

Why it matters to the business

Applications that accept, fetch, or process gzip-compressed data using vulnerable Okio versions may be made unreliable or unavailable by malformed compressed input. This can cause failed API calls, service errors, processing backlogs, mobile/client crashes, degraded customer experience, and operational noise from repeated restarts or incident response. The vulnerability has a network-accessible, low-complexity attack profile and public exploit information is available, but it is not currently listed in CISA KEV and the provided EPSS score is low, so prioritization should be highest for internet-facing or externally integrated systems that process untrusted gzip content.

How an attack unfolds

An attacker identifies an application or client workflow that uses Okio GzipSource to decompress gzip data from an untrusted source, such as an uploaded archive, HTTP request body, HTTP response, proxy-fed payload, file import, or message attachment. The attacker then supplies a specially malformed gzip buffer that violates expected gzip structure or metadata. When the vulnerable application passes that buffer to GzipSource, the parser raises an exception during processing. Because the affected implementation does not safely handle the exception in that path, the exception may escape to higher-level application code, causing the request handler, worker, job, or client process to fail. Repeating the malformed input can keep the affected component in a degraded or unavailable state.

How to fix it

Upgrade Okio to a version that includes the upstream fix. For source-based consumers of square/okio, ensure the codebase includes commit 81bce1a30af244550b0324597720e4799281da7b or a later release containing that change. Remove duplicate or transitive vulnerable Okio versions from dependency graphs so the patched implementation is the one actually loaded at runtime. Where immediate upgrade is not possible, reduce exposure by rejecting malformed or unexpected compressed inputs before decompression, enforcing strict request and archive size limits, wrapping gzip parsing in robust exception handling, isolating decompression in failure-contained workers, disabling gzip processing for untrusted sources where feasible, and rate-limiting endpoints that accept compressed content. These mitigations reduce impact but should not be treated as a substitute for upgrading.

How to confirm the fix worked

Confirm remediation by checking dependency manifests, lockfiles, build outputs, and runtime dependency trees for Okio versions or source revisions that include commit 81bce1a30af244550b0324597720e4799281da7b or later. For JVM builds, inspect Gradle or Maven dependency resolution output to ensure no vulnerable transitive Okio artifact remains. For source-based or vendored copies, verify the patched GzipSource implementation is present. Perform a negative test by feeding malformed gzip buffers to application paths that use GzipSource and confirm the application returns a controlled error without crashing, restarting, leaking unhandled exceptions, or leaving worker threads unhealthy. Validate observability by confirming malformed gzip attempts produce expected application errors, metrics, or security events without availability impact.

Typical attack path

  1. Find an application, API, job, or client feature that accepts or retrieves gzip-compressed content and processes it with Okio GzipSource.
  2. Craft a malformed gzip buffer or archive designed to trigger an exception during GzipSource parsing.
  3. Deliver the payload through an exposed upload, import, API request, message, or attacker-controlled HTTP response consumed by the application.
  4. Trigger decompression of the malformed gzip content in the vulnerable Okio code path.
  5. Cause the parsing exception to propagate, resulting in failed requests, crashed workers, application errors, or client instability.
  6. Repeat delivery of the crafted gzip payload to sustain service degradation or denial of service.

How to detect it

To assess possible prior exploitation, review application logs, API gateway logs, reverse proxy logs, crash reports, job-runner logs, mobile/client telemetry, and container or process supervisor events for repeated failures correlated with gzip processing. Look for stack traces or exceptions containing Okio GzipSource frames, malformed gzip parsing messages, unexpected EOF errors during decompression, and bursts of failed requests or worker restarts after compressed payloads are received. In network and access logs, correlate 4xx/5xx spikes with requests containing gzip-related headers such as Content-Encoding: gzip, uploads with gzip file signatures, unusually small or malformed compressed bodies, or repeated attempts from the same source. For client-side use cases, review outbound HTTP telemetry for attacker-controlled or unusual servers returning gzip-encoded content shortly before client crashes. Because this is a denial-of-service flaw rather than a code-execution issue, evidence will usually appear as crashes, unhandled exceptions, failed jobs, service restarts, and availability anomalies rather than persistent files or post-exploitation artifacts.

  • okio.GzipSource
  • okio.GzipSource.read
  • okio.GzipSource.consumeHeader
  • okio.GzipSource.consumeTrailer
  • java.io.EOFException
  • java.io.IOException: ID1ID2
  • Content-Encoding: gzip
  • Accept-Encoding: gzip
  • malformed gzip
  • unexpected end of stream
  • Exception while parsing gzip
  • GzipSource

What your security team should do

  • Inventory applications, services, clients, and batch jobs that use square/okio and process gzip content from users, partners, external APIs, message queues, or file imports.
  • Prioritize patching internet-facing systems and high-volume ingestion paths first, especially where unauthenticated users can submit compressed data.
  • Upgrade to an Okio release or source revision containing commit 81bce1a30af244550b0324597720e4799281da7b, and verify transitive dependencies do not reintroduce a vulnerable version.
  • Add or verify defensive exception handling around gzip decompression so malformed content fails closed with a controlled error rather than destabilizing the process.
  • Apply request-size, decompressed-size, timeout, and rate limits to gzip-processing endpoints and workers.
  • Search historical logs for repeated GzipSource-related exceptions, malformed gzip parsing errors, spikes in 5xx responses, worker crashes, or process restarts around compressed-content processing paths.
  • Add regression tests with malformed gzip samples to prevent future dependency or parser changes from reintroducing unhandled decompression failures.

The record

GzipSource does not handle an exception that might be raised when parsing a malformed gzip buffer. This may lead to denial of service of the Okio client when handling a crafted GZIP archive, by using the GzipSource class.

Affected packages

Ecosystem Package Introduced Fixed
Maven com.squareup.okio:okio 0 1.17.6
Maven com.squareup.okio:okio 2.0.0-RC1 3.4.0
Maven com.squareup.okio:okio-jvm 2.0.0-RC1 3.4.0
Chainguard docker-selenium 0 4.38.0.20251101-r0
Chainguard docker-selenium-base 0 4.38.0.20251101-r0
Chainguard docker-selenium-compat 0 4.38.0.20251101-r0
Chainguard docker-selenium-distributor 0 4.38.0.20251101-r0
Chainguard docker-selenium-event-bus 0 4.38.0.20251101-r0
Chainguard docker-selenium-hub 0 4.38.0.20251101-r0
Chainguard docker-selenium-jre-bcfips 0 4.29.0.20250303-r0
Chainguard docker-selenium-jre-bcfips-supervisor-config 0 4.29.0.20250303-r0
Chainguard docker-selenium-node-base 0 4.38.0.20251101-r0
Chainguard docker-selenium-node-chromium 0 4.38.0.20251101-r0
Chainguard docker-selenium-node-docker 0 4.38.0.20251101-r0
Chainguard docker-selenium-node-firefox 0 4.38.0.20251101-r0
Chainguard docker-selenium-router 0 4.38.0.20251101-r0
Chainguard docker-selenium-session-queue 0 4.38.0.20251101-r0
Chainguard docker-selenium-sessions 0 4.38.0.20251101-r0
Chainguard docker-selenium-standalone 0 4.38.0.20251101-r0
Chainguard docker-selenium-standalone-chromium 0 4.38.0.20251101-r0
Chainguard docker-selenium-standalone-docker 0 4.38.0.20251101-r0
Chainguard docker-selenium-standalone-firefox 0 4.38.0.20251101-r0
Chainguard docker-selenium-supervisor-config 0 4.38.0.20251101-r0
Chainguard druid 0 0
Chainguard druid-compat 0 0
Chainguard grpc-java-fips-1.56.0 0 0
Chainguard grpc-java-fips-1.56.0-m2 0 0
Chainguard hadoop-fips-3.3.6 0 3.3.6-r0
Chainguard thingsboard 0 3.7-r2
Chainguard thingsboard-tb-js-executor 0 3.7-r2
Chainguard thingsboard-tb-mqtt-transport 0 3.7-r2
Chainguard thingsboard-tb-node 0 3.7-r2
Chainguard thingsboard-tb-web-ui 0 3.7-r2
Chainguard trino 0 469-r0
Chainguard trino-config 0 469-r0
Chainguard trino-oci-entrypoint 0 469-r0
Chainguard trino-plugin-accumulo 0 469-r0
Chainguard trino-plugin-ai-functions 0 469-r0
Chainguard trino-plugin-atop 0 469-r0
Chainguard trino-plugin-bigquery 0 469-r0
Chainguard trino-plugin-blackhole 0 469-r0
Chainguard trino-plugin-cassandra 0 469-r0
Chainguard trino-plugin-clickhouse 0 469-r0
Chainguard trino-plugin-delta-lake 0 469-r0
Chainguard trino-plugin-druid 0 469-r0
Chainguard trino-plugin-duckdb 0 469-r0
Chainguard trino-plugin-elasticsearch 0 469-r0
Chainguard trino-plugin-example-http 0 469-r0
Chainguard trino-plugin-exasol 0 469-r0
Chainguard trino-plugin-exchange-filesystem 0 469-r0
Chainguard trino-plugin-exchange-hdfs 0 469-r0
Chainguard trino-plugin-faker 0 469-r0
Chainguard trino-plugin-functions-python 0 469-r0
Chainguard trino-plugin-geospatial 0 469-r0
Chainguard trino-plugin-google-sheets 0 469-r0
Chainguard trino-plugin-hive 0 469-r0
Chainguard trino-plugin-http-event-listener 0 469-r0
Chainguard trino-plugin-http-server-event-listener 0 469-r0
Chainguard trino-plugin-hudi 0 469-r0
Chainguard trino-plugin-iceberg 0 469-r0
Chainguard trino-plugin-ignite 0 469-r0
Chainguard trino-plugin-jmx 0 469-r0
Chainguard trino-plugin-kafka 0 469-r0
Chainguard trino-plugin-kafka-event-listener 0 469-r0
Chainguard trino-plugin-kinesis 0 469-r0
Chainguard trino-plugin-kudu 0 469-r0
Chainguard trino-plugin-lakehouse 0 469-r0
Chainguard trino-plugin-ldap-group-provider 0 469-r0
Chainguard trino-plugin-local-file 0 469-r0
Chainguard trino-plugin-loki 0 469-r0
Chainguard trino-plugin-mariadb 0 469-r0
Chainguard trino-plugin-memory 0 469-r0
Chainguard trino-plugin-ml 0 469-r0
Chainguard trino-plugin-mongodb 0 469-r0
Chainguard trino-plugin-mysql 0 469-r0
Chainguard trino-plugin-mysql-event-listener 0 469-r0
Chainguard trino-plugin-opa 0 469-r0
Chainguard trino-plugin-openlineage 0 469-r0
Chainguard trino-plugin-opensearch 0 469-r0
Chainguard trino-plugin-oracle 0 469-r0
Chainguard trino-plugin-password-authenticators 0 469-r0
Chainguard trino-plugin-phoenix5 0 469-r0
Chainguard trino-plugin-pinot 0 469-r0
Chainguard trino-plugin-postgresql 0 469-r0
Chainguard trino-plugin-prometheus 0 469-r0
Chainguard trino-plugin-ranger 0 469-r0
Chainguard trino-plugin-raptor-legacy 0 469-r0
Chainguard trino-plugin-redis 0 469-r0
Chainguard trino-plugin-redshift 0 469-r0
Chainguard trino-plugin-resource-group-managers 0 469-r0
Chainguard trino-plugin-session-property-managers 0 469-r0
Chainguard trino-plugin-singlestore 0 469-r0
Chainguard trino-plugin-snowflake 0 469-r0
Chainguard trino-plugin-spooling-filesystem 0 469-r0
Chainguard trino-plugin-sqlserver 0 469-r0
Chainguard trino-plugin-teradata-functions 0 469-r0
Chainguard trino-plugin-thrift 0 469-r0
Chainguard trino-plugin-tpcds 0 469-r0
Chainguard trino-plugin-tpch 0 469-r0
Chainguard trino-plugin-vertica 0 469-r0
Chainguard wavefront-proxy 0 13.4-r4
Chainguard wavefront-proxy-compat 0 13.4-r4
Chainguard wavefront-proxy-config 0 13.4-r4
Chainguard wavefront-proxy-licenses 0 13.4-r4
Chainguard wavefront-proxy-oci-entrypoint 0 13.4-r4
Ubuntu:18.04:LTS okio 0 No fix
Ubuntu:20.04:LTS okio 0 No fix
Ubuntu:22.04:LTS okio 0 No fix
Ubuntu:24.04:LTS okio 0 No fix
Ubuntu:24.10 okio 0 No fix
Ubuntu:25.04 okio 0 No fix
Ubuntu:25.10 okio 0 No fix
Ubuntu:Pro:18.04:LTS okio 0 No fix
Ubuntu:Pro:20.04:LTS okio 0 No fix
Wolfi docker-selenium 0 4.38.0.20251101-r0
Wolfi docker-selenium-base 0 4.38.0.20251101-r0
Wolfi docker-selenium-compat 0 4.38.0.20251101-r0
Wolfi docker-selenium-distributor 0 4.38.0.20251101-r0
Wolfi docker-selenium-event-bus 0 4.38.0.20251101-r0
Wolfi docker-selenium-hub 0 4.38.0.20251101-r0
Wolfi docker-selenium-node-base 0 4.38.0.20251101-r0
Wolfi docker-selenium-node-chromium 0 4.38.0.20251101-r0
Wolfi docker-selenium-node-docker 0 4.38.0.20251101-r0
Wolfi docker-selenium-node-firefox 0 4.38.0.20251101-r0
Wolfi docker-selenium-router 0 4.38.0.20251101-r0
Wolfi docker-selenium-session-queue 0 4.38.0.20251101-r0
Wolfi docker-selenium-sessions 0 4.38.0.20251101-r0
Wolfi docker-selenium-standalone 0 4.38.0.20251101-r0
Wolfi docker-selenium-standalone-chromium 0 4.38.0.20251101-r0
Wolfi docker-selenium-standalone-docker 0 4.38.0.20251101-r0
Wolfi docker-selenium-standalone-firefox 0 4.38.0.20251101-r0
Wolfi docker-selenium-supervisor-config 0 4.38.0.20251101-r0
Wolfi druid 0 0
Wolfi druid-compat 0 0
Wolfi thingsboard 0 3.7-r2
Wolfi thingsboard-tb-js-executor 0 3.7-r2
Wolfi thingsboard-tb-mqtt-transport 0 3.7-r2
Wolfi thingsboard-tb-node 0 3.7-r2
Wolfi thingsboard-tb-web-ui 0 3.7-r2
Wolfi trino 0 469-r0
Wolfi trino-config 0 469-r0
Wolfi trino-oci-entrypoint 0 469-r0
Wolfi trino-plugin-accumulo 0 469-r0
Wolfi trino-plugin-ai-functions 0 469-r0
Wolfi trino-plugin-atop 0 469-r0
Wolfi trino-plugin-bigquery 0 469-r0
Wolfi trino-plugin-blackhole 0 469-r0
Wolfi trino-plugin-cassandra 0 469-r0
Wolfi trino-plugin-clickhouse 0 469-r0
Wolfi trino-plugin-delta-lake 0 469-r0
Wolfi trino-plugin-druid 0 469-r0
Wolfi trino-plugin-duckdb 0 469-r0
Wolfi trino-plugin-elasticsearch 0 469-r0
Wolfi trino-plugin-example-http 0 469-r0
Wolfi trino-plugin-exasol 0 469-r0
Wolfi trino-plugin-exchange-filesystem 0 469-r0
Wolfi trino-plugin-exchange-hdfs 0 469-r0
Wolfi trino-plugin-faker 0 469-r0
Wolfi trino-plugin-functions-python 0 469-r0
Wolfi trino-plugin-geospatial 0 469-r0
Wolfi trino-plugin-google-sheets 0 469-r0
Wolfi trino-plugin-hive 0 469-r0
Wolfi trino-plugin-http-event-listener 0 469-r0
Wolfi trino-plugin-http-server-event-listener 0 469-r0
Wolfi trino-plugin-hudi 0 469-r0
Wolfi trino-plugin-iceberg 0 469-r0
Wolfi trino-plugin-ignite 0 469-r0
Wolfi trino-plugin-jmx 0 469-r0
Wolfi trino-plugin-kafka 0 469-r0
Wolfi trino-plugin-kafka-event-listener 0 469-r0
Wolfi trino-plugin-kinesis 0 469-r0
Wolfi trino-plugin-kudu 0 469-r0
Wolfi trino-plugin-lakehouse 0 469-r0
Wolfi trino-plugin-ldap-group-provider 0 469-r0
Wolfi trino-plugin-local-file 0 469-r0
Wolfi trino-plugin-loki 0 469-r0
Wolfi trino-plugin-mariadb 0 469-r0
Wolfi trino-plugin-memory 0 469-r0
Wolfi trino-plugin-ml 0 469-r0
Wolfi trino-plugin-mongodb 0 469-r0
Wolfi trino-plugin-mysql 0 469-r0
Wolfi trino-plugin-mysql-event-listener 0 469-r0
Wolfi trino-plugin-opa 0 469-r0
Wolfi trino-plugin-openlineage 0 469-r0
Wolfi trino-plugin-opensearch 0 469-r0
Wolfi trino-plugin-oracle 0 469-r0
Wolfi trino-plugin-password-authenticators 0 469-r0
Wolfi trino-plugin-phoenix5 0 469-r0
Wolfi trino-plugin-pinot 0 469-r0
Wolfi trino-plugin-postgresql 0 469-r0
Wolfi trino-plugin-prometheus 0 469-r0
Wolfi trino-plugin-ranger 0 469-r0
Wolfi trino-plugin-raptor-legacy 0 469-r0
Wolfi trino-plugin-redis 0 469-r0
Wolfi trino-plugin-redshift 0 469-r0
Wolfi trino-plugin-resource-group-managers 0 469-r0
Wolfi trino-plugin-session-property-managers 0 469-r0
Wolfi trino-plugin-singlestore 0 469-r0
Wolfi trino-plugin-snowflake 0 469-r0
Wolfi trino-plugin-spooling-filesystem 0 469-r0

Related vulnerabilities