HIGH🇬🇧 English

CVE-2026-45799

Wire (gRPC/protobuf): brak walidacji długości pola powoduje crash usługi

CVSS 7.5v3.1pub. 2026-07-17upd. 2026-08-12

Biblioteka Wire do obsługi gRPC i protocol buffers nie weryfikuje, czy długość pola typu LENGTH_DELIMITED jest nieujemna przed wywołaniem skip(). Atakujący może przesłać spreparowany payload protobuf, powodując crash usługi (DoS).

Pokaż oryginał (EN)

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.

🤖 Analiza AI
Jak działa

Funkcje ByteArrayProtoReader32.skipGroup() oraz ProtoReader.skipGroup() w module wire-runtime akceptują zakodowaną przez varint wartość -128 jako poprawną długość pola LENGTH_DELIMITED. Wywołanie skip(-128) powoduje przesunięcie wewnętrznego wskaźnika pozycji na wartość ujemną. Kolejne wywołanie readByte() rzuca wyjątek ArrayIndexOutOfBoundsException zamiast oczekiwanego IOException lub ProtocolException. Skutkuje to niekontrolowanym zakończeniem działania usług korzystających z ProtoAdapter.decode(byte[]) przy przetwarzaniu niezaufanych danych wejściowych.

Skutki

Atakujący bez uwierzytelnienia może doprowadzić do odmowy usługi (DoS) poprzez crash aplikacji lub usługi przetwarzającej niezaufane wiadomości protobuf. Nie stwierdzono wpływu na poufność ani integralność danych.

Mitygacja

Należy zaktualizować bibliotekę Wire do wersji 6.3.0 lub 7.0.0-alpha03, w których wprowadzono walidację nieujemności długości pola przed wywołaniem skip(). Patche dostępne są w referencjach producenta na GitHub.

Kogo dotyczy

Biblioteka Wire (square/wire) w wersjach prior to 6.3.0 oraz prior to 7.0.0-alpha03 — dotyczy komponentu wire-runtime na platformach Android, Kotlin, Swift i Java.

Uwagi

Podatność dotyczy wyłącznie ścieżki przetwarzania niezaufanych payloadów protobuf przez ProtoAdapter.decode(byte[]). Usługi nieprzetwarzające danych od niezaufanych klientów mają obniżone ryzyko. Poprawka wprowadzona w PR #3595 i #3597 w repozytorium square/wire.

CVSS Vector
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H
  • Squareup Wire

    APP
    Squareup
    7.0.0< 6.3.0
🔵
ZWERYFIKUJ U PRODUCENTA
Brak jednoznacznych danych o patchu. Sprawdź referencje od producenta.
CWE
Referencje

Powiązane podatności

CVE-2018-1000844CRITICAL9.1PL ✓ten sam vendor

XXE w Squareup Retrofit umożliwiające odczyt plików i SSRF

CVE-2015-8969CRITICAL9.8PL ✓ten sam vendor

Command injection w Squareup git-fastclone — wykonanie dowolnych poleceń

CVE-2018-1000850HIGH7.5ten sam vendor

Square Retrofit version versions from (including) 2.0 and 2.5.0 (excluding) contains a Directory Traversal vul...

CVE-2015-8968HIGH8.8ten sam vendor

git-fastclone before 1.0.1 permits arbitrary shell command execution from .gitmodules. If an attacker can inst...

CVE-2023-0833MEDIUM4.7ten sam vendor

A flaw was found in Red Hat's AMQ-Streams, which ships a version of the OKHttp component with an information d...