CVE-2023-34459
Açıklama
OpenZeppelin Contracts, akıllı sözleşme geliştirme için bir kütüphanedir. 4.7.0 sürümünden itibaren ve 4.9.2 sürümünden önce, `verifyMultiProof`, `verifyMultiProofCalldata`, `procesprocessMultiProof` veya `processMultiProofCalldat` fonksiyonları kullanıldığında, rastgele bir yaprak kümesi için geçerli bir çoklu kanıtın (multiproof) sahte olarak oluşturulmasına izin veren merkle ağaçları oluşturmak mümkündür. Bir sözleşme, doğrulama için çoklu kanıtlar kullanıyorsa ve işlenen merkle ağacı derinlik 1'de (kökün hemen altında) değeri 0 olan bir düğüm içeriyorsa savunmasız olabilir. Bu, yapraklar hashlenmemişse 3 veya daha az yapraklı dengeli ağaçlar için istemeden meydana gelebilir. Bu, kötü niyetli bir ağaç oluşturucu ağaca böyle bir düğüm eklerse kasıtlı olarak meydana gelebilir. Bir sözleşme, tek yapraklı kanıtlama (`verify`, `verifyCalldata`, `processProof` veya `processProofCalldata`) kullanıyorsa veya yaprakları hashlenmiş bilinen bir ağaçla çoklu kanıtlar kullanıyorsa savunmasız değildir. @openzeppelin/merkle-tree kütüphanesi ile üretilen veya doğrulanan standart merkle ağaçları güvenlidir. Sorun 4.9.2 sürümünde yamalanmıştır. Bazı geçici çözümler mevcuttur. Çoklu kanıt kullananlar için: Merkle ağaçları oluştururken yaprakları hashleyin ve ağaçlarınıza boş düğümler eklemeyin. @openzeppelin/merkle-tree paketini kullanmak bu sorunu ortadan kaldırır. Ağacın en azından ilk seviyesini yeniden oluşturmadan kullanıcı tarafından sağlanan merkle köklerini kabul etmeyin. Merkle ağacı yapısını yapraklardan yeniden oluşturarak doğrulayın.
Nasıl düzeltilir
- openzeppelin contracts4.9.2 ya da sonraki bir sürüm
- openzeppelin contracts_upgradeable4.9.2 ya da sonraki bir sürüm
- @openzeppelin/contracts4.9.2 ya da sonraki bir sürüm
- @openzeppelin/contracts-upgradeable4.9.2 ya da sonraki bir sürüm
Etkilenen ürünler
| Ürün | Etkilenen sürümler | Düzeltildiği sürüm |
|---|---|---|
| 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 |
Sürümünüzü kontrol edin
Ürünü seçin ve kullandığınız sürümü yazın; sürümün etkilenen aralıkta olup olmadığını görün.
Attack Surface Management
Alan adlarınıza bağlı varlıkları, bu varlıklarda çalışan teknolojileri ve bilinen zafiyetleri tek listede görün.