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.
Published: 2026-07-17
Score: 7.5 High
EPSS: < 1% Very Low
KEV: No
Impact: n/a
Action: n/a
AI Analysis

Impact

The vulnerability is in the skipGroup() methods of Wire’s proto runtime. The code does not check that a LENGTH_DELIMITED field length is non‑negative before calling skip(), so a crafted protobuf message that encodes the varint −128 as a signed int can make the internal read pointer move to a negative offset. When the next byte is read the runtime throws an ArrayIndexOutOfBoundsException instead of the expected IOException or ProtocolException, causing the process that is decoding the message to crash. This produces a denial‑of‑service condition for any service that uses ProtoAdapter.decode(byte[]) on untrusted input. This issue is fixed in versions 6.3.0 and 7.0.0‑alpha03.

Affected Systems

The defect exists in square:wire before versions 6.3.0 and 7.0.0‑alpha03. All language bindings that rely on the wire‑runtime, including Android, Kotlin, Swift and Java, are affected until the library is upgraded to 6.3.0 or 7.0.0‑alpha03.

Risk and Exploitability

The CVSS score is 7.5, indicating a high severity. The EPSS score is below 1%, implying a low probability that the vulnerability is actively exploited today. The vulnerability is not listed in the CISA KEV catalog. The likely attack scenario involves an attacker delivering a malicious protobuf payload to a service that decodes messages with Wire; if the service runs on a trusted environment it can crash the process, but the vulnerability does not provide code execution. The absence of a negative‑length check is the single weakness that enables the crash.

Generated by OpenCVE AI on July 30, 2026 at 23:36 UTC.

Remediation

No vendor fix or workaround currently provided.

OpenCVE Recommended Actions

  • Upgrade the Wire library to v6.3.0 or v7.0.0‑alpha03, where the length check has been added, addressing the signed integer overflow weakness (CWE‑129).
  • Rebuild and redeploy your application with the patched library, ensuring that the corrected skipGroup() method mitigates the integer sign error (CWE‑129).
  • Validate any incoming protobuf messages to ensure they conform to expected schemas and reject messages that trigger the skipGroup logic, thereby preventing the negative‑length exploitation flagged as CWE‑129.

Generated by OpenCVE AI on July 30, 2026 at 23:36 UTC.

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

Thu, 23 Jul 2026 21:45:00 +0000

Type Values Removed Values Added
First Time appeared Square
Square wire
Vendors & Products Square
Square wire

Mon, 20 Jul 2026 14:30:00 +0000

Type Values Removed Values Added
Metrics ssvc

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


Fri, 17 Jul 2026 20:15:00 +0000

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'}


cve-icon MITRE

Status: PUBLISHED

Assigner: GitHub_M

Published:

Updated: 2026-07-20T13:51:25.748Z

Reserved: 2026-05-13T08:19:32.603Z

Link: CVE-2026-45799

cve-icon Vulnrichment

Updated: 2026-07-20T13:51:07.268Z

cve-icon NVD

No data.

cve-icon Redhat

No data.

cve-icon OpenCVE Enrichment

Updated: 2026-07-30T23:45:05Z

Weaknesses
  • CWE-129

    Improper Validation of Array Index