CVE-2023-34459
Təsvir
OpenZeppelin Contracts ağıllı kontraktların hazırlanması üçün kitabxanadır. Versiya 4.7.0-dan başlayaraq və versiya 4.9.2-dək olan versiyalarda, `verifyMultiProof`, `verifyMultiProofCalldata`, `procesprocessMultiProof` və ya `processMultiProofCalldat` funksiyaları istifadə edildikdə, ixtiyari yarpaqlar çoxluğu üçün etibarlı multiproof saxtalaşdırılmasına imkan verən merkle ağacları qurmaq mümkündür. Əgər kontrakt yoxlama üçün multiproof-lardan istifadə edirsə və emal olunan merkle ağacı dərinlik 1-də (birbaşa kökdən aşağıda) dəyəri 0 olan düyün ehtiva edirsə, həmin kontrakt zəifliyə malik ola bilər. Yarpaqlar heşlənmədiyi təqdirdə, bu, 3 və ya daha az yarpağı olan balanslaşdırılmış ağaclarda qeyri-ixtiyari şəkildə baş verə bilər. Bədniyyətli ağac qurucusu belə bir düyünü ağaca daxil etdikdə isə bu, qəsdən baş verə bilər. Kontrakt tək yarpaqlı sübutlandırmadan (`verify`, `verifyCalldata`, `processProof` və ya `processProofCalldata`) istifadə edirsə və ya heşlənmiş yarpaqları olan məlum bir ağacla multiproof-lardan istifadə edirsə, o, zəifliyə malik deyil. @openzeppelin/merkle-tree kitabxanası ilə istehsal edilən və ya təsdiqlənən standart merkle ağacları təhlükəsizdir. Problem versiya 4.9.2-də aradan qaldırılıb. Bəzi müvəqqəti həll yolları mövcuddur. Multiproof-lardan istifadə edənlər üçün: Merkle ağaclarını qurarkən yarpaqları heşləyin və ağaclarınıza boş düyünlər əlavə etməyin. @openzeppelin/merkle-tree paketinin istifadəsi bu problemi aradan qaldırır. Ağacın ən azı birinci səviyyəsini yenidən qurmadan istifadəçi tərəfindən təqdim edilən merkle köklərini qəbul etməyin. Merkle ağacının strukturunu yarpaqlardan yenidən quraraq yoxlayın.
Necə düzəltmək olar
- openzeppelin contracts4.9.2 və ya daha yeni versiya
- openzeppelin contracts_upgradeable4.9.2 və ya daha yeni versiya
- @openzeppelin/contracts4.9.2 və ya daha yeni versiya
- @openzeppelin/contracts-upgradeable4.9.2 və ya daha yeni versiya
Təsirlənən məhsullar
| Məhsul | Təsirlənən versiyalar | Düzəldildiyi versiya |
|---|---|---|
| openzeppelin contracts | 4.7.0 ≤ v < 4.9.2 | 4.9.2 |
| openzeppelin contracts_upgradeable | 4.7.0 ≤ v < 4.9.2 | 4.9.2 |
| @openzeppelin/contractsnpm | 4.7.0 ≤ v < 4.9.2 | 4.9.2 |
| @openzeppelin/contracts-upgradeablenpm | 4.7.0 ≤ v < 4.9.2 | 4.9.2 |
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.