Vyper's `_abi_decode` input not validated in complex expressions
Impact
_abi_decode() does not validate input when it is nested in an expression. the following example gets correctly validated (bounds checked):
x: int128 = _abi_decode(slice(msg.data, 4, 32), int128)
however, the following example is not bounds checked
@external
def abi_decode(x: uint256) -> uint256:
a: uint256 = convert(_abi_decode(slice(msg.data, 4, 32), (uint8)), uint256) + 1
return a # abi_decode(256) returns: 257
the issue can be triggered by constructing an example where the output of _abi_decode is not internally passed to make_setter (an internal codegen routine) or other input validating routine.
Patches
https://github.com/vyperlang/vyper/pull/3626
Workarounds
Is there a way for users to fix or remediate the vulnerability without upgrading?
References
Are there any links users can visit to find out more?
Czego dotyczy
Kliknij technologię, aby zobaczyć wszystkie dotyczące jej podatności.
| Platforma | Paczka | Podatne wersje | Poprawka w wersji |
|---|---|---|---|
| Python (PyPI) | vyper | >= 0.3.4, < 0.3.10 | 0.3.10 |
Odnośniki
- Wektor CVSS
CVSS:3.1/AV:N/AC:H/PR:L/UI:N/S:U/C:N/I:H/A:N- Słabość (CWE)
CWE-682- Platforma
- Python (PyPI)
- Paczka
vyper- Ujawniono
- 26.09.2023
- Aktualizacja
- 11.10.2026 11:20
Źródła i licencje
OSV / GitHub Advisory Database - PYSEC-2023-191 - PyPA Advisory Database; CC BY 4.0
OSV / GitHub Advisory Database - GHSA-cx2q-hfxr-rj97 - CC BY 4.0
Historia podatności: vyper
Wszystkie opisane podatności tej paczki (Python (PyPI)), od najnowszej. Widać, czy to jednorazowa wpadka, czy paczka, której trzeba pilnować.
- Wszystkich wpisów
- 47
- Pierwsza → ostatnia
- 03.2020 10.2026
- Bez poprawki
- 5
- Wykorzystywana w atakach
- 0
Rozkład istotności
- Krytyczna 3
- Wysoka 14
- Średnia 20
- Niska 10
Ujawnienia w latach
- 2020: 1
- 2021: 5
- 2022: 4
- 2023: 14
- 2024: 14
- 2025: 6
- 2026: 3
-
Vyper's `_abi_decode` input not validated in complex expressions ten wpis
Dowiedz się, które podatności dotyczą Twojej aplikacji
Po podłączeniu integracji DockRay i włączeniu raportowania oprogramowania DockRay porównuje zgłoszone wersje komponentów ze znanymi podatnościami i powiadamia o potwierdzonych dopasowaniach. Zakres zależy od obsługiwanej technologii i dostępnych biuletynów.