CVE-2025-54070
Təsvir
OpenZeppelin Contracts təhlükəsiz smart kontraktların hazırlanması üçün kitabxanadır. Versiya 5.2.0-dən başlayaraq və versiya 5.4.0-a qədər olan hissədə, `Bytes.sol` kitabxanasının `lastIndexOf(bytes,byte,uint256)` funksiyası aşağıdakı iki şərt ödənildikdə başladılmamış yaddaşa müraciət edə bilər: 1) təqdim edilən bufer uzunluğu boş olduqda (yəni `buffer.length == 0`) və mövqe `2**256 - 1` olmadıqda (yəni `pos != type(uint256).max`). `pos` arqumentindən bufer sərhədləri xaricindəki ixtiyari məlumatlara müraciət etmək üçün istifadə oluna bilər. Bu, əməliyyatın qazın (gas) bitməsinə və ya yanlış indeksin (boş buferin xaricində) qaytarılmasına səbəb ola bilər. Normal şəraitdə `buffer`-ə müraciət üçün bu yanlış nəticənin emalı revert-ə səbəb olar. Tətikləndikdə, funksiya `buffer + 0x20 + pos` ofsetindəki yaddaşı oxuyur. Əgər həmin yerdəki (`buffer`-in xaricindəki) yaddaş axtarış nümunəsi ilə üst-üstə düşərsə, funksiya gözlənilən `type(uint256).max` əvəzinə sərhədlərdən kənar bir indeks qaytaracaqdır. Bu, çağırıcıların bufer sərhədlərinin xaricini göstərən düzgün görünüşlü indeks alması ilə nəticələnən gözlənilməz davranış yaradır. Sərhədləri yoxlamayan və qaytarılan indeksdən istifadə edən sonrakı yaddaş müraciətləri, öz quruluşlarından asılı olaraq potensial təsiri diqqətlə nəzərdən keçirməlidirlər. Boş buferlər üçün bu funksiyanın `type(uint256).max` qaytarmasına güvənən və ya qaytarılan indeksi sərhəd yoxlaması olmadan istifadə edən kodlar təyin olunmamış davranış nümayiş etdirə bilər. İstifadəçilər yamayı almaq üçün versiya 5.4.0-a yüksəltmə etməlidirlər.
Necə düzəltmək olar
- @openzeppelin/contracts5.4.0 və ya daha yeni versiya
- @openzeppelin/contracts-upgradeable5.4.0 və ya daha yeni versiya
Təsirlənən məhsullar
| Məhsul | Təsirlənən versiyalar | Düzəldildiyi versiya |
|---|---|---|
| @openzeppelin/contractsnpm | 5.2.0 ≤ v < 5.4.0 | 5.4.0 |
| @openzeppelin/contracts-upgradeablenpm | 5.2.0 ≤ v < 5.4.0 | 5.4.0 |
Versiyanızı yoxlayın
Məhsulu seçin və istifadə etdiyiniz versiyanı yazın; versiyanın təsirlənən aralıqda olub-olmadığını görün.
Attack Surface Management
Domenlərinizə bağlı aktivləri, onlarda işləyən texnologiyaları və məlum zəiflikləri bir siyahıda görün.