CVE-2026-45799

Wire: skipGroup() missing negative-length check allows 10-byte payload to crash any Wire-decoding service

Published Jul 17, 2026 CVSS 3.1 · 7.5 High EPSS < 1% KEV · Not listed
Description
Wire provides gRPC and protocol buffers for Android, Kotlin, Swift, and Java. Prior to 6.3.0 and 7.0.0-alpha03, ByteArrayProtoReader32.skipGroup() and ProtoReader.skipGroup() in wire-runtime do not validate that a LENGTH_DELIMITED field length is non-negative before skip(), allowing a crafted protobuf varint encoding -128 as a signed Int to make skip(-128) move the internal position negative and make the next readByte() throw ArrayIndexOutOfBoundsException instead of the documented IOException or ProtocolException, which can crash services using ProtoAdapter.decode(byte[]) on untrusted payloads. This issue is fixed in versions 6.3.0 and 7.0.0-alpha03.

Remediation

No solution or workaround provided in the CVE record

Tracking

Sign in to view the affected projects.

Advisories

Source ID Title
Github GHSA Github GHSA GHSA-7xpr-hc2w-34m9 Wire: skipGroup() missing negative-length check allows 10-byte payload to crash any Wire-decoding service
History
Type Values Removed Values Added
First Time appeared Squareup
Squareup wire
CPEs cpe:2.3:a:squareup:wire:*:*:*:*:*:*:*:*
cpe:2.3:a:squareup:wire:7.0.0:alpha01:*:*:*:*:*:*
cpe:2.3:a:squareup:wire:7.0.0:alpha02:*:*:*:*:*:*
Vendors & Products Squareup
Squareup wire
Type Values Removed Values Added
First Time appeared Square
Square wire
Vendors & Products Square
Square wire
Type Values Removed Values Added
Metrics ssvc

{'options': {'Automatable': 'yes', 'Exploitation': 'poc', 'Technical Impact': 'partial'}, 'version': '2.0.3'}

Type Values Removed Values Added
Description Wire provides gRPC and protocol buffers for Android, Kotlin, Swift, and Java. Prior to 6.3.0 and 7.0.0-alpha03, ByteArrayProtoReader32.skipGroup() and ProtoReader.skipGroup() in wire-runtime do not validate that a LENGTH_DELIMITED field length is non-negative before skip(), allowing a crafted protobuf varint encoding -128 as a signed Int to make skip(-128) move the internal position negative and make the next readByte() throw ArrayIndexOutOfBoundsException instead of the documented IOException or ProtocolException, which can crash services using ProtoAdapter.decode(byte[]) on untrusted payloads. This issue is fixed in versions 6.3.0 and 7.0.0-alpha03.
Title Wire: skipGroup() missing negative-length check allows 10-byte payload to crash any Wire-decoding service
Weaknesses CWE-129
References
Metrics cvssV3_1

{'score': 7.5, 'vector': 'CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H'}

Weaknesses

Sources

Status
PUBLISHED
Assigner
GitHub_M
Published
Updated
Jul 20, 2026, 1:51 PM
Reserved
May 13, 2026, 8:19 AM
Status
Analyzed
Published
Jul 17, 2026, 8:17 PM
Modified
Oct 24, 2026, 8:10 PM