Wysoka

Vyper vulnerable to OOB DynArray access when array is on both LHS and RHS of an assignment

  • Ujawniono: 11.05.2023
  • Aktualizacja: 11.10.2026 15:17

Impact

during codegen, the length word of a dynarray is written before the data, which can result in OOB array access in the case where the dynarray is on both the lhs and rhs of an assignment. here is a minimal example producing the issue:

vyper
a:DynArray[uint256,3]
@external
def test() -> DynArray[uint256,3]:
    self.a = [1,2,3]
    self.a = empty(DynArray[uint256,3])
    self.a = [self.a[0],self.a[1],self.a[2]]
    return self.a # return [1,2,3]

and here is an example demonstrating the issue can cause data corruption across call frames:

vyper
@external
def test() -> DynArray[uint256,3]:
    self.a()
    return self.b() # return [1,2,3]

@internal
def a():
    a: uint256 = 0    
    b: uint256 = 1    
    c: uint256 = 2    
    d: uint256 = 3

@internal
def b() -> DynArray[uint256,3]:
    a: DynArray[uint256,3] = empty(DynArray[uint256,3])
    a = [a[0],a[1],a[2]]
    return a

examples involving append and pop:

vyper
@internal
def foo():
    c: DynArray[uint256, 1] = []
    c.append(c[0])
vyper
@internal
def foo():
    c: DynArray[uint256, 1] = [1]
    c[0] = c.pop()

the expected behavior in all of the above cases is to revert due to oob array access.

Patches

patched in 4f8289a81206f767df1900ac48f485d90fc87edb

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.

PlatformaPaczkaPodatne wersjePoprawka w wersji
Python (PyPI) vyper < 0.3.8 0.3.8

Odnośniki

Ocena CVSS 7.5/10
Wektor CVSS
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:H/A:N
Słabość (CWE)
CWE-787
Platforma
Python (PyPI)
Paczka
vyper
Ujawniono
11.05.2023
Aktualizacja
11.10.2026 15:17

Źródła i licencje

OSV / GitHub Advisory Database - PYSEC-2023-77 - PyPA Advisory Database; CC BY 4.0

OSV / GitHub Advisory Database - GHSA-3p37-3636-q8wv - 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ć.

Wszystkie (47) w archiwum
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

  1. 2020: 1
  2. 2021: 5
  3. 2022: 4
  4. 2023: 14
  5. 2024: 14
  6. 2025: 6
  7. 2026: 3
Istotność:
  1. Krytyczna · 9.8 CVE-2024-24563 < 0.4.0 0.4.0
  2. Krytyczna · 9.8 CVE-2024-24561 < 0.4.0 0.4.0
  3. Wysoka · 7.3 CVE-2024-22419 >= 0.3.0, < 0.4.0 0.4.0
  4. Wysoka · 7.5 CVE-2023-46247 < 0.3.8 0.3.8
  5. Wysoka · 8.1 CVE-2023-42443 >= 0.3.4, < 0.3.10 0.3.10
  6. Krytyczna · 8.7 CVE-2023-39363 >= 0.2.15, < 0.3.1 0.3.1
  7. Wysoka · 7.5 CVE-2023-32058 < 0.3.8 0.3.8
  8. Vyper vulnerable to OOB DynArray access when array is on both LHS and RHS of an assignment ten wpis
    Wysoka · 7.5 CVE-2023-31146 < 0.3.8 0.3.8
  9. Wysoka · 7.5 CVE-2023-30837 < 0.3.8 0.3.8
  10. Wysoka · 7.5 CVE-2023-30629 >= 0.3.1, < 0.3.8 0.3.8
  11. Wysoka · 7.5 CVE-2022-29255 < 0.3.4 0.3.4
  12. Wysoka · 7.1 CVE-2022-24788 < 0.3.2 0.3.2
  13. Wysoka · 7.5 CVE-2022-24787 < 0.3.2 0.3.2
  14. Wysoka ghsa-7f92-rr6w-cq64 >= 0.2.13, < 0.2.15 0.2.15

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.

Podłącz swoją aplikację
Newsletter DockRay

Bezpieczeństwo aplikacji w Twojej skrzynce

Najważniejsze podatności, konkretne zalecenia i praktyczne wskazówki dla Twoich aplikacji. Wybierz technologie i śledź to, co ma znaczenie dla Twojego projektu.

  • Codzienne zestawienie nowych podatności, także krytycznych.
  • Powiadomienia o ważnych aktualizacjach.
  • Praktyczne porady o bezpieczeństwie i monitoringu aplikacji.

Pozostaw puste, aby otrzymywać informacje o wszystkich technologiach.

Zapis jest bezpłatny. Wypiszesz się jednym kliknięciem w wiadomości.