CVE-2024-24563
Açıklama
Vyper, Ethereum Virtual Machine için Python benzeri bir Akıllı Sözleşme Dilidir. Diziler yalnızca işaretsiz tam sayılar (unsigned integers) için tanımlanmış olmasına rağmen, işaretli bir tam sayı (signed integer) ile anahtarlanabilmektedir. Tip denetleyicisi, bir dizinin indeksi olarak `int` kullanımı tespit edildiğinde hata vermemektedir. Tip denetleyicisi, dizi indeksleri olarak işaretli tam sayıların kullanılmasına izin vermektedir. Bu güvenlik açığı, `0.3.10` dahil tüm sürümlerde farklı biçimlerde mevcuttur. Tam sayılar için 2'ye tümleyen (2's complement) gösterimi kullanılır. Dizi çok büyük tanımlandığı için sınır kontrolü başarılı olacaktır; negatif değerler basitçe çok büyük sayılar olarak temsil edilecektir. Yayınlandığı tarih itibarıyla düzeltilmiş bir sürüm mevcut değildir. Üç potansiyel güvenlik açığı sınıfı bulunmaktadır: öngörülemeyen davranış, erişilemez öğelere erişim ve hizmet reddi. Sınıf 1: Bir diziyi geri alma (revert) işlemi olmadan negatif bir tam sayı ile indekslemek mümkünse, bu durum muhtemelen geliştirici tarafından öngörülmemiştir ve bu tür erişimler sözleşme için öngörülemeyen davranışlara neden olabilir. Sınıf 2: Eğer bir sözleşmede `assert index < x` şeklinde bir değişmez (invariant) varsa, geliştirici `y | y >= x` indekslerindeki hiçbir öğenin erişilebilir olmadığını varsayacaktır. Ancak, negatif indeksler kullanılarak bu durum atlatılabilir. Sınıf 3: İndeks sözleşmenin durumuna bağlıysa, bu durum hizmet reddi riski oluşturur. Sözleşmenin durumu, indeksin negatif olmaya zorlanacağı şekilde manipüle edilebilirse, dizi erişimi her zaman geri dönebilir (çünkü büyük olasılıkla dizi aşırı büyük tanımlanmamıştır). Bununla birlikte, tüm bu senaryolar oldukça düşük ihtimaldir. En muhtemel davranış, sınır kontrolünde geri dönme (revert) işlemidir.
Nasıl düzeltilir
- vyper0.4.0, 0.4.0b1 ya da sonraki bir sürüm
Etkilenen ürünler
| Ürün | Etkilenen sürümler | Düzeltildiği sürüm |
|---|---|---|
| vyperlang vyper | v ≤ 0.3.10 | — |
| vyperPyPI | v < 0.4.0, v < 0.4.0b1 | 0.4.0, 0.4.0b1 |
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.